Android接入支付寶和微信支付的方法-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Android接入支付寶和微信支付的方法,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

為劍閣等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及劍閣網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站制作、劍閣網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

前言

很多APP都需要支付功能,國內(nèi)一般就是支付寶和微信了。目前這2種接入方式對于APP端來說都已經(jīng)比較方便了,因?yàn)榇蟛糠值陌踩r?yàn)之類的邏輯都在服務(wù)端。

APP端總結(jié)起來就是三步走:

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

支付寶接入

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

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

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

然后把下載下來的aar包,放到項(xiàng)目目錄下面的 libs 目錄下,通過下面的gradle依賴進(jìn)來

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

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

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

//下面的orderInfo就是咱自己的服務(wù)端返回的訂單信息,里面除了訂單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)用可見,支付寶是通過消息機(jī)制來接收回調(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)信息      //需要注意的是,支付結(jié)果一定要調(diào)用自己的服務(wù)端來確定,不能通過支付寶的回調(diào)結(jié)果來判斷      break;    }    default:      break;    }  };};

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

其他

實(shí)際情況里需要考慮用戶手機(jī)上有沒有安裝過支付寶

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

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

微信支付接入

接入微信的SDK

官網(wǎng)在這

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

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

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

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

String content = ...  (這個(gè)是服務(wù)端返回的訂單信息)//需要一個(gè)注冊微信支付的APPIDIWXAPI 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。

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

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

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

這個(gè)WXPayEntryActivity當(dāng)然需要在 AndroidManifest 文件中注冊

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

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

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

不顯示的話要注意2點(diǎn),一個(gè)是不要有布局,另一個(gè)就是要及時(shí)的 finish 掉這個(gè)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)用的頁面      //然后及時(shí)finish掉這個(gè)頁面,貼個(gè)偽代碼:      sendPayNotice()      finish();    }  } }

其他

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

關(guān)于Android接入支付寶和微信支付的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

本文題目:Android接入支付寶和微信支付的方法-創(chuàng)新互聯(lián)
瀏覽路徑:http://muchs.cn/article44/pgdee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司外貿(mào)網(wǎng)站建設(shè)、企業(yè)建站、搜索引擎優(yōu)化、微信小程序網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)