最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android接入支付寶和微信支付的方法

 更新時間:2019年06月07日 08:51:09   作者:xxq2dream  
這篇文章主要介紹了Android接入支付寶和微信支付的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

很多APP都需要支付功能,國內(nèi)一般就是支付寶和微信了。目前這2種接入方式對于APP端來說都已經(jīng)比較方便了,因為大部分的安全校驗之類的邏輯都在服務端。

APP端總結起來就是三步走:

  1. 接入支付的庫
  2. 接受服務端的訂單信息,發(fā)起調(diào)用支付寶和微信
  3. 接收支付寶和微信的回調(diào)

支付寶接入

首先是接入支付寶的aar文件

比較坑的是支付寶還需要下載aar文件導入,而不是gradle里面一行依賴就能搞定的。

我們需要去官網(wǎng)下載最新的DEMO和SDK,官網(wǎng)地址在這里

然后把下載下來的aar包,放到項目目錄下面的 libs 目錄下,通過下面的gradle依賴進來

// 支付寶 SDK AAR 包所需的配置
compile(name: 'alipaySdk-15.6.0-20190226104104-noUtdid', ext: 'aar')

調(diào)用支付寶SDK的方法發(fā)起支付

調(diào)用支付寶SDK發(fā)起支付,只需要一個參數(shù),就是服務端返回的訂單信息。所以這里的支付順序是先要我們調(diào)用服務端的接口創(chuàng)建一個訂單,然后服務端把訂單信息返回給我們,我們APP拿著這個訂單信息去調(diào)用支付寶支付。

//下面的orderInfo就是咱自己的服務端返回的訂單信息,里面除了訂單ID等,還有簽名等安全信息
//使用方式基本按照支付寶的DEMO里面就行了
    
final Runnable payRunnable = new Runnable() {

  @Override
  public void run() {
    PayTask alipay = new PayTask(PayDemoActivity.this);
    Map<String, String> result = alipay.payV2(orderInfo, true);
    Log.i("msp", result.toString());
    
    Message msg = new Message();
    msg.what = SDK_PAY_FLAG;
    msg.obj = result;
    mHandler.sendMessage(msg);
  }
};

// 必須異步調(diào)用
Thread payThread = new Thread(payRunnable);
payThread.start();

由上面的調(diào)用可見,支付寶是通過消息機制來接收回調(diào)的,所以我們得在Handler的消息中接收回調(diào)信息。

private Handler mHandler = new Handler() {
  @SuppressWarnings("unused")
  public void handleMessage(Message msg) {
    switch (msg.what) {
    case SDK_PAY_FLAG: {
      //這里接收支付寶的回調(diào)信息
      //需要注意的是,支付結果一定要調(diào)用自己的服務端來確定,不能通過支付寶的回調(diào)結果來判斷
      break;
    }
    default:
      break;
    }
  };
};

需要注意的是,支付結果一定要調(diào)用自己的服務端來確定,不能通過支付寶的回調(diào)結果來判斷!

其他

實際情況里需要考慮用戶手機上有沒有安裝過支付寶

  • 已經(jīng)安裝過支付寶,會直接調(diào)用支付寶支付
  • 沒有安裝支付寶,會調(diào)起支付寶的H5頁面支付

以上就是支付寶的接入了,步驟還是比較簡單的,也沒有什么坑。下面的微信支付就有坑了...

微信支付接入

接入微信的SDK

官網(wǎng)在這

相比于支付寶,微信接入SDK就比較簡單了,一行代碼搞定

//微信支付SDK
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

這里需要注意的是,微信的SDK里面支付和社交登錄等這些是集成在一起的,無法分開。所以如果項目里之前已經(jīng)集成過微信登錄的話就不需要重復集成了!

調(diào)用微信SDK發(fā)起支付

String content = ...  (這個是服務端返回的訂單信息)
//需要一個注冊微信支付的APPID
IWXAPI api = WXAPIFactory.createWXAPI(mContext, APPID);
JSONObject json = new JSONObject(content); 
PayReq req = new PayReq();
req.appId      = json.getString("appid");
req.partnerId    = json.getString("partnerid");
req.prepayId    = json.getString("prepayid");
req.nonceStr    = json.getString("noncestr");
req.timeStamp    = json.getString("timestamp");
req.packageValue  = json.getString("package");
req.sign      = json.getString("sign");
api.sendReq(req); //這里就發(fā)起調(diào)用微信支付了

接收微信支付的回調(diào)

可以看到上面的代碼和支付寶就不一樣了,沒有用Handler。

微信支付比較特殊的一個地方是需要我們用一個特殊的Activity來接收回調(diào)的信息。這個處理不好很容易就碰到接收不到回調(diào)的情況。

我們需要新建一個名叫 WXPayEntryActivity 的Activity,內(nèi)容的話可以參考微信SDK里面的。需要注意的有幾點:

WXPayEntryActivity這個Activity的路徑要符合要求,比如APP的包名是 com.niubi.company ,那這個Activity的路徑就需要是 com.niubi.company.wxapi.WXPayEntryActivity

