亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣在Android App中集成支付寶和微信支付功能

發布時間:2021-02-18 10:47:22 來源:億速云 閱讀:275 作者:小新 欄目:移動開發

這篇文章主要介紹了怎樣在Android App中集成支付寶和微信支付功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

集成支付寶支付

沒想到現在 App 里集成支付寶是這么的簡單,我還折騰了好久…

怎樣在Android App中集成支付寶和微信支付功能

好了,開始,假設你已經完成了支付寶那些繁雜的申請啥的工作,進入開發了。

首先,去下載官方的 DEMO :

App支付客戶端DEMO&SDK。

導入開發資源

解壓后把里面的 jar 包拿出來放到你工程的 lib 目錄下,如圖

怎樣在Android App中集成支付寶和微信支付功能

然后進入工程的“Project Structure”,在app module下選擇“File dependency”,將libs目錄下的alipaySDK-xxxxxxxx.jar導入,或者在app module下的build.gradle下手動添加依賴,如下代碼所示:

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

修改 AndroidManifest 文件

復制進去就行

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

聲明權限

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

好了,準備工作基本完成。

支付接口的調用

這里參考下給的 Demo。
由于支付包的 Demo 給的是本地加密的方式,并且不推薦使用這種方法,所以我們只需要用的其中的部分代碼就好了。
首先,把 PayResult.java這個類復制到你的項目里。代碼如下:

public class PayResult {
 private String resultStatus;
 private String result;
 private String memo;
 public PayResult(Map<String, String> rawResult) {
  if (rawResult == null) {
   return;
  }
  for (String key : rawResult.keySet()) {
   if (TextUtils.equals(key, "resultStatus")) {
    resultStatus = rawResult.get(key);
   } else if (TextUtils.equals(key, "result")) {
    result = rawResult.get(key);
   } else if (TextUtils.equals(key, "memo")) {
    memo = rawResult.get(key);
   }
  }
 }
 @Override
 public String toString() {
  return "resultStatus={" + resultStatus + "};memo={" + memo
    + "};result={" + result + "}";
 }
 /**
  * @return the resultStatus
  */
 public String getResultStatus() {
  return resultStatus;
 }
 /**
  * @return the memo
  */
 public String getMemo() {
  return memo;
 }
 /**
  * @return the result
  */
 public String getResult() {
  return result;
 }
}

然后調支付接口。PayTask對象主要為商戶提供訂單支付、查詢功能,及獲取當前開發包版本號。獲取PayTask支付對象調用支付(支付行為需要在獨立的非ui線程中執行),

private static final int SDK_PAY_FLAG = 1;
// 訂單信息
final String orderInfo = info; 
Runnable payRunnable = new Runnable() {
@Override
 public void run() {
  PayTask alipay = new PayTask(PayDemoActivity.this);
  Map<String, String> result = alipay.payV2(orderInfo, true);
  Message msg = new Message();
  msg.what = SDK_PAY_FLAG;
  msg.obj = result;
  mHandler.sendMessage(msg);
 }
};
Thread payThread = new Thread(payRunnable);
payThread.start();

注意下 orderInfo這個變量,這個值是由通過向后臺請求返回的值。

這里需要后臺注意的是,寫的時候看好App支付請求參數說明這個文檔。

然后是支付結果的獲取與處理。

@SuppressLint("HandlerLeak")
 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);
    /**
     對于支付結果,請商戶依賴服務端的異步通知結果。同步通知結果,僅作為支付結束的通知。
     */
    String resultInfo = payResult.getResult();// 同步返回需要驗證的信息
    String resultStatus = payResult.getResultStatus();
    // 判斷resultStatus 為9000則代表支付成功
    if (TextUtils.equals(resultStatus, "9000")) {
     // 該筆訂單是否真實支付成功,需要依賴服務端的異步通知。
     Toast.makeText(PayDemoActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
    } else {
     // 該筆訂單真實的支付結果,需要依賴服務端的異步通知。
     Toast.makeText(PayDemoActivity.this, "支付失敗", Toast.LENGTH_SHORT).show();
    }
    break;
   }
   default:
    break;
   }
  };
 };

然后就好了。

結束。

集成微信支付

微信支付還是好弄的,就是先該注冊的注冊,該申請的申請,這個不是本文的重點。

因為微信有個支付回調的問題,我的做法就是在項目的x.x.x.wxapi包路徑中實現 WXPayEntryActivity 類(切記包名或類名一定要一致,否則會造成無法回調)。代碼如下:

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
 private static final String TAG = "WXPayEntryActivity";
 private IWXAPI api;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.pay_result);
  
  api = WXAPIFactory.createWXAPI(this, Constants.APP_ID);
  api.handleIntent(getIntent(), this);
  /*
  * 在這里去做跟后臺服務器的請求,
  * 獲取需要的簽名信息,然后調起微信支付。
  **/
 }
 @Override
 protected void onNewIntent(Intent intent) {
  super.onNewIntent(intent);
  setIntent(intent);
  api.handleIntent(intent, this);
 }
 @Override
 public void onReq(BaseReq req) {
 }
 @Override
 public void onResp(BaseResp resp) {
  Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
  switch(resp.errCode){
   case 0:
   //支付成功,做自己想做的處理
   break;
   case -1:
   //可能的原因:簽名錯誤、未注冊APPID、項目設置APPID不正確、注冊的APPID與設置的不匹配、其他異常等。
   break;
   case -2:
   //用戶取消.無需處理。發生場景:用戶不支付了,點擊取消,返回APP。
   break;
   default:
   break
  }
 }
}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“怎樣在Android App中集成支付寶和微信支付功能”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

林口县| 桃园县| 德钦县| 姜堰市| 武鸣县| 中江县| 惠州市| 普宁市| 天水市| 栾城县| 大埔县| 孝昌县| 漾濞| 遂平县| 漠河县| 拜城县| 周至县| 巢湖市| 六枝特区| 新巴尔虎左旗| 武清区| 宜丰县| 大邑县| 韩城市| 金沙县| 南投县| 油尖旺区| 呼伦贝尔市| 虞城县| 德州市| 增城市| 枝江市| 仙游县| 东乡| 古丈县| 汕尾市| 于都县| 财经| 宁南县| 冷水江市| 视频|