【android】手把手轻松集成微信支付

一、获取签名

在微信支付开发平台获取应用签名,如图:


二、导入微信支付包,记得添加网络权限

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="";
		}
	}

	到此为止  微信支付成功!你成功了吗?

你可能感兴趣的:(android,支付)