微信支付id出现的重复支付解决方法和app应用中多种支付方式之间的对比
1.微信支付的transId发起支付请求,未登录微信,先帐号登陆,否则直接去支付。这样的话,该transId跟该帐号绑定起来了,
如果下一次再重新使用该transId来支付请求,但是想切换其他的微信帐号来支付的话,微信就会提示报错信息。
2.所以解决的方法就是每次发起支付请求的时候,transId都是不同的,暂且定义为transId尾号递增1,所以每次进来都是不同的transId,这样就算切换帐号也不会报错。
3.但是根据2的修改方法,在实际的线上运营中,确实有人出现微信多次重复支付的情况,一笔费用多次出现的情况,这样又回到了问题的本质,还是得固定transId,支付成功的transId,微信是不允许重复支付的。达到目的。 同时把微信不允许重复支付的返回信息在页面上面展示出来,而不是之前统一的返回“微信响应异常”这么笼统。
微信:
<xml><return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wx32c75ca6fb5637e1]]></appid>
<mch_id><![CDATA[]]></mch_id>
<nonce_str><![CDATA[aZ7zP05PepXUO8Rx]]></nonce_str>
<sign><![CDATA[33A7CCEDD7C1D123D5B7034A32C28F0E]]></sign>
<result_code><![CDATA[FAIL]]></result_code>
<err_code><![CDATA[ORDERPAID]]></err_code>
<err_code_des><![CDATA[该订单已支付]]></err_code_des>
</xml>
银联:
2016-05-23 15:27:40.358 [http-nio-8081-exec-9] INFO com.autoyol.pay.unionpay.PaymentExecuter#submitOrder [line:85] - 提交/推送订单信息返回结果:{charset=UTF-8, signature=8e62e065e9f2204cb8405a938a9ed078, version=1.0.0, transType=02, respMsg=重复支付[], respCode=22, signMethod=MD5}
2016-05-23 15:27:40.358 [http-nio-8081-exec-9] INFO com.autoyol.service.transpay.executer.UpmpPaymentExecuter#submitOrder [line:39] - <<<<<<<received upmpServer submitOrder resultData={charset=UTF-8, signature=8e62e065e9f2204cb8405a938a9ed078, version=1.0.0, transType=02, respMsg=重复支付[], respCode=22, signMethod=MD5}
快钱:
2016-05-23 15:52:07.662 [http-nio-8081-exec-4] INFO com.autoyol.pay.bill99.shortcutPays.send.SendTR1#sendTR1 [line:118] - 开始发送
2016-05-23 15:52:08.752 [http-nio-8081-exec-4] DEBUG com.autoyol.controller.base.BaseController#writeResponse [line:125] - >>>>>>>>Send:{"resCode":"OR","resMsg":"【快钱】外部跟踪编号重复","data":null}
4.出现重复支付的时候,该笔费用的支付状态是“正在支付”,这样在页面的刷新,将支付状态的“正在支付”更改为“支付成功”(pay_flag)
ORDERPAID=【微信】商户订单已支付
OR=【快钱】外部跟踪编号重复
respMsg=【银联】重复支付[2040002], respCode=22
## 锁定支付id测试,已重复支付的问题。 160523 xxx
重复支付的时候,给出报错提示即可。因为pay_flag此时是2(正在支付),退出后会刷新状态。
1.“订单详情(有)/订单列表(无)中的正在支付” 已测试OK~ payStatus RentPay.java DepositPay.java trans与trans_pay中的trans_type同步。
2.进入平台,动态判断payKind,租车押金支付完毕,就会自动进入支付的是违章押金金额。 已测试OK~
5.如果先微信后银联/快钱的交叉支付问题,根本区别在于微信打开是新开一个app页面,银联插件和快钱是嵌入在app内部,这样实际上会更好,问题就是在于一个人先打开了一个微信支付窗口,然后回到app再打开银联或快钱支付,这样理论上也会出现一笔费用多次支付的情况,但是从付款人的角度出发,付钱的事情都是很谨慎的,万一出现情况,就只能线下退款了。
微信支付id出现的重复支付解决方法和app应用中多种支付方式之间的对比的更多相关文章
- 微信小程序错误——mpvue小程序:未找到 app.json 中的定义的 pages "pages/XXX/XXX" 对应的 WXML 文件
背景 在刚开始学习开发小程序时,使用微信开发工具在app.json建立页面,写好配置文件名称后,应该会自动生成页面的4个文件,结果没有生成文件,反而报错:mpvue小程序:未找到 app.json 中 ...
- java heap space解决方法和JVM参数设置
在JVM中如果98%的时间是用于GC(Garbage Collection)且可用的 Heap size 不足2%的时候将抛出异常信息,java.lang.OutOfMemoryError: Java ...
- 关于UIButton嵌入到UIView点击无反应问题的解决方法和delegate的简单用法示例(转载)
做项目封装UIView的时候碰到的问题,没想到有个哥们儿还写成博客,特此收藏! 问题是这样的,几个界面用到同一个自定义返回按钮,于是就想着把这个按钮单独封装起来,添加一个UIView类,在里面自定义U ...
- windows 10 python 2.7和python3.6共存解决方法和pip安装
一.首先去python官网将两个版本下载并安装: 然后进入windows的环境变量,检查下面4个变量: 1.C:\Python272.C:\Python27\Scripts3.D:\software\ ...
- Django框架效率问题的解决方法和总…
由于项目的需要,学习了Django框架,Django框架的MTV很清晰,通过MTV能够很好地了解Django框架的内部机理.但是在使用过程中发现了一个严重的问题,就是当有大量IO(写数据库操作)的时候 ...
- nginx调用php-fpm出错解决方法和nginx配置详解
装完了nginx和php-5.5,配置好了nginx调用php后,就开始启动php-fpm. 使用下面的命令 复制代码 代码如下: /usr/local/php/sbin/php-fpm 就可以启动了 ...
- 【微信支付】公众号、商户基础配置和流程(包括设置支付授权目录、测试支付目录和白名单、JS接口安全域名、授权回调域名等)
一.使用场景以及说明 使用场景:商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程. 说明:1.用户打开图文消息或者扫描二维码,在微信内置浏览器打开网 ...
- app微信支付-java服务端接口 支付-查询-退款
个人不怎么看得懂微信的文档,看了很多前辈的写法,终于调通了,在这里做一下记录. 首先来定义各种处理类(微信支付不需要特殊jar包,很多处理需要自己封装,当然也可以自己写完打个jar包) 参数要用jdo ...
- app使用微信支付成功后,点击返回到该app却跳到另外一个app去了
刚接手了公司iOS的两个APP, 现在碰到了这样一个问题: 有一台iPhone在一个APP中使用了微信支付,支付成功后,点击返回到该APP,结果却跳到了另外一个APP去了. 这两个APP都是公司开发的 ...
随机推荐
- cacti安装
cacti是一套基于PHP,MySQL,Net-SNMP及RRDTool开发的网络流量监测图形分析工具.它通snmpget来获取数据,使用RRDtool绘画图形,提供了非常强大的数据和用户管理功能,同 ...
- ActiveMQ两种模式PTP和PUB/SUB<转>
1.PTP模型 PTP(Point-to-Point)模型是基于队列(Queue)的,对于PTP消息模型而言,它的消息目的是一个消息队列(Queue),消息生产者每次发送消息总是把消息送入消息队列中, ...
- swing自定义border
public class MyBorder extends AbstractBorder { private static final long serialVersionUID = 1L; priv ...
- 一、安装MYSQL
数据库就是数据的仓库.MYSQL数据库软件它也是一个独立的软件.它是和PHP配合最好的一种数据库.MYSQL数据库也可以作为其它编程语言的数据源. MYSQL的官方网站:http://www.mysq ...
- SpringBoot 集成 Mybatis 使用 Druid数据源 MySQL数据库
思路: 1.创建项目 项目结构如下: 2.导入相应包 POM.xml文件如下: <?xml version="1.0" encoding="UTF-8"? ...
- 解决Eclipse闪退问题的方法总结
1.在C:/WINDOWS/system32 系统文件夹中ctrl+F 然后搜索java.exe,如果存在java.exe, javaw.exe etc.全部删除. 2.内存不足,打开Eclipse目 ...
- 用source函数代替繁冗的R语言打包过程
用source函数代替繁冗的R语言打包过程 经过初级的学习和使用R语言之后我们渐渐的开始动手写自己的R语言小程序,这些小程序因为和自己的工作非常契合而变得通用性不是那么强.因此,要让它们成为一个独立的 ...
- 漂亮的圆角文本框 CSS3实现
进入人人小站发现了个挺好看的文本框,圆角的,原来是利用了CSS3的效果,不过暂时只有IE9 和FF浏览器支持. <html xmlns="http://www.w3.org/1999/ ...
- python进行数据分析---python3卡方
数学公式思路: 代码: 使用典型的pandas进行的逻辑操作 同时也指针对了pandas https://github.com/renfanzi/python3_Variance_Chisquare. ...
- python一天一题(1)
#有一个文件,文件名为output_1981.10.21.txt . # 下面使用Python: 读取文件名中的日期时间信息,并找出这一天是周几. # 将文件改名为output_YYYY-MM-DD- ...