最近因为公司业务需求,接触了微信现金红包高级红包接口,开发时遇到了不少问题,网上搜索发现有很多人也遇到了各种问题,但是没有一个相对完整的解决方案。
在这里我把自己开发过程遇到的问题归纳一下,另外写了一个示例程序方便大家参考。
以下说明是基于Windows Microsoft .Net平台的。
官方文档:点击这里查看官方文档,下面是文档没写,或者一笔略过,但是容易被忽略的注意事项。
1、红包是以分为单位,必须大于100分,小于20000分之间。
2、用户无需关注你的公众号(或服务号,下同),如果关注了你的公众号,红包会通过公众号发送,如果没有,通过服务通知发送。
3、接口中的订单号由“微信支付商户号+4位年+2为月份+2位日期+10位一天内不能重复的数字”,这个一天是自然日。
4、目前不支持发送随机红包,因此接口中提交的字段min_value、max_value、total_amount这3个值大小必须一样,total_num值必须为1.
5、随机红包可以自己的程序实现,在100~20000随机出一个数值,然后给上面3个值设定这个随机结果。
6、活动名称看起来没用,注意高级红包接口和商户平台现金红包中的管理红包和创建红包无关,这两个地方是给手工发送红包使用的。
7、可选的4个参数,目前看来都没用,不要传。logo_imgurl, share_content, share_url, share_imgurl。
8、签名注意,值为空的不要参与签名。最后附加的key是微信支付的API密钥,不是公众平台的密钥,在商户平台->账户设置->安全设置->API安全右下角设置密钥中设置,第一次使用微信支付需要设置。
9、中文不需要UrlEncode,Hash输入是byte数组,用Encoding.UTF8.GetBytes来获取。
10、证书强烈建议不采用微信官方Demo文件访问形式证书,应该安装在系统证书存储容器中(在命令行输入certmgr可以查看),并设置为私钥不可以导出。
11、如果你采用10的方式,你很容易遇到无法找到证书的问题,要求运行程序windows账号有访问这个证书的权限。比如,如果双击运行的控制台程序,证书安装在当前用户的个人类别中,那么程序就可以访问证书。
如果是IIS账户,你可能需要指定应用程序池的执行账号为指定账号,然后这个证书安装在这个账号下。
微信官方Demo采用文件的访问形式,就不会有权限问题,但是要求你对证书文件保管好,以及证书密钥保管好。
完整的示例请点击:https://github.com/wenhx/WeChatRedPacketSample
顺便发个招聘广告,招.Net开发工程师(后端),上班地点在深圳蛇口,详情请私信。