国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android App支付系列(二):支付寶SDK接入詳細指南(附官方支付demo)

2019-12-12 04:30:34
字體:
供稿:網(wǎng)友

一家移動互聯(lián)網(wǎng)公司,說到底,要盈利總是需要付費用戶的,自己開發(fā)支付系統(tǒng)對于資源有限的公司來說顯然不太明智,國內(nèi)已經(jīng)有多家成熟的移動支付提供商,阿里就是其中之一。

筆者在此總結(jié)了下阿里旗下支付寶Android SDK支付的接入流程,供后來者參考。

接入流程如下:

1 簽約成為支付寶商戶

簽約地址:https://b.alipay.com/, 

只有成為簽約商戶的開發(fā)者才能具備集成支付寶app支付的資格。 

簽約資料:1)營業(yè)執(zhí)照 2)APP說明文檔 3)商戶經(jīng)營信息、商戶聯(lián)系人等信息 

必要時還需提供APP apk以備審核。審核通過后即可進行代碼集成。

審核通過后,可得到支付寶分配的商戶號等信息。

2 客戶端代碼集成準備

2.1 導入jar包資源

目前最新版支付寶開發(fā)jar包下載地址:http://xiazai.VeVB.COm/201611/yuanma/alipaySdk_jb51.jar

下載后將之拷貝libs目錄,Eclipse會自動添加依賴,Android Studio需在app的gradle中添加一行

compile files('libs/alipaySdk-20160223.jar')

點擊右上角:Sync Now,稍等片刻

2.2 修改AndroidManifest.xml清單

聲明必要Activity

<activity      android:name="com.alipay.sdk.app.H5PayActivity"      android:configChanges="orientation|keyboardHidden|navigation"      android:exported="false"      android:screenOrientation="behind" ></activity><activity      android:name="com.alipay.sdk.auth.AuthActivity"      android:configChanges="orientation|keyboardHidden|navigation"      android:exported="false"      android:screenOrientation="behind" > </activity>

 添加必要權(quán)限

 <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" />

2.3 添加支付寶混淆規(guī)則

-libraryjars libs/alipaySDK-20160223.jar-keep class com.alipay.android.app.IAlixPay{*;}-keep class com.alipay.android.app.IAlixPay$Stub{*;}-keep class com.alipay.android.app.IRemoteServiceCallback{*;}-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}-keep class com.alipay.sdk.app.PayTask{ public *;}-keep class com.alipay.sdk.app.AuthTask{ public *;}

3 客戶端代碼集成

支付寶交互流程示意圖

流程圖白話版解釋

1.app攜帶支付信息調(diào)用支付接口請求支付寶客戶端調(diào)起支付界面;

2.用戶操作,輸入密碼支付,支付成功;直接返回取消支付;出現(xiàn)錯誤,支付失敗;進入支付界面,但輸入密碼支付,支付待確認;

3.支付寶客戶端將支付結(jié)果告訴app客戶端,商戶服務(wù)器通知app服務(wù)器支付結(jié)果;

4.app客戶端處理支付結(jié)果;

5.app服務(wù)器處理支付結(jié)果。

支付寶的支付流程較之微信的支付流程圖少了一步app服務(wù)器端訂單的生成,但是在其demo代碼中是推薦使用app服務(wù)器進行sign簽名過程的,于是筆者索性是按照的微信支付的流程(微信支付交互流程)去集成的。

•客戶端代碼得到用戶購買的商品信息,將之傳給自己公司app服務(wù)器,參數(shù)包含但不限于以下:

params.put("money", payMoney);// 商品金額,單位:元params.put("goodsname", goodsName);// 商品名稱

注意:支付寶支付的人民幣單位和微信支付,銀聯(lián)支付稍有不同,需以:元 作為支付單位。其他兩者支付單位為:分
 其他參數(shù)均交給咱們app服務(wù)器處理即可,詳細參數(shù)請點擊:https://doc.open.alipay.com/doc2/detail?treeId=59&articleId=103663&docType=1

