设为首页| 加入收藏| 投稿建议    

微信红包接口API实现(php版)

发表于2016-03-05 18:24:33| 1235次阅读| 33 条评论| 作者AndyYang

摘要:目前微信红包总共分现金红包和裂变红包两种。 1、现金红包:https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_5 2、裂变红包:https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=16_5
一、微信红包文档说明
目前微信红包总共分现金红包和裂变红包两种。
1、现金红包:https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_5
2、裂变红包:https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=16_5
更多请查看:https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php

二、php接口实现
本文讲解现金红包的调用,其他的大体一样,就不去尝试了。
参数说明:

代码实现:
片段一、
/**
 * 微信支付
 * @param string $openid 用户openid
 */
public function pay($re_openid)
{
    include_once('WxPacketClass.php');
    $wxHongBaoHelper = new WxPacketClass($this->app_sign);
    $wxHongBaoHelper->setParameter("nonce_str", $this->great_rand());//随机字符串,丌长于 32 位
    $wxHongBaoHelper->setParameter("mch_billno", $this->app_mchid.date('YmdHis').rand(1000, 9999));//订单号(28位)
    $wxHongBaoHelper->setParameter("mch_id", $this->app_mchid);//商户号
    $wxHongBaoHelper->setParameter("wxappid", $this->app_id);
    $wxHongBaoHelper->setParameter("send_name", '扬和宏科技');//红包发送者名称
    $wxHongBaoHelper->setParameter("re_openid", $re_openid);//openid
    $wxHongBaoHelper->setParameter("total_amount", 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);
    $responseObj = simplexml_load_string($responseXml, 'SimpleXMLElement', LIBXML_NOCDATA);
    return $responseObj->return_code;
}
片段二、
//生成红包接口XML信息
/*
<xml>
	<sign>![CDATA[E1EE61A9]]</sign>
	<mch_billno>![CDATA[00100]]</mch_billno>
	<mch_id>![CDATA[888]]</mch_id>
	<wxappid>![CDATA[wxcbda96de0b165486]]</wxappid>
	<send_name>![CDATA[send_name]]</send_name>
	<re_openid>![CDATA[onqOjjXXXXXXXXX]]</re_openid>
	<total_amount>![CDATA[100]]</total_amount>
	<total_num>![CDATA[1]]</total_num>
	<wishing>![CDATA[恭喜发财]]</wishing>
	<client_ip>![CDATA[127.0.0.1]]</client_ip>
	<act_name>![CDATA[新年红包]]</act_name>
	<act_id>![CDATA[act_id]]</act_id>
	<remark>![CDATA[新年红包]]</remark>
</xml>
*/
function create_hongbao_xml($retcode = 0, $reterrmsg = "ok"){
	 try {
	    $this->setParameter('sign', $this->get_sign());
	    $commonUtil = new CommonUtil();
	    return  $commonUtil->arrayToXml($this->parameters);
	}catch (SDKException $e) {
		die($e->errorMessage());
	}		
}
片段三、
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文件
	curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).DIRECTORY_SEPARATOR.'cert'.DIRECTORY_SEPARATOR.'apiclient_cert.pem');
	curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).DIRECTORY_SEPARATOR.'cert'.DIRECTORY_SEPARATOR.'apiclient_key.pem');
	curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).DIRECTORY_SEPARATOR.'cert'.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);
		curl_close($ch);
		return false;
	}
}
代码结构:
|~action/
| `-PacketClass.php
|~lib/
| |~cert/
| | |-apiclient_cert.pem
| | |-apiclient_key.pem
| | `-rootca.pem
| |-SdkExtraClass.php
| |-WxApi.php
| `-WxPacketClass.php
`-index.php
每个文件都有详细的说明。

三、效果展示

  

有需要的可以联系我~
因留言的朋友过于频繁,所以将该源码发布在github,地址:https://github.com/yangsir/wechat_red_packet#wechat_red_packet,可以移步~

如果您觉得好,可以打赏作者:

已有33条评论

昵称:
邮箱:

  • 最新评论

