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

首頁 > 系統 > Android > 正文

如何在Android App中集成支付寶和微信支付功能

2019-10-22 18:12:14
字體:
來源:轉載
供稿:網友

前言

本文主要介紹如何在 Android App 里集成支付寶微信支付的功能,文中將實現的步驟一步步介紹的非常詳細,對同樣遇到這個問題的朋友相信會是一個很好的參考,下面話不多說了,來一起看看詳細的介紹吧。

集成支付寶支付

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

android,微信支付,支付寶

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

首先,去下載官方的 DEMO :

App支付客戶端DEMO&SDK

導入開發資源

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

android,微信支付,支付寶

然后進入工程的“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  } }}

后記

這是第一次接入支付寶支付,一開始還很起勁的參照一個庫去進行封裝,然后發現好像多此一舉,并且還不成功,和后臺捯飭了好久然后看Demo才弄出來。

參考:

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新营市| 定日县| 洪江市| 凤庆县| 普定县| 色达县| 炎陵县| 南川市| 三河市| 绵竹市| 祥云县| 岳西县| 梁平县| 石柱| 南岸区| 天峨县| 万宁市| 扬州市| 商河县| 桐乡市| 城步| 黎平县| 临高县| 花莲市| 漳浦县| 兴文县| 敦化市| 岢岚县| 广平县| 阜阳市| 马鞍山市| 黄龙县| 新河县| 城市| 本溪市| 太谷县| 宜宾市| 安国市| 宁化县| 绩溪县| 隆回县|