集成微信支付的各种坑 返回结果-1

本文详细记录了微信APP支付开发过程中遇到的问题,包括微信开放平台与商户平台的区别、API秘钥的重要性、统一下单接口的正确使用以及沙箱环境的误导等。作者分享了在微信支付开发中踩过的坑及解决方案,帮助后来者避免同样的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近APP项目集成支付功能,那自然是支付宝微信两大巨头缺一不可了。先一样一样来,下载了支付宝的各种文档和官方demo,各项代码也还是比较清晰,支付宝也提供了沙箱环境进行测试,很快解决了问题。接下来满心欢喜的来搞定微信,结果硬是被一个个的深坑搞懵逼了,纠结了很久终于解决,主要流程就不说了,在此记录遇到的几个问题,给后来人少着点他们的道:

注意这段代码,当你设置了不使用沙箱环境后,默认的签名方式就变成了 HMACSHA256,而非官方文档所说的MD5,更关键的是,你发起统一下单接口调用时,使用HMACSHA256进行签名,照样可以请求成功,并且获得数据,但是当你用MD5进行第二次签名,返回到APP端进行支付调用时,却永远都会返回-1,这个坑埋了我很久,找了无数方案也没有解决,最终实在无奈了去对数据的时候才发现的,请各位小心!

  • 微信APP支付包括一个微信开放平台和一个微信商户平台!请注意,微信开放平台主要是用来申请你的APP,获取APPID,开通各项功能,获取商户号mch_id,并且设置ios和android的各项参数,比如android端最关键的包名和应用签名。应用签名官方有教你怎么获取,注意这个签名和你打包用的keystone文件有关,假如你用Androidstudio进行开发的话,要注意区分调试和打包用的keystone是不同的,或者你可以直接在build.gradle里把调试和打包发布用的keystone文件设置成同一个,这样就方便一些。而另外一个商户平台是关系到收款信息的,乍一看以为这是财务用的平台,万万没想到它里面还藏了一个跟支付功能开发很关键的东西!登录以后点击账户中心——》账户设置下的  API安全——》设置API秘钥  这里需要设置一个32位的api秘钥!注意,后面的接口数据签名sign的时候的key用的正是这个api秘钥!!!而不是用app开放平台的APPsecret!!!
  • 然后,就是统一下单接口,这是后台服务器发起的。请注意它的流程,是服务器先组装数据,然后签名,然后发起请求,获取预支付单号perpay_id,然后再使用这个perpay_id和其他数据再组装一下,再次签名,再返回给APP端进行支付。在这又不得不吐槽一下微信支付,说明文档和代码demo里都有写沙箱环境,结果根本不能用,官方直接推荐使用正式环境进行测试-_-!,我们开发的特么哪来那么多钱给老板测试啊哈?然后呢,直接使用官方demo里提供的工具类的同学,就一定要再注意一个深坑!官方demo的WXPay构造方法有一个参数可以设置是否使用沙箱环境,当你觉得你要使用正式环境,而不使用沙箱环境,所以这里传个false的时候,你改变的不仅仅是请求的地址,你改变的还有数据的加密方式。
  • 然后就是APP端使用服务器返回的数据进行支付调用的时候,直接获取值进行赋值就行了,对于packageValue这个值,直接写死Sign=WXPay就好。其他都没什么大问题。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值