•app服務(wù)器參考上述詳細參數(shù)鏈接,得到sign(支付簽名信息)字段并返回sign字段給手機客戶端;

•手機客戶端使用sign簽名信息在非UI線程調(diào)起支付客戶端進行支付;
 用戶操作:輸入密碼進行支付;返回鍵取消支付;進入支付界面,用戶未進行支付,用戶返回,待支付;網(wǎng)絡(luò)無連接支付失敗等;

•客戶端得到支付結(jié)果;

•支付寶服務(wù)器異步通知咱們公司app服務(wù)器支付結(jié)果(服務(wù)器的工作,與客戶端無關(guān))

這樣做的好處:簽名邏輯在服務(wù)器完成,app無需暴露公鑰和私鑰,更安全。同時也是demo中的推薦做法。

更詳細的支付寶接入交互流程解釋請點擊:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.7WO30X&treeId=59&articleId=103658&docType=1

4 客戶端代碼示例

支付調(diào)起代碼(須在子線程)

new Thread() {          @Override          public void run() {            super.run();            PayTask payTask = new PayTask(mActivity);            String result = payTask.pay(signInfo, true);            Message message = mHandler.obtainMessage();            message.what = PAY_RESULT;            message.obj = result;            mHandler.sendMessage(message);          }        }.start();

支付處理代碼(UI線程)
 

 /*支付寶支付結(jié)果碼*/  private static final String PAY_OK = "9000";// 支付成功  private static final String PAY_WAIT_CONFIRM = "8000";// 交易待確認  private static final String PAY_NET_ERR = "6002";// 網(wǎng)絡(luò)出錯  private static final String PAY_CANCLE = "6001";// 交易取消  private static final String PAY_FAILED = "4000";// 交易失敗  /*內(nèi)部類,處理支付寶支付結(jié)果*/  static class AliPayHandler extends Handler {    private SoftReference<PayActivity> activitySoftReference;// 使用軟引用防止內(nèi)存泄漏    public AliPayHandler(PayActivity activity) {      activitySoftReference = new SoftReference<PayActivity>(activity);    }    @Override    public void handleMessage(Message msg) {      super.handleMessage(msg);      PayActivity activity = activitySoftReference.get();      AliPayResult payResult = new AliPayResult((String) msg.obj);      String resutStatus = payResult.getResultStatus();      Log.d(TAG, "statusCode = " + resutStatus);      if (resutStatus.equals(PAY_OK)) {        activity.paySuccessed();      } else if (resutStatus.equals(PAY_CANCLE)) {        activity.payCanceled();      } else if (resutStatus.equals(PAY_NET_ERR)) {        activity.payFailed(NETWORK_ERR);      } else if (resutStatus.equals(PAY_WAIT_CONFIRM)) {        activity.payWaitConfirm();      } else {        activity.payFailed(UNKNOW_ERR);      }    }  }

注:AliPayResult.Java來自支付寶demo中的PayResult.java

至此,集成支付寶SDK結(jié)束。祝各位集成支付寶支付成功!

結(jié)束語

app服務(wù)器接入注意事項:官方給出的填寫rsa公鑰的地址有誤,無論填寫什么都提示:公鑰格式錯誤。需要移步至:支付寶公鑰填寫正確地址填寫

按照慣例,附上支付寶SDK接入的官方demo下載鏈接:https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 青川县| 凌云县| 罗田县| 沙洋县| 新化县| 太湖县| 峡江县| 西城区| 通许县| 平度市| 南开区| 二连浩特市| 莱西市| 湘阴县| 安泽县| 凌云县| 通河县| 元朗区| 万年县| 随州市| 鄄城县| 东明县| 贡山| 菏泽市| 大渡口区| 石家庄市| 徐水县| 呈贡县| 利津县| 邵阳市| 沾益县| 湖南省| 正阳县| 错那县| 屯门区| 东丰县| 池州市| 长海县| 祁阳县| 恭城| 桃园市|