Android 集成支付寶支付

一.話不多說,直接上步驟。

1.導入jar包至項目Libs文件夾下。下載地址:https://docs.open.alipay.com/54/104509

image.png

2.在app的.gradle文件中引入此jar包

//支付寶支付
compile files('libs/alipaySdk-20170922.jar')

3.清單文件 即AndroidManifest.xml文件中聲明支付所需的activity

  <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>
  <activity
  android:name="com.alipay.sdk.app.H5AuthActivity"
  android:configChanges="orientation|keyboardHidden|navigation"
  android:exported="false"
  android:screenOrientation="behind"
  android:windowSoftInputMode="adjustResize|stateHidden" >
  </activity>

4.權(quán)限聲明。

 A.普通權(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" />

 B.高危權(quán)限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

5.資源導入完成,開始支付流程。主要分為三部曲。

  a.向服務器發(fā)送請求,服務器返回訂單信息

  b.調(diào)用支付寶異步請求發(fā)起支付

  c.處理回調(diào)結(jié)果

其中,b支付寶的異步請求代碼如下:

   Runnable payRunnable = new Runnable() {//要在子線程
        @Override
        public void run() {
            PayTask alipay = new PayTask(ShoppingActivity.this);
            Map<String, String> result = alipay.payV2
                    (t.getPaySdk(), true);//這里的t.getPaySdk() 即為支付信息, 服務器返回的一個String類型的字段
            Message msg = new Message();
            msg.what = SDK_PAY_FLAG;    //SDK_PAY_FLAG此為靜態(tài)常量,在Activity中聲明即可。      
                                        //private static final int SDK_PAY_FLAG = 1;
            msg.obj = result;
            mHandler.sendMessage(msg);
        }
    };
    Thread payThread = new Thread(payRunnable);
    payThread.start();

其中,c 處理回調(diào)結(jié)果代碼如下,:

  private Handler mHandler = new Handler() {
    @SuppressWarnings("unused")
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case SDK_PAY_FLAG: {
                @SuppressWarnings("unchecked")
                PayResult payResult = new PayResult((Map<String, String>) msg.obj);
                /**
                 對于支付結(jié)果,請商戶依賴服務端的異步通知結(jié)果。同步通知結(jié)果,僅作為支付結(jié)束的通知。
                 */
                String resultInfo = payResult.getResult();// 同步返回需要驗證的信息
                String resultStatus = payResult.getResultStatus();
                // 判斷resultStatus 為9000則代表支付成功
                if (TextUtils.equals(resultStatus, "9000")) {
                    // 該筆訂單是否真實支付成功,需要依賴服務端的異步通知。
                    Toast.makeText(ShoppingActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
                    ClimbTo(PaySuccessActivity.class);
                } else {
                    // 該筆訂單真實的支付結(jié)果,需要依賴服務端的異步通知。
                    Toast.makeText(ShoppingActivity.this, "支付失敗", Toast.LENGTH_SHORT).show();
                }
                break;
            }

            default:
                break;
        }
    }
};

6.支付完成,需要做混淆的小伙伴可在混淆文件中加入如下代碼:

  -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 *;}
  -keep class com.alipay.sdk.app.H5PayCallback {
      <fields>;
      <methods>;
  }
  -keep class com.alipay.android.phone.mrpc.core.** { *; }
  -keep class com.alipay.apmobilesecuritysdk.** { *; }
  -keep class com.alipay.mobile.framework.service.annotation.** { *; }
  -keep class com.alipay.mobilesecuritysdk.face.** { *; }
  -keep class com.alipay.tscenter.biz.rpc.** { *; }
  -keep class org.json.alipay.** { *; }
  -keep class com.alipay.tscenter.** { *; }
  -keep class com.ta.utdid2.** { *;}
  -keep class com.ut.device.** { *;}

二.支付寶官方集成步驟:https://docs.open.alipay.com/204/105296/

三.隨手分享,喜歡的朋友可以關注微信公眾號MiHomes,后續(xù)會有更多更好的博客推送給您。

另:歡迎指出不足,會進行更正

末尾:移動互聯(lián)&人力資源交流群,可加微信zy666128入群交流。


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容