Android中的微信支付

一、微信支付


    你在初次使用微信支付时,心里或多或少都会有一点儿虚。在这里我已过来人的身份对你说:“不要害怕,其实他跟其他的第三方集成差不多。”这说你心里应该多了一点儿底气吧。相信你应该或多或少也集成过一些第三方吧,你也能体会到步骤之简单吧。没有集成过也没有关系,毕竟集成第三方是很简单的。好了,下面一起来看看微信支付的集成步骤吧。

    首先强调一下:在测试微信支付时,一定要用使用在微信端填的签名文件的MD5值所用的签名文件签名打包

1、获取APPID

    在微信开放平台申请开发应用后,获取唯一标识APPID。需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。设置界面在【开放平台】中的栏目【管理中心 / 修改应用 / 修改开发信息】里面。如下图所示。(注意了注意了:应用签名、应用包名一定要填写,否则掉不起支付。应用签名填的是签名文件的MD5值;包名就不说了,大家都知道。)

Android中的微信支付_第1张图片

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值列表:

Android中的微信支付_第2张图片

    最后再次强调:在测试微信支付时,一定要用使用在微信端填的签名文件的MD5值所用的签名文件签名打包

附加:
【微信支付】APP支付开发者文档
【微信支付】APP支付示例
【微信支付】头文件和库下载

你可能感兴趣的:(Android)