微信红包开发文档教程:看懂微信红包开发文档?

原标题:微信红包开发文档教程:看懂微信红包开发文档?

  微信红包开发文档教程:看懂微信红包开发文档?微信支付的开发,作为微信公众号开发的难点之一,另不少开发者颇为头痛。市面上微信支付开发成本动辄上万,也让刚创业的小公司无力负担。本次文章将详细介绍微信支付中微信原生红包的开发思路,并提供源代码。以供各位同好交流。

  开发效果

  如图1所示,微信公众号9五后不害羞(love_thyc)发放红包效果。微信红包分为:普通红包、裂变红包。本次介绍普通红包。

  微信红包开发文档教程:看懂微信红包开发文档?

  图 1

  开发前准备

  1.已认证的服务号;

  2.开通微信支付功能。

  开启“微信支付——产品中心——现金红包”此项功能,如图2所示

  微信红包开发文档教程:看懂微信红包开发文档?

  图 2

  3.微信支付开发文档:

  https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3

  开始开发

  1.开发思路:笔者利用mindject整理了程序结构及调用关系。在微信后台“学点编程”(shijiawen6)回复“红包思路”获取红包开发思路图片。

  2.接口:POST方式,带XML参数。

  https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack;

  3.参数拆分:因发送红包的参数非常多,如图3所示,逐一介绍。

  微信红包开发文档教程:看懂微信红包开发文档?

  图 3

  1)nonce_str:随机字符串,用来生成签名。随机字符串签名可以通用,26个字母,10个数字,字符串最长为36。随机字符串程序如下,因为程序较为简单,所以写在redPacketPay.php主程序的类中,用$this->调用。

  微信红包开发文档教程:看懂微信红包开发文档?

  图 4

  2)sign:签名。签名的获取较为复杂所以并没有在redPacketPay.php中拼装。

  (签名算法:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3)

  分析签名算法,它可以拆分为:

  a)在支付平台中设置密钥,密钥需保密。

  微信红包开发文档教程:看懂微信红包开发文档?

  图 5

  b)检查其他参数是否已生产。

  微信红包开发文档教程:看懂微信红包开发文档?

  图 6

  c)对参数按照 key=value 的格式,并按照参数名 ASCII 字典序排序,并拼接为字符串,如图7所示。其中ksort()函数作用为ASCII 字典序排序;formatQueryParaMap()函数作用为拼接为字符串,如图8所示。

  微信红包开发文档教程:看懂微信红包开发文档?

  图 7

  微信红包开发文档教程:看懂微信红包开发文档?

  图 8

  d)用MD5加密算法获得签名,如图9所示。

  微信红包开发文档教程:看懂微信红包开发文档?

  图 9

  3)mch_billno:订单编号=商户号+YYMMDDHHIISS+RANDOM(1000,9999)把时间补全HHIISS有六位,再来一个随机四位数即可。

  4)mch_id:商户号,注册了支付平台就有的

  5)wxappid:appID

  6)send_name:发送方名称

  7)nick_name:如果做为第三方支付开发方,帮商户开发时候,此字段指开放方(非必须)

  8)re_openid:用户的openid,传参的时候直接用$object->FromUserName

  9)total_amount:付款金额,分为单位,最小为100分,即1元

  10)total_num:发红包总数,普通红包1,裂变红包可以为其他值

  11)wishing:红包祝福语

  12)client_ip:新浪云的ip是动态的,所以要动态获取,获取方式如图10所示。

  微信红包开发文档教程:看懂微信红包开发文档?

  图 10

  13)act_name:活动信息

  14)remark:备注信息,

  以上参数均为必须,完成参数设置之后,需要将参数拼装为XML数据。

  4.组装XML数组,其方法如图11所示。

  微信红包开发文档教程:看懂微信红包开发文档?

  图 11

  5.发起POST请求。涉及金钱,所以要使用证书,证书对于每个商户是唯一的,必须妥善保管,方法如图12所示。

  微信红包开发文档教程:看懂微信红包开发文档?

  图 12

  全文总结

  当执行完POST请求后,即完成发红包动作。微信原生红包的开发其实并不复杂,只是涉及到较多的参数,需要运用较多的方法。建议利用笔者提供的“红包思路”先梳理一下开发的流程,再结合源代码进行开发。