這個WXPayEntryActivity當然需要在 AndroidManifest 文件中注冊

<activity
  android:name=".wxapi.WXPayEntryActivity"
  android:exported="true"
  android:launchMode="singleTop"/>

特別需要注意的是上面的 exported 屬性和 launchMode 屬性一定要加上,否則是接收不到回調(diào)的

我們在支付完成以后,一般是希望直接回到我們自己的應用里面。這個時候我們就需要讓上面的 WXPayEntryActivity 不顯示,否則就會閃一下或是停留在這個黑黑頁面。

不顯示的話要注意2點,一個是不要有布局,另一個就是要及時的 finish 掉這個Activity

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
  
  ...

  @Override
  public void onResp(BaseResp resp) {
    Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);

    if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
      <!--AlertDialog.Builder builder = new AlertDialog.Builder(this);-->
      <!--builder.setTitle(R.string.app_tip);-->
      <!--builder.setMessage(getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode)));-->
      <!--builder.show();-->
      //這里肯定不能是像上面的DEMO一樣彈出對話框了,而是通知我們發(fā)起支付調(diào)用的頁面
      //然后及時finish掉這個頁面,貼個偽代碼:
      sendPayNotice()
      finish();
    }
  }
 }

其他

同樣的,微信支付成功與否,也要通過調(diào)用自己的服務端來查看,而不能依賴微信的回調(diào)狀態(tài),這個要切記。

總結

以上就是微信和支付寶的支付接入,基本上按照上述步驟都不會有問題了。特別是微信支付,一定要特別注意文中提到的注意點,那些都是踩過的坑??!

相關文章

  • Android中實現(xiàn)詞組高亮TextView方法示例

    Android中實現(xiàn)詞組高亮TextView方法示例

    高亮顯示大家應該都不陌生,在開發(fā)中經(jīng)常會遇到這個需求,所以下面這篇文章主要給大家介紹了關于Android中實現(xiàn)詞組高亮TextView的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • 簡單介紹Android開發(fā)中的Activity控件的基本概念

    簡單介紹Android開發(fā)中的Activity控件的基本概念

    這篇文章主要介紹了Android開發(fā)中的Activity控件的基本概念,Activity控件的使用是安卓開發(fā)的基礎之一,需要的朋友可以參考下
    2015-12-12
  • android PopupWindow 和 Activity彈出窗口實現(xiàn)方式

    android PopupWindow 和 Activity彈出窗口實現(xiàn)方式

    本人小菜一個。目前只見過兩種彈出框的實現(xiàn)方式,第一種是最常見的PopupWindow,第二種也就是Activity的方式是前幾天才見識過,需要的朋友可以參考下
    2012-11-11
  • 詳解Android Studio Git分支實踐

    詳解Android Studio Git分支實踐

    這篇文章主要介紹了Android Studio Git分支實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Android 3D旋轉(zhuǎn)動畫效果實現(xiàn)分解

    Android 3D旋轉(zhuǎn)動畫效果實現(xiàn)分解

    如何實現(xiàn)View的3D旋轉(zhuǎn)效果,實現(xiàn)的主要原理就是圍繞Y軸旋轉(zhuǎn),同時在Z軸方面上有一個深入的縮放,具體實現(xiàn)代碼如下,感興趣的朋友可以參考下哈
    2013-06-06
  • Android 將文件下載到指定目錄的實現(xiàn)代碼

    Android 將文件下載到指定目錄的實現(xiàn)代碼

    本文通過實例代碼給大家介紹了android將文件下載到指定目錄的實現(xiàn)方法,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
    2017-06-06
  • Android實現(xiàn)登錄郵箱的自動補全功能

    Android實現(xiàn)登錄郵箱的自動補全功能

    這篇文章主要為大家詳細介紹了Android實現(xiàn)登錄郵箱的自動補全功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Android自定義開關按鈕源碼解析

    Android自定義開關按鈕源碼解析

    這篇文章主要為大家詳細解析了Android自定義開關源碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 理解Android系統(tǒng)Binder機制

    理解Android系統(tǒng)Binder機制

    這篇文章主要為大家介紹了Android系統(tǒng)Binder機制,幫助大家理解Binder機制,感興趣的朋友可以參考一下
    2016-05-05
  • Android OkHttp代理與路由的徹底理解

    Android OkHttp代理與路由的徹底理解

    這篇文章主要為大家介紹了Android OkHttp代理與路由的徹底理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03

最新評論

新乡市| 新绛县| 安徽省| 望奎县| 布拖县| 周至县| 东台市| 苏州市| 明水县| 河曲县| 青铜峡市| 冕宁县| 宁明县| 时尚| 班玛县| 秦皇岛市| 客服| 从江县| 奉新县| 乐亭县| 田林县| 大冶市| 淄博市| 枞阳县| 屏东县| 桐城市| 大荔县| 芦山县| 贺兰县| 柳江县| 南平市| 奉节县| 高台县| 天门市| 盐源县| 托里县| 桃江县| 耒阳市| 郸城县| 商洛市| 叶城县|