PHP微信红包API接口的代码分析
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章主要讲解了"PHP微信红包API接口的代码分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PHP微信红包API接口的代码分析"吧!首先给大家
千家信息网最后更新 2025年11月12日PHP微信红包API接口的代码分析
这篇文章主要讲解了"PHP微信红包API接口的代码分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PHP微信红包API接口的代码分析"吧!
首先给大家看一看这个表格:
根据微信高级红包接口,开发PHP版本的API接口,现在进行主要代码分析。
红包接口调用请求代码,所有请求参数为必填参数与文档对应:
class Wxapi { private $app_id = 'wxXXXXXXXXXXXX'; //公众账号appid,首先申请与之配套的公众账号 private $app_secret = 'XXXXXXXXXXXXXXXXXXXXXXXX';//公众号secret,用户获取用户授权token private $app_mchid = 'XXXXXXXX';//商户号id function __construct(){ //do sth here.... } /** * 微信支付 * @param string $openid 用户openid */ public function pay($re_openid) { include_once('WxHongBaoHelper.php'); $commonUtil = new CommonUtil(); $wxHongBaoHelper = new WxHongBaoHelper(); $wxHongBaoHelper->setParameter("nonce_str", $this->great_rand());//随机字符串,丌长于 32 位 $wxHongBaoHelper->setParameter("mch_billno", $this->app_mchid.date('YmdHis').rand(1000, 9999));//订单号 $wxHongBaoHelper->setParameter("mch_id", $this->app_mchid);//商户号 $wxHongBaoHelper->setParameter("wxappid", $this->app_id); $wxHongBaoHelper->setParameter("nick_name", '红包');//提供方名称 $wxHongBaoHelper->setParameter("send_name", '红包');//红包发送者名称 $wxHongBaoHelper->setParameter("re_openid", $re_openid);//相对于医脉互通的openid $wxHongBaoHelper->setParameter("total_amount", 100);//付款金额,单位分 $wxHongBaoHelper->setParameter("min_value", 100);//最小红包金额,单位分 $wxHongBaoHelper->setParameter("max_value", 100);//最大红包金额,单位分 $wxHongBaoHelper->setParameter("total_num", 1);//红包収放总人数 $wxHongBaoHelper->setParameter("wishing", '感谢您参与红包派发活动,祝您新年快乐!');//红包祝福诧 $wxHongBaoHelper->setParameter("client_ip", '127.0.0.1');//调用接口的机器 Ip 地址 $wxHongBaoHelper->setParameter("act_name", '红包活动');//活劢名称 $wxHongBaoHelper->setParameter("remark", '快来抢!');//备注信息 $postXml = $wxHongBaoHelper->create_hongbao_xml(); $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack'; $responseXml = $wxHongBaoHelper->curl_post_ssl($url, $postXml); //用作结果调试输出 //echo htmlentities($responseXml,ENT_COMPAT,'UTF-8'); $responseObj = simplexml_load_string($responseXml, 'SimpleXMLElement', LIBXML_NOCDATA); return $responseObj->return_code; }获取随机字符串方法:
/** * 生成随机数 */ public function great_rand(){ $str = '1234567890abcdefghijklmnopqrstuvwxyz'; for($i=0;$i<30;$i++){ $j=rand(0,35); $t1 .= $str[$j]; } return $t1; }签名算法:
/**例如:appid: wxd111665abv58f4fmch_id: 10000100device_info: 1000Body: testnonce_str: ibuaiVcKdpRxkhJA第一步:对参数按照 key=value 的格式,并按照参数名 ASCII 字典序排序如下:stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";第二步:拼接支付密钥:stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d"sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7"*/protected function get_sign(){ define('PARTNERKEY',"QSRXXXXXXXXXXXXXXXXXXXXX"); try { if (null == PARTNERKEY || "" == PARTNERKEY ) { throw new SDKRuntimeException("密钥不能为空!" . "
"); } if($this->check_sign_parameters() == false) { //检查生成签名参数 throw new SDKRuntimeException("生成签名参数缺失!" . "
"); } $commonUtil = new CommonUtil(); ksort($this->parameters); $unSignParaString = $commonUtil->formatQueryParaMap($this->parameters, false); $md5SignUtil = new MD5SignUtil(); return $md5SignUtil->sign($unSignParaString,$commonUtil->trimString(PARTNERKEY)); }catch (SDKRuntimeException $e) { die($e->errorMessage()); } }CURL请求以及发送证书:
function curl_post_ssl($url, $vars, $second=30,$aHeader=array()){ $ch = curl_init(); //超时时间 curl_setopt($ch,CURLOPT_TIMEOUT,$second); curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); //这里设置代理,如果有的话 curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); //cert 与 key 分别属于两个.pem文件 //请确保您的libcurl版本是否支持双向认证,版本高于7.20.1 curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).DIRECTORY_SEPARATOR.'zhengshu'.DIRECTORY_SEPARATOR.'apiclient_cert.pem'); curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).DIRECTORY_SEPARATOR.'zhengshu'.DIRECTORY_SEPARATOR.'apiclient_key.pem'); curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).DIRECTORY_SEPARATOR.'zhengshu'.DIRECTORY_SEPARATOR.'rootca.pem'); if( count($aHeader) >= 1 ){ curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader); } curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_POSTFIELDS,$vars); $data = curl_exec($ch); if($data){ curl_close($ch); return $data; } else { $error = curl_errno($ch); //echo "call faild, errorCode:$error\n"; curl_close($ch); return false; }}入口文件:
@require "pay.php";//获取用户信息$get = $_GET['param'];$code = $_GET['code'];//判断code是否存在if($get=='access_token' && !empty($code)){ $param['param'] = 'access_token'; $param['code'] = $code; $packet = new Packet(); //获取用户openid信息 $userinfo = $packet->_route('userinfo',$param); if(empty($userinfo['openid'])){ exit("NOAUTH"); } //调取支付方法 $packet->_route('wxpacket',array('openid'=>$userinfo['openid']));}else{ $packet->_route('userinfo');}感谢各位的阅读,以上就是"PHP微信红包API接口的代码分析"的内容了,经过本文的学习后,相信大家对PHP微信红包API接口的代码分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
红包
接口
代码
参数
分析
用户
信息
公众
单位
名称
版本
金额
学习
支付
生成
内容
商户
字符
字符串
密钥
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
人工智慧类神经网络技术
关于信息与网络安全报告
网闸 http 数据库
tcga数据库的使用教程
网络安全法 当场处罚
时序数据库可以更改吗
支付宝网络安全是谁
hp 服务器 官网
汕头旅游软件开发
渭南软件开发电话
保障网络安全的手段有哪些
服务器的云安全吗
Es数据库可以统计平台子系统
丁丁的服务器在哪
江苏先进网络技术要多少钱
网络安全的威胁和风险论文
pb 数据库条件查询语句
第五人格角色服务器在哪
分布式管理服务器设置
易联软件开发有限公司
泗阳购买网络技术大概费用
国内网络安全论坛排名
超市数据库管理系统代码
为什么游戏总是连接不到服务器
网络安全执法总队
软件开发类 企业税种
数据平台与数据库的关系
网络安全219
服务器崩溃了怎么解决
数据库工程师中级考试要求