1.流程:1.app下訂單提交給后臺(tái)服務(wù)器生成訂單信息彪笼,帶有簽名钻注。2.提交上述返回?cái)?shù)據(jù)到支付寶,喚起支付配猫。3.支付寶向app返回支付結(jié)果幅恋。向服務(wù)端異步返回支付結(jié)果。
2.關(guān)于應(yīng)用私鑰和支付寶公鑰
關(guān)于私鑰泵肄,官方要求一定不能放到app客戶端捆交。
一定要配對(duì)。所謂配對(duì)就是選擇一種算法的私鑰腐巢,要使用對(duì)應(yīng)的支付寶公鑰品追。
在以前的api中,簽名是在app端完成的冯丙。最新的api已不建議這樣做肉瓦。目前最新版本是15.3.5。簽名放在服務(wù)器端完成胃惜,由服務(wù)器按照規(guī)則返回一個(gè)字符串泞莉。app端拿著這個(gè)串去調(diào)用支付寶支付。
需要注意的是蛹疯,支付需要app狀態(tài)是上線狀態(tài)戒财,否則只能使用沙箱測(cè)試。具體請(qǐng)看相關(guān)文檔捺弦。
3.支付關(guān)鍵代碼:
/**? ? * 支付寶支付? ? *@paramorderInfo? ? */privatevoidaliPay(finalString orderInfo){? ? ? ? Runnable payRunnable =newRunnable() {@Overridepublicvoidrun() {? ? ? ? ? ? ? ? PayTask alipay =newPayTask(getActivity());? ? ? ? ? ? ? ? Map result = alipay.payV2(orderInfo,true);? ? ? ? ? ? ? ? Message msg =newMessage();? ? ? ? ? ? ? ? msg.what =SDK_ALI_PAY_FLAG;? ? ? ? ? ? ? ? msg.obj = result;? ? ? ? ? ? ? ? mHandler.sendMessage(msg);? ? ? ? ? ? }? ? ? ? };? ? ? ? Thread payThread =newThread(payRunnable);? ? ? ? payThread.start();? ? }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
privateHandler mHandler =newHandler() {@SuppressWarnings("unused")publicvoidhandleMessage(Message msg) {switch(msg.what) {caseSDK_ALI_PAY_FLAG: {//支付寶支付PayResult payResult =newPayResult((Map) msg.obj);/**對(duì)于支付結(jié)果饮寞,請(qǐng)商戶依賴服務(wù)端的異步通知結(jié)果孝扛。同步通知結(jié)果,僅作為支付結(jié)束的通知幽崩。*/String resultInfo = payResult.getResult();// 同步返回需要驗(yàn)證的信息String resultStatus = payResult.getResultStatus();// 判斷resultStatus 為9000則代表支付成功if(TextUtils.equals(resultStatus,"9000")) {// 該筆訂單是否真實(shí)支付成功苦始,需要依賴服務(wù)端的異步通知。Toast.makeText(mContext,"支付成功", Toast.LENGTH_SHORT).show();? ? ? ? ? ? ? ? ? ? ? ? getActivity().finish();? ? ? ? ? ? ? ? ? ? }else{// 該筆訂單真實(shí)的支付結(jié)果慌申,需要依賴服務(wù)端的異步通知陌选。Toast.makeText(mContext,"支付失敗"+payResult.getResultStatus()+payResult.getResult(), Toast.LENGTH_LONG).show();? ? ? ? ? ? ? ? ? ? }break;? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ....? ? ? ? ? }? ? ? }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
如果你的項(xiàng)目中使用了混淆,還需做一下配置:
#支付寶支付混淆 sdk15.3.5-keep classcom.alipay.android.app.IAlixPay{*;}-keep classcom.alipay.android.app.IAlixPay$Stub{*;}-keep classcom.alipay.android.app.IRemoteServiceCallback{*;}-keep classcom.alipay.android.app.IRemoteServiceCallback$Stub{*;}-keep classcom.alipay.sdk.app.PayTask{ public *;}-keep classcom.alipay.sdk.app.AuthTask{ public *;}-dontwarncom.alipay.**
1
2
3
4
5
6
7
8
9
很簡(jiǎn)單蹄溉。有空完善整個(gè)流程說(shuō)明及詳細(xì)的流程說(shuō)明咨油。