现金红包 接口开发注意事项
官网链接:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3
参考连接:https://www.cnblogs.com/wenhx/p/WeChat-RedPacket-Interface.html
1.红包发送功能的实现:
需要请求微信的后台接口:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack (post方式)
我们需要传递正确的请求参数,以xml的格式发送到微信后台;该接口会响应对应的结果参数,根据具体的错误码,来调试代码
2.红包是以分为单位:
必须大于100分,小于20000分,也就是[1,200]元
小于1元,报错"签名错误"
total_num值必须为1
3.签名生成算法:
值为空的不用参与签名
key(商户支付密钥)值不需要参与字典排序,其他参数排完序后,附加到最后面进行加密。最后附加的key是微信支付的API密钥,而不是公众平台的密钥
传送的sign参数不参与签名,因为我们现在是需要计算sign参数,sign值还没有计算出来,是没法进行签名计算的
计算签名的参数个数:与传输的参数保持一致,但除了sign参数本身。
在线调试签名:直接在文本框内填入对应的参数值,检查发送的请求参数是否正确。如果报错签名错误,那就一定是签名错误,仔细检查参数是否正确,参数的值是否正确!!!
4.scene_id是非必须字段,可以传递,也可以不传递
当红包金额大于200或者小于1元时必传
如果报错SIGN_ERROR、PARAM_ERROR,不妨取消该参数的传递,或许就成功了。 我是因为该参数,折腾了好几个小时,费劲。
5.商户证书:
需要在微信商户平台下载,之后在本地导入
格式有:pkcs12格式(apiclient_cert.p12)、pem格式(apiclient_cert.pem)、密钥pem格式(apiclient_key.pem)
apiclient_cert.p12是商户证书文件,除PHP外的开发均使用此证书文件。
windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的商户ID(如:10010000)
6.用户无需关注你的公众号:
如果关注了你的公众号,红包会通过公众号发送,如果没有,以"服务通知"的样式发送。
7.红包样式:
普通红包那种叫红包『防伪消息』,关注时间大于 50小时候才会发
模板消息:新关注的用户,时间小于50小时,所以会发模板消息
折腾大半天,红包终于发放到了你的微信上,心里顿时开心,终于可以松口气了,结果妈蛋发现样式不是我们平常的样式,此时别怀疑代码,是微信设置的消息触达规则,微信红包的文档中有描述。
8.回复success或空串
如果我们不想对用户的消息进行回复,那么直接可以返回"success"或者空串,微信服务器不会对其进行任何处理,并且不会发起重试
微信开发文档中这样写到:
(1)、直接回复success(推荐方式) (2)、直接回复空串(指字节长度为0的空字符串,而不是XML结构体中content字段的内容为空)