上一篇,我們已經詳細講解了Android微信支付,今天接著為大家帶來支付寶支付,支付寶支付相對微信支付要簡單一些,吐槽一下,而且支付寶文檔確實比微信的文檔好了不少,下面開始講解支付流程。
1、首先給出官方文檔的地址
2、在開始集成和開發前,首先了解一下常用的接入方式和架構建議:

支付流程.png
在開始下一步之前,給大家看看網上的很多操作.

網上的代碼.png
這一大堆代碼,后面還有,百來行吧,而且支付寶Demo貌似也是這么干的,估計一些新司機就有點懵逼了,至于嗎?集成一個第三方的,不應該是調用越簡潔越好嗎,而且還是大廠的第三方,不應該啊?所以,筆者有必要出面說明一下,那些老司機,你們弄好了,也不能這么嚇唬新司機啊,說正經的,網上代碼那么長,是因為他們在本地區生成的訂單簽名,這個訂單簽名也就是一個字符串,他由訂單信息,支付金額,訂單號,商戶信息等拼接起來的
下面是APP支付請求所需的參數

App支付請求參數說明.png
然而筆者告訴你,這一大堆,你并不需要,你只要了解一下就行了。因為實際開發中幾乎都是在服務器端生成支付的訂單簽名和訂單信息,因為在后臺的安全性比前端要好,在APP生成,危險性很高,如果你們后臺大哥不給你弄,讓你自己生成,我建議你找他喝點小酒,嘮嘮嗑,好好說說,他估計就同意了。所以網上那種寫一大堆代碼的,實際上是在本地去生成簽名
接下來的事情嘛,就比較簡單了,
3、清單文件做如下配置
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation|screenSize" android:exported="false" android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden" /> <activity android:name="com.alipay.sdk.app.H5AuthActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden" />
4、請求自己服務器,獲取訂單簽名字符串,然后調用支付寶SDK,發起支付請求
/** * 顯示支付寶簽名 * * @param aliPayBean 自己服務器返回的訂單簽名字符串 */public void aliPayData(AliPayBean aliPayBean) { //支付寶支付請求所需的簽名字符串 final String orderInfo = aliPayBean.getResult().getMessage(); Runnable payRunnable = new Runnable() { @Override public void run() { PayTask alipay = new PayTask(PaymentActivity.this); Map<String, String> result = alipay.payV2(orderInfo, true); Log.i("msp", result.toString()); Message msg = new Message(); msg.what = SDK_ALI_PAY_FLAG; msg.obj = result; mHandler.sendMessage(msg); } }; // 必須異步調用 Thread payThread = new Thread(payRunnable); payThread.start(); }5、支付寶支付結果的回調
//支付寶返回數據handler @SuppressLint("HandlerLeak") private Handler mHandler = new Handler() { @SuppressWarnings("unused") public void handleMessage(Message msg) { switch (msg.what) { case SDK_ALI_PAY_FLAG: { @SuppressWarnings("unchecked") PayResult payResult = new PayResult((Map<String, String>) msg.obj); /** 對于支付結果,請商戶依賴服務端的異步通知結果。同步通知結果,僅作為支付結束的通知。 */ String resultInfo = payResult.getResult();// 同步返回需要驗證的信息 String resultStatus = payResult.getResultStatus(); String result = ""; // 判斷resultStatus 為9000則代表支付成功 Log.i(TAG, resultStatus); if (TextUtils.equals(resultStatus, "9000")) { //支付成功 result = "支付成功"; aliPaySuccess(); } else if ("6001".equals(resultStatus)) { result = "您取消了支付"; } else { // 該筆訂單真實的支付結果,需要依賴服務端的異步通知。 result = "支付失敗"; } ToastUtils.showToast(mContext, result); break; } } } };注意:這里支付成功,我只是以客戶端作為標準,實際傳支付結果,最好以服務端為標準,我們調用支付寶支付的時候,支付寶會有2個回調,一個是APP的回調,就是我們上面這個,9000代表支付成功,一個是支付寶服務器通知我們自己的服務器,所以,我們自己的服務器也有個回調。所以APP可以請求后臺的接口來獲取支付結果。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答