出於安全考慮,驗籤我們都是放到後台進行驗籤的。對於我們移動端節省了很多的勞動力。
支付介面如下:
支付完成介面如下:
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...