安卓微信支付那些坑

乐逍遥二 2017-06-26 08:57:57
大家安卓支付有没有遇到过这种情况,第一次成功,第二次就-2,第三次支付又是成功,第四次失败一次类推,资询了一下微信技术,他说是商户编号有问题,商户编号我们是根据官方要求自定义的一个自增的id类似于5000000000001,5000000000002这样,避免有重复的,但是为什么会一次成功一次失败呢?搞不懂,不知道有没有人遇到过这样的问题,如果是集成的问题,就应该能付多次啊,官方的demo可以付一次,而且,我手机里面微信分享都可以以,最近被这个问题搞得蛋疼,请求各位大佬,给于解决,小弟万分感谢!
...全文
350 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
乐逍遥二 2017-06-30
  • 打赏
  • 举报
回复
引用 5 楼 heaimnmn 的回复:
他不是提供了一个生成编号的类么
他有提供,但是我们api文档说用户可以自己生成一个唯一的id就可以了,ios那边支付是没问题的。
乐逍遥二 2017-06-30
  • 打赏
  • 举报
回复
引用 6 楼 filyths 的回复:
商户号就是用你申请支付的那个
商户编号就是我们这边自定义的一个唯一的id
乐逍遥二 2017-06-30
  • 打赏
  • 举报
回复
引用 7 楼 ID19870510 的回复:
让你们后台检查一下接口吧
接口没问题的,如果有问题,ios也不会这样啊?
-droidcoffee- 2017-06-30
  • 打赏
  • 举报
回复
让你们后台检查一下接口吧
filyths 2017-06-29
  • 打赏
  • 举报
回复
商户号就是用你申请支付的那个
哎,真难 2017-06-29
  • 打赏
  • 举报
回复
他不是提供了一个生成编号的类么
jklwan 2017-06-29
  • 打赏
  • 举报
回复
没遇到过,你是不是用了缓存的prepay_id或者签名什么的了,每次支付都重新生成。你说的商户编号是商户订单号吗,如果一个订单支付成功了,是不能再次支付同一个订单的,未支付的话可以一直支付。
开发者农工 2017-06-28
  • 打赏
  • 举报
回复
检查包名和应用签名是否正确,一般来说,微信支付的demo里面有个keystore, 要使用demo下的才可以正常跑起来
乐逍遥二 2017-06-26
  • 打赏
  • 举报
回复
引用 1 楼 hjywyj 的回复:
将商户编号换一下,用uuid、时间戳等测试看看有问题没
他这个商户编号不是唯一就可以了吗?我现在能确定他是唯一的啊,而且,第二次支付失败,我再次支付是同一个订单编号,商户id也是同一个就能支付成功
  • 打赏
  • 举报
回复
将商户编号换一下,用uuid、时间戳等测试看看有问题没
微信 支付这 官方文档 很乱 写的 也不是很清楚,测试时 一定要与安卓 或 苹果端 一起测试。 否则 根本找不到问题。 废话 不过说 先 说说 几大的地方。我也是 借鉴 别人的 博客 才测试成功调起支付。文章后 直接上代码 代码 绝对能调起 微信 测试过的! 第一步,生成prepayid,这一步,只要你的appid,mch_id,key没写错,那么99%以上都能获取到prepayid,如果失败,那肯定是几个ID和key有问题,仔细检查,包括编码等,仔细仔细仔细检查。 问题来了,第二步,对获取到的prepayid进行二次签名,官方文档的来了,官方并没有详细说明这一步骤,一切的一切只能靠自己摸索,爬。 首先第一:参数顺序,我这里用了SortedMap,自动对参数进行asc编码顺序,一劳永逸,当然,也可以用其他map,但一定要注意参数顺序,必须是asc编码顺序。 第二:参数package的Sign=WXPay中=的编码问题,转码即可,小。 第三:苹果系统的timestamp位数,统一成10位即可,小。 第四:次级大,注意,官方文档说到的参与二次签名的参数,prepayId,appId,timeStamp等,如果你用他们的驼峰进行大写,那么你就完了。一定要小写,小写,小写。 第五:最大,一样,官方文档并没有对于二次签名有过多赘述,如果你上面几个完美出,那么,你获取到的签名sign跟官方验证的sign绝对是一样的,然而,将这些玩意丢回给APP,APP调起支付,大大的几个字出现了,验证签名失败!WTF!不要急,我已折腾了好几天,终于发现在哪里,那就是noncestr随机字符串,参与二次签名的随机字符串不能再次生成,注意,不能再次生成,一定要用第一步中获取prepayid时的那串字符串,一定要用第一步中获取prepayid时的那串字符串,一定要用第一步中获取prepayid时的那串字符串。 第六:经历了上述5,相信你已经有想干死人的冲动,那么你以为这就结束了吗,还有最后一,那就是APP签名已经包名,一定要与开放平台中的一致,然而,即使一致了你以为又结束了吗,NO,如果你更改过开放平台中的签名,并且,在更改前调用过APP微信支付,那么一定一定一定一定记得清除微信缓存。 至此,所有都成功出,终于出现了支付页面,举国欢腾,微信去年买了个表。最后附上MD5签名类

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