-
微信支付大体步骤:
- web上创建应用部分:
注册账号 —> 添加移动应用 —> 等待审核 —> 审核通过后申请支付功能 —> 填写企业资料 —> 再次等待审核(7日) —> 通过审核(邮件中含商户号及登录密码) —> 验证结算账户,在线签署协议; - 项目中集成部分:
a、注册APPID:
- web上创建应用部分:
final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
msgApi.registerApp("wxd930ea5d5a258f4f");
b、让用户选择商品,并选择支付方式(微信),请求我们自己的服务器,生成订单给微信平台,并获取到预订单(包含prepayId),将prepayId传回给我们的app;
c、app调起支付:
IWXAPI api;
PayReq request = new PayReq();
request.appId = "wxd930ea5d5a258f4f";
request.partnerId = "1900000109";
request.prepayId= "1101000000140415649af9fc314aa427",;
request.packageValue = "Sign=WXPay";
request.nonceStr= "1101000000140429eb40476f8896f4c9";
request.timeStamp= "1398746574";
request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B";
api.sendReq(req);
4、支付结果回调:
在WXPayEntryActivity类中实现onResp函数得到支付结果,并判断返回是否为错误码,而如果支付成功则去后台查询支付结果再展示用户实际支付结果。
publicvoidonResp(BaseRespresp){
if(resp.getType()==ConstantsAPI.COMMAND_PAY_BY_WX){
AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
builder.setTitle(R.string.app_tip);
}
}
回调中errCode值列表:
名称 描述 解决方案
0 成功 展示成功页面
-1 错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
-2 用户取消 无需处理。发生场景:用户不支付了,点击取消,返回APP。
</br>
-
具体流程请参考:
微信支付app集成方法:
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5
微信支付后台使用接口:
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1
-
需要注意的地方:
- 对于微信支付结果通知, 同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。
- 另外商户系统对于支付结果通知的内容一定要做签名验证,并校验返回的订单金额是否与商户侧的订单金额一致,防止数据泄漏导致出现“假通知”,造成资金损失。
- 微信支付功能只在app端,依赖或导入支付SDK就可以了,服务端不需要SDK,只要后台调用微信支付相关接口查询即可,而支付宝支付却需要双方都要导入相应的SDK。
- 微信支付只能用于企业(只有商业版,并非自用型应用),但支付宝是可以实现自用型应用的。
- app对应的网上微信支付应用,不需要进行上线申请,而支付宝的网上应用是需要进行上线申请的。
- 微信需要配置应用签名:d7a7a6a72b7627be785495b6b842dda8
支付宝需要配置密钥(公钥)
.