首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >支付宝扫码支付和微信扫码支付业务场景及问题记录

支付宝扫码支付和微信扫码支付业务场景及问题记录

作者头像
小柒2012
发布2018-04-13 15:28:21
2.2K0
发布2018-04-13 15:28:21
举报
文章被收录于专栏:IT笔记IT笔记

这段时间一直在捣鼓扫码支付的功能,项目中使用了支付宝扫码支付和微信扫码支付。中间遇到了很多坑,由于我们系统是分别支持这两种方式的,并且可以随时切换支付方式,特此记录一下。

业务场景一

用户发起测试,选择支付宝支付,这时候生成了二维码并且扫描了二维码,但是没有付款,这时候支付宝账号里面会有一个等待付款的记录,如果你没有设置timeout_express失效时间,这个订单会一直在账单里面。

然后用户感觉这次测试有问题想删除,于是系统调用支付宝关闭订单接口,这时候账单里面显示交易关闭,流程很正常,没有一点问题。

业务场景二

用户发起测试,选择支付宝支付,这时候生成了二维码但没有扫描。

然后用户感觉这次测试有问题想删除,于是系统调用支付宝关闭订单接口,但是这时候后台接口报错了,提示订单不存在

回想起当时关闭微信订单的时候很没问题的啊,仔细阅读API,测试了好多次都是这样子,随后邮件询问了蚂蚁金服的工程师,很快就回复了,回复是这样子的:

如果你调用的是当面付预下单接口(alipay.trade.precreate),调用成功后订单实际上是没有生成,因为创建一笔订单要买家、卖家、金额三要素。预下单并没有创建订单,所以根据商户订单号操作订单,比如查询或者关闭,会报错订单不存在。当用户扫码后订单才会创建,用户扫码之前二维码有效期2小时,扫码之后有效期根据timeout_express时间指定。

简单来说,在你没扫描二维码之前其实根本没有生成订单,所以会报错提示订单不存在,这可能是支付宝跟微信支付的一个区别吧。

业务场景三

用户发起测试订单,首先我们选择支付宝支付,这时候生成支付二维码但是没有扫描。

用户突然想改变付费方式了,于是它又选择了微信支付,这时候我们的业务逻辑是要关闭支付宝订单的,但是这时候后台接口报错了,提示订单不存在 场景二已经说明,这里切换支付方式不再调用订单关闭接口。

业务场景四

用户发起测试订单,首先我们选择微信支付,这时候生成支付二维码但是没有扫描。

用户突然想改变付费方式了,于是它又选择了支付宝支付,这时候我们的业务逻辑是要关闭微信订单的,但是这时候后台接口并没有像支付宝关闭订单那样报错。

那说明微信二维码生成的同时已经生成了订单,所以不会像支付宝那样提示订单不存在

业务场景五

基于场景四,用户这时候又切换付费方式为微信了,于是我们重新调用微信下单接口,这时候问题出现了,提示订单已关闭。因为我们的产品订单号是唯一的,每次调用下单接口参数是一致的,如场景三一样,不再关闭订单。

业务场景六

基于场景五,用户这时候又切换付费方式为支付宝了,于是我们重新调用支付宝下单接口,这时候并没有提示订单已关闭,而是顺利了生成了支付二维码,但是扫描提示订单已关闭

总结

  • 微信只要下单生成二维码就生成了订单。而支付宝是预下单,即使生成了二维码也没有生成订单,只有扫描了二维码才生成订单。
  • 基于上面的总结,我们就明白了为什么微信订单关闭后,再下单直接提示订单已经关闭;而支付宝还是可以预下单的,但是扫码时提示订单已经关闭。
  • 因为我们的订单号是固定的,所以最终逻辑,切换付费类型,不再关闭订单。删除测试选择关闭订单或者退款。
  • 这里需要注意一下,微信和支付宝扫码之前二维码有效期都是2小时,也就是说你2小时候扫描二维码是无效的。这个是固定值,无法更改。
  • 关于timeout_express时间的指定,是在扫码之后了,如果你设置了timeout_express,订单将自动失效。但是我们的订单号是固定的,所以就没有设置关于timeout_express时间的指定,当然可能会有潜在问题。

相关阅读:

JAVA实现的支付宝扫描二维码支付

https://cloud.tencent.com/developer/article/1096147

JAVA实现的支付宝扫描二维码支付

https://cloud.tencent.com/developer/article/1096147

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 业务场景一
  • 业务场景二
  • 业务场景三
  • 业务场景四
  • 业务场景五
  • 业务场景六
  • 总结
相关产品与服务
云支付
云支付(Cloud Pay,CPay)为您提供开放、可靠的聚合收款技术服务和商户管理功能。云支付支持刷卡支付、扫码支付、一码多付多种支付方式。服务商也可使用云支付提供的 SDK 和 HTTPS 接口,将云支付集成进自己的系统中,为商户提供的个性化解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档