微信支付宝支付常见问题记录
微信
- 官方文档: https://pay.weixin.qq.com/wiki/doc/api/index.html
- 官方对参数的规定,建议使用之前先阅读一下,特别注意时间戳单位是秒: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_2
- 商户订单号只要未支付或者支付失败就可以继续使用该单号直至成功,支付成功后申请退款,退款成功后该商户订单号不可再使用
- 用订单号a生成订单1时未支付,接着再用原来的订单号a重新生成订单2,接着app支付订单1成功,那么app再发起订单2支付时微信会提示账单已支付
- 订单号被关闭后不可再重新使用,因此每次交易都需要生成新单号
- 微信下单时虽然可以设置订单失效时间,但查询订单时却没有订单超时失效此状态,只会显示未支付状态
不得不吐槽
-
这里不得不吐槽一下微信,开发人员可能想偷懒,竟然还在使用xml,一开始用xml我理解,都过了这么久就不考虑升下级吗;
-
还有提供的sdk也是一般般,都21世纪了,就不能像支付宝一样提供个依赖吗,还要去手动下载sdk集成(后面发现maven仓库上有一个sdk版本 https://mvnrepository.com/artifact/com.github.wxpay/wxpay-sdk 不过这个好像已经很久没更新了,试用了下基本都是可用的,可以放心集成);
-
在app支付里竟然连sdk的下载的都没有,还好我看了其他比如native支付,里面有sdk,拿过来发现其实app支付也能用这个sdk,微信真是坑人,差点就害我自己去实现微信那一套繁琐的签名了;
-
sdk(3.0.9)里面例子竟然是旧的,这是多久没更新了,能不能走点心;
-
另外sdk里面的抽象类WXPayConfig的方法竟然是friendly 的(你要让人继承得是public的吧),这让人怎么继承去实现,实在无语,最后实在无奈得去修改sdk的代码,截图留下点证据
-
在沙箱模式下第一次请求必失败,非要我请求两次是啥子意思咯,失败内容如下:
<head><title>302 Found</title></head> <body bgcolor="white"> <center><h1>302 Found</h1></center> <hr><center>nginx</center> </body> </html>
界面设计规范
- 微信支付对界面有推荐的规范,建议按照官网说明的去设计
- 官方指引 https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_2
支付/退款结果通知
- https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_7&index=3
- https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_16&index=11
沙箱功能
- 如果要使用沙箱功能,最好阅读一下这里的说明: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=23_1&index=1,在文章的最后有个公众号的二维码,最好扫码关注一下,然后打开里面的常见问题仔细阅读一下,避免踩更多坑
- 使用沙箱前需要调接口 https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey 获取密钥,替换原来的密钥即可使用沙箱功能
- 使用沙箱时不支持自定义金额,只能根据验收的case指定
- 沙箱暂时只支持MD5的计算签名
- 获取的沙箱密钥只有三天有效期
- 我在沙箱中使用native支付没传此prodect_id竟然啥也没报错,这文档是几个意思
APP支付
- APP支付即是在自己开发的APP中调起微信支付完成付款的功能
- APP支付的前提条件是
- 300块的认证费是跑不了的
- 设计好UI,因为在商户平台开通APP支付需要提供截图,微信对支付界面的设计还有一定规范,请参考 https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_2
- 前往微信支付平台开通商户,获得商户号
- 在商户平台中开通APP支付
- 3 在微信开放平台的应用中获得微信支付,按照指引操作即可(指引链接:https://pay.weixin.qq.com/static/pay_setting/appid_protocol.shtml)
- 以上操作完成后即可在app发起支付了
- 值得注意的是APP调起支付接口也需要参数签名,签名字段可查看此处https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2,主要是appid,partnerid,prepayid,package,noncestr,timestamp这6个字段
支付宝
- 官方文档地址: https://docs.open.alipay.com/catalog
界面设计规范
- 微信支付对界面有推荐的规范,建议按照官网说明的去设计
- 官方指引 https://docs.open.alipay.com/204
来源:CSDN
作者:huxiaojian5
链接:https://blog.csdn.net/huweijian5/article/details/102519238