Android微信支付遇到的大坑

公司前段时间要求在项目上面加上微信支付,由于之前没有做过微信的支付,所以遇到的坑挺多的,再有就是微信的文档实在是太…..这里就不多说什么了,已经无力吐槽了,下面就在继续跟着走一遍这个流程

第一步

首先先在微信开放平台注册自己的账号,然后申请创建应用,填写相应的资料,这些让负责这事的人去做就行,这里面有一个坑,就是填写签名的时候不要用自己打包的那个签名,人家有自己的签名生成工具

点击下载 签名生成工具

里面写自己的包名然后就能得到想要的签名

第二步

下载官方的SDK,这里有一点就是官方的依赖包不能用

compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

只能拿SDK里面的jar包copy到自己的项目里面然后添加依赖,然后把wxapi文件整个copy到你的项目中
这里写图片描述
首先做好微信支付所准备的数据

请求参数

字段名 变量名 类型 必填 示例值 描述
应用ID appid String(32) wx8888888888888888 微信开放平台审核通过的应用APPID
商户号 partnerid String(32) 1900000109 微信支付分配的商户号
预支付交易会话ID prepayid String(32) WX1217752501201407033233368018 微信返回的支付交易会话ID
扩展字段 package String(128) Sign=WXPay 暂填写固定值Sign=WXPay
随机字符串 noncestr String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串,不长于32位。推荐随机数生成算法
时间戳 timestamp String(10) 1412000000 时间戳,请见接口规则-参数规定
签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 签名,详见签名生成算法

这些数据都是后台返回给你的值,不要担心找不到这些数据

第三步

接下来就到了核心了

IWXAPI api = WXAPIFactory.createWXAPI(PopwindousActivity.this, weixinBean.getData().getAppid());
                //data  根据服务器返回的json数据创建的实体类对象
                PayReq req = new PayReq(); req.appId = weixinBean.getData().getAppid();
                req.partnerId = weixinBean.getData().getPartnerid();
                req.prepayId = weixinBean.getData().getPrepayid();
                req.packageValue = "Sign=WXPay";
                req.nonceStr = weixinBean.getData().getNoncestr();
                req.timeStamp = weixinBean.getData().getTimestamp();
                req.sign = weixinBean.getData().getSign();
                api.registerApp(weixinBean.getData().getAppid());
                //发起请求
                api.sendReq(req);

上传你的数据,同样这句话是写在你的微信支付的点击事件里面的,做完这些就可以支付了,别忘记加权限
还有就是返回码一共三个

名称 描述 解决方案
0 成功 展示成功页面
-1 错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
-2 用户取消 无需处理。发生场景:用户不支付了,点击取消,返回APP。
展开阅读全文

没有更多推荐了,返回首页