微信支付相对于支付宝支付较复杂,坑也多,看官请看。。。
我是App端开发文档 ,请对照着文档看
第一步:后台设置属于后台的事,我们可以参与的是提供应用包名,下载它提供的签名工具来得到应用签名,这里注意:后台那边trade_type即交易类型设置为APP,我遇到后台手抖写成Web,搞得我半天没查出问题在哪,神坑。
第二步:先下载jar包,我是入口。也可以直接用它例子里的jar包,名字为libammsdk.jar ,导入到lib文件夹中然后添加进库,即Add as Library。导入Demo中的WXPayEntryActivity,为什么用这个Activity,后面会说明。 在Minifest按照它Demo中配置
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<activity
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop"/>
之后才到了文档中的注册,在需要微信支付的地方或自定义Application中注册,说明Constants下的AppId后台会给我们的。
private IWXAPI api;
api=WXAPIFactory.createWXAPI(this,Constants.AppId);
api.registerApp(Constants.AppId);
第三步:用后台给我们的微信支付接口访问网络,然后就可以得到附带着可以调起支付接口的订单信息,这些信息包括appid,partnerId,prepayId,packageValue,nonceStr,timeStamp,sign,7个关键数据,在你得到这些数据的地方,如下操作,你就可以召唤神龙,不,可以调起微信支付了。
PayReq request = new PayReq();
request.appId =Constants.AppId;
request.partnerId = partnerId;
request.prepayId= prepayId;
request.packageValue = packageValue;
request.nonceStr= nonceStr;
request.timeStamp= timeStamp;
request.sign= sign;
api.sendReq(request);
第四步:这一步就是看微信支付是否调起了,用什么界面去显示?用什么回调方法去判断这个结果?为了方便可以直接用WXPayEntryActivity,在上文有提到过,这里包含了一个onResp回调方法,然后log输出resp.errCode.的值,如果是0,那么恭喜你成功调起了。如果是-1,原因很多,文档上有说明。如果是2,那么一般是用户已经可以看到支付界面了,却不想支付取消了。
第五步:逗你的,第四步就可以得到结果了。为了不误导操作,说明下这个金额是什么时候输入的,后台会另外提供一个接口用于传入金额,商品名等信息,然后我们得到一个order_id订单号,之后就可以用order_id跳到第二步执行操作了。
是不是很简单?