Android端集成微信支付寶支付

Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            PayResult payResult = new PayResult((Map<String, String>) msg.obj);
            // 同步返回需要驗證的信息
            String resultInfo = payResult.getResult();
            String resultStatus = payResult.getResultStatus();
            // 判斷resultStatus 爲9000則代表支付成功
            if (TextUtils.equals(resultStatus, "9000")) {
                // 該筆訂單是否真實支付成功,需要依賴服務端的異步通知。
                Intent intent = new Intent(SignForClassActivity.this, SuccessPayActivity.class);
                startActivity(intent);
            } else {
                // 該筆訂單真實的支付結果,需要依賴服務端的異步通知。
                Intent intent1 = new Intent(SignForClassActivity.this, CancelPayActivity.class);
                startActivity(intent1);
            }

        }
    };
 tv_dialog_config_pay.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (tv_dialog_config_pay.getText().equals("微信支付")) {
                            int type = 2;
                            vxPayConfigPresenter.requestData(type, orderid, session_id);
                            //這裏的appid,替換成自己的即可
                            IWXAPI api = WXAPIFactory.createWXAPI(SignForClassActivity.this, null);
                            api.registerApp(Constant.WXPAYAPPID);
                            PayReq payRequest = new PayReq();
                            payRequest.appId = appid;//服務器返回的appid
                            payRequest.partnerId = partnerid;//服務器返回的partnerid
                            payRequest.prepayId = prepayid;//服務器返回的prepayid
                            payRequest.packageValue = "Sign=WXPay";//固定值
                            payRequest.nonceStr = noncestr;//服務器返回的noncestr
                            payRequest.timeStamp = timestamp;//服務器返回的timestamp
                            payRequest.sign = sign;//服務器返回的sign
                            //發起請求,調起微信前去支付
                            api.sendReq(payRequest);
                        } else {
                            int type = 1;
                            aliPayPresenter.requestData(type, orderid, session_id);
                            aliPayPresenter.setRequestDataCallback(new AliPayPresenter.RequestDataCallback() {
                                @Override
                                public void onCallBack() {
                                    Runnable payRunnable = new Runnable() {
                                        @Override
                                        public void run() {
                                            PayTask alipay = new PayTask(SignForClassActivity.this);
                                            Map<String, String> result = alipay.payV2(orderInfo, true);
                                            Message msg = new Message();
                                            msg.what = SDK_PAY_FLAG;
                                            msg.obj = result;
                                            mHandler.sendMessage(msg);
                                        }
                                    };
                                    // 必須異步調用
                                    Thread payThread = new Thread(payRunnable);
                                    payThread.start();
                                }
                            });

                        }

                    }
                });
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
    private static final String TAG = "WXPayEntryActivity";
    private String app_id = "wxc43963b5e9aedb6c";//微信開發後臺申請的app_id
    private IWXAPI api;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        api = WXAPIFactory.createWXAPI(this, Constant.WXPAYAPPID);
        api.handleIntent(getIntent(), this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        api.handleIntent(intent, this);
    }

    @Override
    public void onReq(BaseReq baseReq) {

    }

    @Override
    public void onResp(BaseResp resp) {
        Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);

        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {

            switch (resp.errCode) {
                case 0://支付成功
                    Toast.makeText(this, "支付成功", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(WXPayEntryActivity.this, SuccessPayActivity.class);
                    startActivity(intent);
                    break;
                case -1://錯誤,可能的原因:簽名錯誤、未註冊APPID、項目設置APPID不正確、註冊的APPID與設置的不匹配、其他異常等
                    Toast.makeText(this, "支付錯誤", Toast.LENGTH_SHORT).show();
                    //Log.d(TAG, "onResp: resp.errCode = -1  支付錯誤");
                    break;
                case -2://用戶取消,無需處理。發生場景:用戶不支付了,點擊取消,返回APP。
                    Intent intent1 = new Intent(WXPayEntryActivity.this, CancelPayActivity.class);
                    startActivity(intent1);
                    break;
            }
            finish();//這裏需要關閉該頁面
        }

    }
}

支付寶的實體類

public class PayResult {
	private String resultStatus;
	private String result;
	private String memo;

	public PayResult(Map<String, String> rawResult) {
		if (rawResult == null) {
			return;
		}

		for (String key : rawResult.keySet()) {
			if (TextUtils.equals(key, "resultStatus")) {
				resultStatus = rawResult.get(key);
			} else if (TextUtils.equals(key, "result")) {
				result = rawResult.get(key);
			} else if (TextUtils.equals(key, "memo")) {
				memo = rawResult.get(key);
			}
		}
	}

	@Override
	public String toString() {
		return "resultStatus={" + resultStatus + "};memo={" + memo
				+ "};result={" + result + "}";
	}

	/**
	 * @return the resultStatus
	 */
	public String getResultStatus() {
		return resultStatus;
	}

	/**
	 * @return the memo
	 */
	public String getMemo() {
		return memo;
	}

	/**
	 * @return the result
	 */
	public String getResult() {
		return result;
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章