微信 支付寶 銀聯支付遇到的坑 總結

2021-08-03 23:01:06 字數 3244 閱讀 5466

出於安全考慮,驗籤我們都是放到後台進行驗籤的。對於我們移動端節省了很多的勞動力。

支付介面如下:

支付完成介面如下:

ok,接下來開始我們輕鬆的開發之旅:

準備:

支付寶:

1、獲取訂單資訊(根據自己公司的實際情況:可以在服務端完成,也可以在本地完成) 2、

客戶端拿這些訂單資訊向伺服器後台進行請求,返回支付簽名資訊signinfo 3、

/**

* 支付寶進行請求

** @param signinfo

*/private void paytoorderservice(final string signinfo)

}.start();

}

4、

使用者操作,輸入密碼支付,支付成功;直接返回取消支付;出現錯誤,支付失敗;進入支付介面,但輸入密碼支付,支付待確認;5、

6、 7、

private handler mhandler = new handler()  catch (exception e) 

/**對於支付結果,請商戶依賴服務端的非同步通知結果。同步通知結果,僅作為支付結束的通知。

*/string resultinfo = payresult.getresult();// 同步返回需要驗證的資訊

string resultstatus = payresult.getresultstatus();

// 判斷resultstatus 為9000則代表支付成功

if (textutils.equals(resultstatus, pay_ok)) else if (textutils.equals(resultstatus, pay_failed)) else if (textutils.equals(resultstatus, pay_cancle)) else if (textutils.equals(resultstatus, pay_net_err)) else if (textutils.equals(resultstatus, pay_wait_confirm))

break;}}

};

先上官方流程圖

1、接入流程

進入管理中心,建立移動應用

申請支付能力

2、**整合

hashmapparams = getheadmap();

params.put("money", money);// 支付金額,單位:分

params.put("goodname", goodsname);// 商品名稱

params.put("productnum", string.valueof(12));// 商品的數量

/**

*/@override

public void onget(jsonobject jsonobject) catch (jsonexception e)

mwxapi.sendreq(req);}}

注意:

最好讓公司財務部門去申請,申請成功後會拿到乙個商戶id,後面生成sign時會用到。

3.官方開發文件中有一處錯誤,需要注意下,如下圖最後一行引數req應該為request,照搬**的估計ide也不會放過你,哈哈

但支付寶除錯是無需正式簽名!

6.來說下官方demo,這東西害人不淺啊!很多人參考其寫法,如生成sign放在客戶端啊,調支付的activity新增intent-filter啊,最主要的還是簽名問題。其實客戶端邏輯很簡單,直接上手整合即可,demo看看邏輯就行,照抄小心掉坑里。

7.網上有人說需要給呼叫支付的activity配置如下intent-filter(見下圖),可能也是被demo誤導了

9.生成sign時特別需要注意:

我們遇到的錯誤就是因為partnerid寫成了partnerid,prepayid寫成了prepayid,當然我們是在服務端寫的,如果在客戶端生成sign的話,也需要注意大小寫及名稱,詳細資訊請參考官方文件。

銀聯支付:先看流程圖

大家不要被這張搞懵逼的了,其實很簡單,這裡我將其分為5小步。

請求支付

string servermode = "01";

string tn="";// 從伺服器獲取的流水號

uppayassistex.startpaybyjar(mainactivity.this, payactivity.class, "", "", tn, servermode);

tn值就是上面第三後台給的tn,給到伺服器那裡

結果返回:

處理銀聯手機支付控制項返回的支付結果
@override

protected void onactivityresult(int requestcode, int resultcode, intent data)

string str = data.getextras().getstring("pay_result");

if (str.equalsignorecase("success")) else if (str.equalsignorecase("fail")) else if (str.equalsignorecase("cancel"))

}

總感覺銀聯支付的sdk呼叫起來怪怪的,貌似回到了原始深林

最後,我封裝了三方支付庫,已傳到github,歡迎各位使用和star!

iOS支付寶,微信,銀聯支付整合封裝(上)

一.整合支付寶支付 支付寶整合官方教程 支付寶整合官方demo 1.匯入sdk並新增依賴庫 啟動ide 如xcode 把ios包中的壓縮檔案中以下檔案拷貝到專案資料夾下,並匯入到專案工程中。alipaysdk.bundle alipaysdk.framework 在build phases選項卡的l...

微信支付 支付寶支付

二 移動端支付寶支付 weixinpay data else if document.attachevent else onbridgeready function res vm.number null vm.router.go 1 vm.base url index.html depositres...

微信支付寶支付

備忘,如果有看到的小夥伴,希望能幫助到你 測試的時候一定要用自定義基座測試 證書檔案是你的.keystore檔案路徑,在生成證書的時候一點更要記住檔案位置和密碼!實在忘記了,就最簡單粗暴的方法,重新生成把,但是在重新生成時,一定要記得把相關用到證書資訊的地方全部修改一遍。cmd開啟 生成.keyst...