支付宝SDK
由于支付宝SDK对于整个支付流程已经介绍的十分详细了,在这里我就简单说一些注意点。
由于存在支付宝可能没有安装的情况,所以我们在调用支付宝支付时,需要对其进行判断,做出不同的处理方式,即是使用客户端支付,还是使用H5支付,这里简单阐述一下:
情况一:已安装支付宝客户端
/** * 唤醒支付宝支付 * @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支付流程。
<!-- 支付宝 --> <activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden" />
相关推荐
wuxiaobo 2020-11-06
QSmile 2020-09-17
jxkjliao 2020-09-02
迷彩 2020-06-09
weigenzongderoot 2020-04-30
hushijiao 2020-03-23
hushijiao 2020-01-18
guanheyu 2020-01-06
cindycinderella 2019-12-24
cindycinderella 2019-12-17
cindycinderella 2019-12-10
Molin 2019-11-18
hushijiao 2020-11-10
D先生 2020-05-31
迷彩 2020-05-29
hushijiao 2020-05-17
cindycinderella 2020-05-15