总结做支付过程中遇到的坑
2017-07-07 15:29
232 查看
一、支付宝的坑要比微信的少些
这个真是直观的感受,不得不说支付宝的文档还是比较健全的,客服也非常人性化,直接点客服进去是机器人,但一个问题好像问3次得不到你想要的解答,他会提示接入人工客服。接入人工客服就感觉好多了。
微信这边,文档倒也可以,但问题解答太差,也没有客服,机器的也没有。有问题只能百度..
二、支付宝提供了很好的SDK
方便了和项目的集成,方便了开发。计算签名,验签都给做好了,只要参数传对,就没有什么问题。
唯一有点问题的就是支付宝接口升级,维护老版本支付就稍微麻烦点。
支付宝的API文档里有很多这样的代码示例
诶~看上去很方便,直接复制一下,就搞定了。
结果运行的时候就会请求失败,参数不对。但看看参数,也都没有问题。
这也是一个坑,setBizContent中的参数最好自己手打,直接复制下来的可能会有问题。
三、微信支付遇到的问题
1、是中文编码问题,商品描述、详情,避免不了用中文,可如果不注意,请求下单的时候就容易遇到签名错误,其实不是签名算错了,而是你传过去的中文发生乱码了,微信支付服务器算的sign和你传过去的不匹配,你把商品描述换成数字、英文,就好使了。
网上好多都是要你在拼参数的时候把中文转码,比如这样
但我项目里这样做并不好使,因为我的字符集本身就是utf8了。最后发现,其实是在发送请求的时候没有设置编码。比如这样
2、微信退款返回的结果,不是指退款成没成功
而是指退款申请成功与否。具体退款成没成功,得调用退款查询接口,来查询退款的状态。这得注意一下。
3、关于重新支付的问题
无论支付宝还是微信,下单时都需要填写一个商户订单号,对于同一商户来说,这个号应该是唯一的。下单成功后,根据返回的二维码链接,或者调用APP进行支付。这时就会有好死不死爱死不活故意或者不故意的没付款,比如忘用了一张优惠卷。然后进行重新付款时,就产生了一些问题:
对于支付宝,同一商户同一订单号的,另一些参数进行了修改,是可以再次提交下单成功的,比如使用了优惠卷,需付钱数发生了改变。
但微信支付的时候,同一商户同一订单号下,只有随机字符串可以改变,其他参数都不可改变,才会下单成功。
所以对于微信支付,订单确认去支付后,要么支付,要么重新下单。
这些比较印象深刻,两家的支付也再不断完善,可能当你看这篇文章时,上面这些坑可能都不存在了。
现在微信上也提供了SDK和demo,方便了大家的开发。
这个真是直观的感受,不得不说支付宝的文档还是比较健全的,客服也非常人性化,直接点客服进去是机器人,但一个问题好像问3次得不到你想要的解答,他会提示接入人工客服。接入人工客服就感觉好多了。
微信这边,文档倒也可以,但问题解答太差,也没有客服,机器的也没有。有问题只能百度..
二、支付宝提供了很好的SDK
方便了和项目的集成,方便了开发。计算签名,验签都给做好了,只要参数传对,就没有什么问题。
唯一有点问题的就是支付宝接口升级,维护老版本支付就稍微麻烦点。
支付宝的API文档里有很多这样的代码示例
诶~看上去很方便,直接复制一下,就搞定了。
结果运行的时候就会请求失败,参数不对。但看看参数,也都没有问题。
这也是一个坑,setBizContent中的参数最好自己手打,直接复制下来的可能会有问题。
三、微信支付遇到的问题
1、是中文编码问题,商品描述、详情,避免不了用中文,可如果不注意,请求下单的时候就容易遇到签名错误,其实不是签名算错了,而是你传过去的中文发生乱码了,微信支付服务器算的sign和你传过去的不匹配,你把商品描述换成数字、英文,就好使了。
网上好多都是要你在拼参数的时候把中文转码,比如这样
weixin.setBody( new String(weixin.getBody().getBytes("utf-8")) );
但我项目里这样做并不好使,因为我的字符集本身就是utf8了。最后发现,其实是在发送请求的时候没有设置编码。比如这样
PrintWriter pout = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(),"UTF-8"));
2、微信退款返回的结果,不是指退款成没成功
而是指退款申请成功与否。具体退款成没成功,得调用退款查询接口,来查询退款的状态。这得注意一下。
3、关于重新支付的问题
无论支付宝还是微信,下单时都需要填写一个商户订单号,对于同一商户来说,这个号应该是唯一的。下单成功后,根据返回的二维码链接,或者调用APP进行支付。这时就会有好死不死爱死不活故意或者不故意的没付款,比如忘用了一张优惠卷。然后进行重新付款时,就产生了一些问题:
对于支付宝,同一商户同一订单号的,另一些参数进行了修改,是可以再次提交下单成功的,比如使用了优惠卷,需付钱数发生了改变。
但微信支付的时候,同一商户同一订单号下,只有随机字符串可以改变,其他参数都不可改变,才会下单成功。
所以对于微信支付,订单确认去支付后,要么支付,要么重新下单。
这些比较印象深刻,两家的支付也再不断完善,可能当你看这篇文章时,上面这些坑可能都不存在了。
现在微信上也提供了SDK和demo,方便了大家的开发。
相关文章推荐
- Linux 内核编译过程常遇到的错误总结
- 开发过程中遇到的问题总结
- (转)WTL学习过程中遇到的一些问题总结
- ubifs文件系统的制作过程&&遇到的问题及解决方案总结---之二“Linux内核中添加对UBIFS文件系统的支持”
- ubifs文件系统的制作过程&&遇到的问题及解决方案总结---之一“uboot中添加对UBIFS文件系统的支持”
- 使用linux过程中遇到的问题总结
- ubuntu连接无线网--遇到的错误和解决思路总结(无具体过程)
- WTL学习过程中遇到的一些问题总结
- [项目过程中所遇到的各种问题记录]学习篇——对工作以来的学习过的开源项目进行总结—DiscuzNt
- wifi无线网卡(zd1211b芯片)移植到mini2440全过程(二)遇到的问题总结&&解决方案
- 开发过程中遇到的问题总结
- 开发过程中遇到的问题总结
- 开发过程中遇到的问题总结
- (转)EVC学习过程中遇到的错误以及解决办法总结
- 【转】EVC学习过程中遇到的错误以及解决办法总结
- 开发过程中遇到的问题总结
- 开发过程中遇到的问题总结
- 在使用Struts的过程中也遇到了一些问题,现在总结一下
- 看《c++ primer》的过程中原来没遇到的内容的总结(会慢慢添加的)
- hadoop完全分布式过程中遇到的一些问题和总结