小飞2017-03-09 15:00:54
求源码,我现在都是出于懵逼状态 553445906@qq.com 多谢!!
AndyYang2017-03-15 11:38:41(管理员回复)
上面有源码github的地址,亲~
h88h2017-03-03 16:08:48
大神呀,求源码学习!
AndyYang2017-03-03 19:39:36(管理员回复)
客气了,请注意查收~~~
QSG2017-03-02 09:00:27
求源码,研究研究。。
AndyYang2017-03-02 19:07:02(管理员回复)
好的
小猪2017-03-01 11:00:49
求一份源码,研究下 谢谢!邮箱:88092556@qq.com
AndyYang2017-03-02 19:06:38(管理员回复)
over
jiangqiaoyue2017-02-28 18:06:46
求源码 参考学下一下 jiangqiaoruyue@qq.com
AndyYang2017-03-02 19:06:25(管理员回复)
欧克
jiangqiaoyue2017-02-28 18:05:42
求源码 参考学习一下
122017-02-15 09:51:03
求一份源码,研究下 谢谢!邮箱:627873480@qq.com
AndyYang2017-02-17 21:59:00(管理员回复)
收到
opqw2017-02-08 17:32:16
求一份,工作需要,研究研究,谢谢 。邮箱609118056@qq.com
AndyYang2017-02-13 19:49:08(管理员回复)
已发送~
opqw2017-02-08 17:31:30
求一份,工作需要,研究研究,谢谢
苦逼2017-02-06 15:12:46
求一份研究下,万分感谢 邮箱:962053712@qq.com
AndyYang2017-02-13 19:49:29(管理员回复)
ok
微笑2017-02-06 14:54:11
求一份源码,研究下 谢谢!邮箱:962053712@qq.com
aa2017-02-06 11:16:11
求源码一份,非常感谢。邮箱:2425037495@qq.com
AndyYang2017-02-13 19:50:57(管理员回复)
请注意查收~
啦啦啦2017-01-10 15:44:53
求一份。正在研究。不知道从哪里下手。谢谢
回复啦啦啦:求一份。正在研究。不知道从哪里下手。谢谢 邮箱773919878@qq.com
AndyYang2017-01-11 21:53:10(管理员回复)
好的,因为去长滩岛旅行了,所以回复晚了~
啦啦啦2017-01-10 15:43:43
求一份。正在研究。不知道从哪里下手。谢谢
2017-01-03 14:33:03
求源码一份,非常感谢。邮箱:2135608395@qq.com
AndyYang2017-01-04 23:38:33(管理员回复)
好的~
pota2017-01-03 09:29:45
工作需要能给我发一份源码吗,谢谢。邮箱1173764800@qq.com
AndyYang2017-01-04 23:38:59(管理员回复)
没问题!
阿土2016-12-30 10:58:15
刚好工作有这需要,好人,请给我一份源码,谢谢。邮箱:785211825@qq.com
AndyYang2016-12-30 23:19:46(管理员回复)
ok
george2016-12-27 18:55:50
研究学习 求源码一份~
AndyYang2016-12-30 23:19:34(管理员回复)
好的,请注意查收~
小李2016-12-19 16:06:34
研究学习 求源码一份
AndyYang2016-12-21 13:42:35(管理员回复)
已发送,请注意查收,有问题再留言~
qufudj2016-12-17 17:41:59
求一份啊 大侠。正在研究。不知道从哪里下手。
AndyYang2016-12-21 13:41:54(管理员回复)
最近上班时间比较错乱,已发送,请注意查收~
小牧2016-12-15 14:13:29
你好,可以发我一份吗,学习下
AndyYang2016-12-21 13:41:29(管理员回复)
最近上班时间比较错乱,已发送,请注意查收~
小刘2016-12-08 10:39:50
学习 求一份源码
AndyYang2016-12-08 19:22:58(管理员回复)
ok,明日发你,今晚加班~
咚呱2016-12-08 00:40:54
最近因业务需求,正研究微信红包。能发我一份吗,非常感谢!
AndyYang2016-12-08 19:23:19(管理员回复)
ok,明天请注意查收,今晚加班~
AmyZhang2016-11-28 14:46:07
我想学习一下,源码能发一份给我吗?
AndyYang2016-11-28 19:40:50(管理员回复)
好的,没上博客,明天发你,今天要上班到半夜12点~
amy2016-11-28 12:03:27
能发我一份吗,非常感谢!
AndyYang2016-11-28 19:41:44(管理员回复)
收到,请勿刷屏~
amy2016-11-28 11:54:08
能发我下源码吗,正在学习,十分感谢
小吴2016-11-28 00:38:37
发我一份研究 谢谢
AndyYang2016-11-28 19:41:14(管理员回复)
好的,明天请注意查收~
niwei2016-11-22 21:51:13
能发我一份吗兄弟,非常感谢!
AndyYang2016-11-25 22:26:58(管理员回复)
可以的,请注意查收~
zavier2016-11-21 13:03:24
求一份源码研究下
AndyYang2016-11-25 22:27:20(管理员回复)
No problem~
isaac2016-11-17 11:30:09
删我的评论是什么意思啊?
AndyYang2016-11-20 12:03:37(管理员回复)
这是审核机制,^_^
isaac2016-11-17 10:47:56
能发我下源码吗,十分感谢
AndyYang2016-11-20 12:03:12(管理员回复)
ok,请注意查收~
暗夜angel2016-10-26 17:42:56
80933190@qq.com
暗夜angel2016-10-26 17:42:26
源码能不能发下~~谢谢
AndyYang2016-11-16 20:51:47(管理员回复)
OK,请注意查收~
反馈
微信订阅号