首先我只想说微信能把文档写清楚点吗?超级无敌巨坑
首先进入
微信开发者平台 https://open.weixin.qq/cgi-bin/index?t=home/index&lang=zh_CN 点击打开链接,
然后找到
微信APP支付接入商户服务中心 https://open.weixin.qq/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317780&token=&lang=zh_CN 点击打开链接
这一步是接入的前提,提交相关的材料信息等待审核,
接下来
APP端开发步骤 https://pay.weixin.qq/wiki/doc/api/app/app.php?chapter=8_5 点击打开链接
告诉你如何在APP端写代码,这里是核心代码
调用这端代码的前提是拿到预付单号,这个就需要和自己的后端开发联调了,因为是从后端获取到的,正确调用这段代码后就会调起手机微信支付页面了。
说下几个android端的关键地方,
<!--微信相关-->
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:label="微信分享回调"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:label="微信支付回调"
android:launchMode="singleTop"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<!--微信相关-->
这2个Activity不要忘记注册在自己主工程里面了,这两个Activity的路径必须是APP包名.wxapi.xxxactivity,
APP包名和签名要和审核的时候一致
最后就是Java的后端的支付代码,官网的文档研究了很久,自己去下单拿到的预付费订单信息给APP端支付,
APP端始终调不起微信支付,返回error_code=-1,官方文档是这么说的,如下图:
官方文档也是搞笑哦,说得模棱两可,
下面链接是微信官方给出的一个生产sign签名的工具,用来对比自己生成的是否正确,接口可以改成自定义,
添加好请求参数,然后点击生成签名就好了
https://pay.weixin.qq/wiki/tools/signverify/
用这个工具生成的签名和自己的一模一样,但是客户端还是返回error_code = -1
其实Java后端生成的sign、nonce_str、time_stamp 这几个字段不能用微信返回的,
微信返回的和我们去请求的值不一样,把我们生成的发给APP端去支付,微信返回只需要用到预付费订单字段,
这里特别注意,sign字段返回给APP端的是提交参数和微信返回的预付费id再签一次名,不要用微信直接返回的,
这个地方官网文档一点都没提到,我还是看下面的demo发现的
最后在github上找个一个星星非常多的开源支付代码,完美解决问题,目前还不知道后端代码问题所在,贴下地址:
微信java后端支付demo
https://github/binarywang/weixin-java-pay-demo
WxJava (微信开发 Java SDK),支持包括微信支付、开放平台、小程序、企业微信/企业号和公众号等的后端开发
https://github/Wechat-Group/WxJava
更多推荐
java 微信支付 demo
发布评论