微信支付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[1294052801]]></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=重复支付[2040002], 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=重复支付[2040002], 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再打开银联或快钱支付,这样理论上也会出现一笔费用多次支付的情况,但是从付款人的角度出发,付钱的事情都是很谨慎的,万一出现情况,就只能线下退款了。

时间: 2024-07-28 23:34:07

微信支付id出现的重复支付解决方法和app应用中多种支付方式之间的对比的相关文章

转载和积累系列 - HTTP 400状态解决方法和Cookie的限制

HTTP400 遇到HTTP Status 400的情况,一般是浏览器的cookie导致的. 我们在项目中,遇到cookie设置过多的情况,然后就出现了浏览器400的错误了. 这种情况解决方案如下: 1. 彻底清除浏览器cookie信息.只能临时解决 2. 检查程序中是否过多设置cookie cookie的个数限制   IE6.0 IE7.0/8.0 Opera FF Safari Chrome cookie个数   每个域为20个    每个域为50个   每个域为30个   每个域为50个

windows 10 python 2.7和python3.6共存解决方法和pip安装

一.首先去python官网将两个版本下载并安装: 然后进入windows的环境变量,检查下面4个变量: 1.C:\Python272.C:\Python27\Scripts3.D:\software\python4.D:\software\python\Scripts 环境变量中缺少那个就增加那一个 进入CMD或者PowerShell 输入 py -2 (执行python2.x的版本) 输入py -3(执行python3.x的版本) 二.安装pip 首先下载pip安装包:https://pypi

微信公众号开发-公众号支付-设置支付授权目录

我们先看规则: 1.所有使用公众号支付方式发起支付请求的链接地址,都必须在支付授权目录之下: 2.最多设置5个支付授权目录,且域名必须通过ICP备案: 3.头部要包含http或https,须细化到二级或三级目录,以左斜杠“/”结尾. 前两条比较容易理解, 但是看到第三条的时候有一些蒙圈有木有?如果有,请继续往下看 然后就各种搜索,搜出来的文章会让你更加蒙圈有木有?大多数文章都是写微信支付的坑,但是对于解决方法却是语焉不详. ------------------------------------

微信支付开发(1) JS API支付

关键字:微信支付 微信支付v3 jsapi支付 统一支付 Native支付 prepay_id 作者:方倍工作室 原文: http://blog.csdn.net/pondbay/article/details/40536677 本文介绍微信支付下的jsapi实现流程 前言 微信支付现在分为v2版和v3版,2014年9月10号之前申请的为v2版,之后申请的为v3版.V3版的微信支付没有paySignKey参数.v2的相关介绍请参考方倍工作室的其他文章.本文介绍的微信支付v3. 流程实现 1. O

微信支付开发(7) 刷卡支付

关键字:微信支付 微信支付v3 刷卡支付 统一支付 prepay_id 作者:方倍工作室 本文介绍微信支付下的刷卡支付的开发过程.微信刷卡支付是指用户打开微信钱包的刷卡的界面,商户扫码后提交完成支付的支付过程. 一.刷卡支付API 接口地址 https://api.mch.weixin.qq.com/pay/micropay 是否需要证书 不需要. 输入参数 名称 变量名 必填 类型 示例值 描述 公众账号ID appid 是 String(32) wx8888888888888888 微信分配

微信支付公的众号支付和扫码支付

公众号支付是手机端的微信公众号H5页面支付,这种支付方式必须是在微信内置浏览器发起. 扫码支付分为模式一和模式二,模式一主要为线下服务,该模式是先扫码,再生成订单,商户先为自己的商品生成二维码连接,然后用户扫码之后决定是否购买,二维码无过期时间,比如自动售卖机大多采用这种模式:模式二主要为线上电商服务,用户选择商品后生成订单,根据订单生成二维码,然后支付,该二维码为临时二维码. 开发流程 一.授权目录 官方文档说必须是精确目录,其实是二级或三级目录就可以了,太精确的可能还会出现不识别的情况.如果

基于有赞微小店+有赞云实现的个人微信和支付宝扫码在线支付收款

普通个人网站如果想要接入支付宝和微信的在线支付功能的话,没有企业资质是没办法开通支付平台的商户帐号的.前几天在网上看到说使用有赞云可以实现个人收款,而且还支持支付宝和微信等多种支付方式. 大概看了一下,有赞云的API基本满足普通的在线支付接入情况,费率据说是1%,另外搭配产品微小店还是免费的(PS:正常开通微信支付普遍的费率是0.6%左右,特殊行业有单独规定费率,所以还是可以接受的). 基于有赞云的API做在线支付功能还是比较简单的,但不支持PC端直接支付.用户选择支付宝支付时会跳转到手机版的网

微信公众号,调用建行支付。

由于微信支付费率是千分之六,在得知道建行龙支付可以做到千分之二,公司在成本这块就果断采取接建行,废话不说了直接贴代码 Service 层 相关的参数要求还得细对建行的文档 @Service public class CCBPayServiceImpl implements CCBPayApi { private static final Logger LOGGER = LoggerFactory.getLogger(CCBPayServiceImpl.class); @Override publ

SHOPKEE 微信支付,订单状态显示未支付 修复

公众号支付 --> H5调起支付API 1 function onBridgeReady(){ 2 WeixinJSBridge.invoke( 3 'getBrandWCPayRequest', { 4 "appId" : "wx2421b1c4370ec43b", //公众号名称,由商户传入 5 "timeStamp":" 1395712654", //时间戳,自1970年以来的秒数 6 "nonceStr