支付宝APP支付 订单已付款成功,请勿重复提交 和 微信H5支付 INVALID_REQUEST 201 商户订单号重复
支付宝APP支付 返回请求给前端SDK 提示报错"订单已付款成功,请勿重复提交” 产生原因:存在商家订单号已经支付成功,重复再次请求的情况。
每一笔的支付项目商家订单号是唯一的,如果存在同一支付项目多笔支付的情况,需要在原来的商家订单号尾部通过递增等自增长的方式来处理,避免重复。
//扩展3位
if(StringUtils.isNotBlank(sid) && sid.length() > 2) {
String shortSn = sid.substring(sid.length()-3, sid.length()); //末位
String newToSn = shortSn;//默认截取的最后2位
Integer newSn = Integer.valueOf(shortSn);
++newSn; //递增1
if(newSn < 100) {
newToSn = "0"+String.valueOf(newSn);
}else {
newToSn = String.valueOf(newSn);
} //重新构建
transId = transId.substring(0, transId.length()-3) + newToSn;
}
微信H5支付 提示报错"INVALID_REQUEST 201 商户订单号重复"
微信支付的商家订单号最大位数是32,支付宝是64位。可以参考微信或支付宝支付接入官方文档。
超出32位的情况,需要将可变的部分截取-反转-在拼接-再截取32位,如果没有反转,可能会导致每次截图的是一样的商家订单号,导致报错。
//截取
logger.info("1.transId长度过长截取32位(微信)transId=[{}]",transId);
//transId = transId.substring(0, 32); //以下为修改点:
String lastString = transId.substring(24); //24位开始后的字符串
StringBuilder sb = new StringBuilder(lastString);
String lastStringHandler = sb.reverse().toString(); //反转字符串
transId = transId.substring(0, 24).concat(lastStringHandler).substring(0,32);
logger.info("2.transId长度过长截取32位(微信)transId=[{}]",transId);
支付宝APP支付 订单已付款成功,请勿重复提交 和 微信H5支付 INVALID_REQUEST 201 商户订单号重复的更多相关文章
- 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结
最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付.APP微信支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存. 先说注意 ...
- 微信支付-微信公众号支付,微信H5支付,微信APP支付,微信扫码支付
在支付前,如果使用第三方MVC框架,则使用重写模式,服务器也需要配置该项 if (!-e $request_filename){ rewrite ^/(.*)$ /index.php/$ last; ...
- 解决iOS微信H5支付跳转微信后不返回App问题(Swift-WKWebview)(转)
问题分析 正常的H5支付流程如下 按照上面的支付流程会出现 App -> 微信 -> 支付 -> 点击 完成 -> safari访问redirect_url设置的URL,这种流 ...
- asp.net core 微信H5支付(扫码支付,H5支付,公众号支付,app支付)之2
上一篇说到微信扫码支付,今天来分享下微信H5支付,适用场景为手机端非微信浏览器调用微信H5支付惊醒网站支付业务处理.申请开通微信H5支付工作不多做介绍,直接上代码. 首先是微信支付业务类(WxPayS ...
- java实现微信H5支付
前面做了app微信支付的回调处理,现在需要做微信公众号的支付,花了一天多时间,终于折腾出来了!鉴于坑爹的微信官方没有提供Java版的demo,所以全靠自己按照同样坑爹的文档敲敲敲,所以记录下来,以供自 ...
- Android通过外部浏览器调用微信H5支付,Android+PHP详解
看了好多关于讲解微信H5支付开发的文章,大多数都是通过微信内部浏览器来调用支付接口(其实就是公众号支付),可能是因为H5支付接口刚开放不久吧. 微信官方体验链接:http://wxpay.wxutil ...
- 【第二十篇】C#微信H5支付 非微信内浏览器H5支付 浏览器微信支付
微信开发者文档 微信H5支付官方文档 请阅读清楚 最起码把所有参数看一遍 这个地方也可以看看 微信案例 http://wxpay.wxutil.com/mch/pay/h5.v2.php,请在微 ...
- 黄聪:微信h5支付demo微信H5支付demo非微信浏览器支付demo微信wap支付
一.首先先确定H5支付权限已经申请! 二.开发流程 1.用户在商户侧完成下单,使用微信支付进行支付 2.由商户后台向微信支付发起下单请求(调用统一下单接口)注:交易类型trade_type=MWEB ...
- 微信h5支付demo微信H5支付demo非微信浏览器支付demo微信wap支付
服务项目 新手技术咨询 企业技术咨询 定制开发 服务说明 QQ有问必答 QQ.微信.电话 微信开发.php开发,网站开发,系统定制,小程序开发 价格说明 200元/月 1000/月 商议 ...
- 微信支付之微信H5支付(坑,ajax不支持重定向跳转)
这里讲的是 微信h5支付, 是微信以外的手机浏览器调用微信h5支付 h5支付: H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起 ...
随机推荐
- 如何利用 AHAS 保障 Web 服务稳如磐石?
简介:应用高可用服务 AHAS (Application High Availability Service) 是经阿里巴巴内部多年高可用体系沉淀下来的云产品,基于阿里开源流控降级组件 Sentin ...
- [FAQ] WebStorm/PHPStorm:设置 HTML/JavaScript/PHP 注释缩进行为,代码片段
[注释行为] Preferences -> Code Style 选择语言后,找到 Wrapping and Braces, 取消 Comment at first column. 如果是HTM ...
- [Cryptocurrency] rDAI 与 DAI 的区别, 如何质押 rDAI 获取利息
以下合约操作需要在安装 MetaMask ( 以太坊的浏览器钱包 ) 的情况下进行. rDAI 通过和 DAI 1 : 1 互换得到,在 rDAI 提供的 dapp 上面操作 https://app ...
- WPF 触摸下如何给 StylusPointCollection 添加点
本文告诉大家如何在触摸下给 WPF 的 StylusPointCollection 添加新的点 在自己默认创建的 StylusPointCollection 里面添加点是十分简单的,如以下代码,可以非 ...
- 关于多个 Cookie 的分隔符这件事
对于 Cookie 的处理上,我最近遇到一个问题,那就是如何分割 Cookie 的内容.有人说是使用逗号分割,有人说是使用分号分割,究竟用哪个才是对的?其实这个答案是需要分为两个过程,分别是请求和响应 ...
- ES6中Promise方法详解
概要 Promise是个保存异步结果的容器(对象). Promise的状态有:pending(进行中),fulfilled(已成功),rejected(已失败),对应其异步操作的状态. 状态转换: p ...
- [python] 基于PyWaffle库绘制华夫饼图
华夫饼图Waffle chart是一种独特而直观的图表,用于表示分类数据.它采用网格状排列的等大小方格或矩形,每个方格或矩形分配不同的颜色或阴影来表示不同的类别.这种可视化方法有效地传达了每个类别在整 ...
- Competition Set - 模拟赛 I
HNOI2017 Day2 2023-06-10 注:Day2T2换为BJOI2017Day2T1,以匹配学习进度 A.大佬 B.抛硬币 C.喷式水战改 A 大佬 你需要用 \(n\) 天挑战一名大佬 ...
- R2_ES中数据的存储测试
基本概念:ES(一): 架构及原理 关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns) Elasticsearch ⇒ 索引(Index) ⇒ 类型(Type) ⇒ 文档(Documen ...
- surging版本有哪些?
surging 一直在升级开发各个版本,以下是各个版本的费用,有需要可以联系或者可以聘请我为架构师,技术顾问,后期会升级多语言版本,推广至海外. 基于surging 的物联网技术架构 平台版本: