因为支付宝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" />