一、微信支付
你在初次使用微信支付时,心里或多或少都会有一点儿虚。在这里我已过来人的身份对你说:“不要害怕,其实他跟其他的第三方集成差不多。”这说你心里应该多了一点儿底气吧。相信你应该或多或少也集成过一些第三方吧,你也能体会到步骤之简单吧。没有集成过也没有关系,毕竟集成第三方是很简单的。好了,下面一起来看看微信支付的集成步骤吧。
首先强调一下:在测试微信支付时,一定要用使用在微信端填的签名文件的MD5值所用的签名文件签名打包
1、获取APPID
在微信开放平台申请开发应用后,获取唯一标识APPID。需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。设置界面在【开放平台】中的栏目【管理中心 / 修改应用 / 修改开发信息】里面。如下图所示。(注意了注意了:应用签名、应用包名一定要填写,否则掉不起支付。应用签名填的是签名文件的MD5值;包名就不说了,大家都知道。) |
2、注册APPID
商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下: |
3、调起支付
商户服务器生成支付订单,先调用统一下单API(详见第7节)生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付。以下是调起微信支付的关键代码: |
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);
注意了注意了:签名sign很重要,一般大多数调不起支付都是签名sign问题。 |
4、支付结果回调
在 包名.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调),在WXPayEntryActivity类中实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。代码示例如下: |
publicvoidonResp(BaseRespresp){
if(resp.getType()==ConstantsAPI.COMMAND_PAY_BY_WX){
Log.d(TAG,"onPayFinish,errCode="+resp.errCode);
AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
builder.setTitle(R.string.app_tip);
}
}
注意了注意了:一定要主要包名.wxapi包路径中实现WXPayEntryActivity类。比如你的为com.test.test,那就是com.test.testwxapi包下实现WXPayEntryActivity类。 |
回调中errCode值列表:
最后再次强调:在测试微信支付时,一定要用使用在微信端填的签名文件的MD5值所用的签名文件签名打包