一、获取签名
在微信支付开发平台获取应用签名,如图:
二、导入微信支付包,记得添加网络权限
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:1.1.6'
三、下载微信平台的快速dome 拷贝里面的wxapi.WXEntryActivity 和wxapi.WXPayEntryActivity 放在wxapi文件夹下
(注意:wxapi一定要放到你项目的包下面 放别的里面会导致调用不起微信支付la)
三、在AndroidManifest.xml中添加以下代码 //微信支付返回的类文件
四、调用支付。
1.使用网络框架进行后台请求数据如:
NetUtils.getInstance().postMonth(PaymeijiaActivity.this, Constant.APARTPAY, NetUtils.getPay(startime, endtime, room_id, "alipay", allmoney, "1"), mHandler, Constant.THREE);
得到类似一下数据
/** * appid : wx02dc122167633c95 * noncestr : weZzMZFU4OE4SobT * package : Sign=WXPay * partnerid : 1449961302 * prepayid : wx20170602171524cb73ac72770999450203 * timestamp : 1496394924 * sign : A772AFA558E8A0B2FD8460FD632D42E7 */
2.解析数据调用支付
weixinBean = new Gson().fromJson(msg.obj.toString(), WeixinBean.class); Runnable payWXRunnable = new Runnable() { @Override public void run() { PayReq request = new PayReq(); request.appId = weixinBean.getAppid(); request.partnerId = weixinBean.getPartnerid(); request.prepayId = weixinBean.getPrepayid(); request.packageValue = weixinBean.getPackageX(); request.nonceStr = weixinBean.getNoncestr(); request.timeStamp = String.valueOf(weixinBean.getTimestamp()); request.sign = weixinBean.getSign(); msgApi.sendReq(request); } }; // 必须异步调用 Thread payThreadwx = new Thread(payWXRunnable); payThreadwx.start(); tvpaysubmit.setClickable(true);
3. 在WXPayEntryActivity中可以进行支付返回的UI操作
onResp(BaseResp resp)方法返回支付结果
@Override
public void onResp(BaseResp resp) {
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
if(resp.errCode == 0){
Toast.makeText(WXPayEntryActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
tv_pay_state.setText("支付成功");
tv_pay_content.setText("您已成功支付"+payMoney+"元");
}else if(resp.errCode == -2){
Toast.makeText(WXPayEntryActivity.this, "用户取消", Toast.LENGTH_SHORT).show();
// tv_pay_state.setText("支付失败");
// tv_pay_content.setText("您已支付失败,请稍后重试");
//
finish();
}else if(resp.errCode == -1){
L.e(resp.errStr+"............."+resp.transaction);
Toast.makeText(WXPayEntryActivity.this, "支付失败", Toast.LENGTH_SHORT).show();
tv_pay_state.setText("支付失败");
tv_pay_content.setText("您已支付失败,请稍后重试");
}else {
}
payMoney="";
}
}
到此为止 微信支付成功!你成功了吗?