因爲支付寶SDK對於整個支付流程已經介紹的十分詳細了,在這裏我就簡單說一些注意點。java
因爲存在支付寶可能沒有安裝的狀況,因此咱們在調用支付寶支付時,須要對其進行判斷,作出不一樣的處理方式,便是使用客戶端支付,仍是使用H5支付,這裏簡單闡述一下:android
/** * 喚醒支付寶支付 * @param data 服務端返回訂單數據 */ public void payOrder(JSONObject data) { registerLoadingView.setVisibility(View.GONE); String redirectStr = data.getString("redirectStr"); if (!TextUtils.isEmpty(redirectStr)) { // 喚醒支付寶支付 Thread payThread = new Thread(() -> { PayTask alipay = new PayTask(activity); String result = alipay.pay(redirectStr); Message msg = Message.obtain(); msg.what = MSG_PAY_RESPONSE; msg.obj = result; handler.sendMessage(msg); }); payThread.start(); } } Handler handler = new Handler(msg -> { if (MSG_PAY_RESPONSE == msg.what) { Result result = new Result((String) msg.obj); if (!TextUtils.isEmpty(result.getResult())) { switch (result.getResult()) { case "4000": // 系統異常 TODO Toast.makeText(context, "訂單支付失敗", Toast.LENGTH_SHORT).show(); break; case "6001": // 用戶中途取消支付操做 TODO Toast.makeText(context, "訂單支付已被取消", Toast.LENGTH_SHORT).show(); break; case "6002": // 網絡鏈接出錯 TODO Toast.makeText(context, "網絡鏈接出錯", Toast.LENGTH_SHORT).show(); break; case "9000": // 操做成功 TODO Toast.makeText(context, "訂單支付成功", Toast.LENGTH_SHORT).show(); // TODO do something... break; } } } return false; });
須要在Androidmanifest.xml文件中加入如下代碼,便可進入H5支付流程。bash
<!-- 支付寶 --> <activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden" />