Android开发要点说明

1、后台设置

商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。
由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,
设置好后才能正常发起支付。
设置界面在【开放平台】中的栏目【管理中心 / 修改应用 / 修改开发信息】里面,
如图8.8红框内所示。

微信开发者工具支付页面模板 微信支付开发包_包名

应用包名:是在APP项目配置文件AndroidManifest.xml中声明的package值,
例如DEMO中的package=”net.sourceforge.simcpux”。

应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,
在调试的手机上安装签名工具后,运行可生成应用签名串,如图8.9所示,绿色串即应用签名。

签名工具 可参考



2、注册APPID

商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,

代码如下:

final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
// 将该app注册到微信
msgApi.registerApp("wxd930ea5d5a258f4f");

3、调起支付

商户服务器生成支付订单,先调用统一下单API(详见第7节)生成预付单,
获取到prepay_id后将参数再次签名传输给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);

注意:该sign生成字段名列表见调起支付API

微信开发者工具支付页面模板 微信支付开发包_包名_02

随机数生成签名算法 可参考微信官方文档 :

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3

微信开发者工具支付页面模板 微信支付开发包_应用签名_03

微信开发者工具支付页面模板 微信支付开发包_包名_04


时间戳,参数规定

微信开发者工具支付页面模板 微信支付开发包_微信支付_05


4、支付结果回调

参照微信SDK Sample,在net.sourceforge.simcpux.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);
}
}

回调中errCode值列表:

微信开发者工具支付页面模板 微信支付开发包_包名_06