日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android 银联控件支付开发流程

發(fā)布時(shí)間:2023/12/14 Android 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 银联控件支付开发流程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

一:介紹

二:支付流程介紹

三:下載銀聯(lián)SDK

四:導(dǎo)入開(kāi)發(fā)SDK

4.1 如果項(xiàng)目開(kāi)發(fā)使用的Eclipse軟件,導(dǎo)入步驟如下:

4.2 如果項(xiàng)目開(kāi)發(fā)使用的Android Studio軟件,導(dǎo)入步驟如下:

除了導(dǎo)入jar包之外,還要導(dǎo)入資源包和依賴(lài)包,如下圖:

五:修改AndroidManifest.xml配置

六:支付接口調(diào)用


?

一:介紹

項(xiàng)目中要用到支付功能,需要支付寶支付、微信支付、銀聯(lián)支付,所以打算總結(jié)一下,方便以后的查閱,也方便大家, 用到的地方避免再次被坑。
今天我們就主要介紹一下銀聯(lián)控件支付,其他支付也寫(xiě)了對(duì)應(yīng)教程,并且給出了連接。

集成前首先要看看文檔,銀聯(lián)手機(jī)控件支付,里面包含需要的庫(kù)文件和詳細(xì)的文檔。鑒于小伙伴們不容易找到,好事做到底,送上截圖方便下載。

銀聯(lián)手機(jī)控件SDK

二:支付流程介紹

通過(guò)支付控件進(jìn)行交易的流程如下圖:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?業(yè)務(wù)流程圖

?

流程圖說(shuō)明:
  (1)用戶(hù)在客戶(hù)端中點(diǎn)擊購(gòu)買(mǎi)商品,客戶(hù)端發(fā)起訂單生成請(qǐng)求到商戶(hù)后臺(tái);
  (2)商戶(hù)后臺(tái)收到訂單生成請(qǐng)求后,按照《手機(jī)控件支付產(chǎn)品接口規(guī)范》組織并推送訂單信息至銀聯(lián)后臺(tái);
  (3)銀聯(lián)后臺(tái)接收訂單信息并檢查通過(guò)后,生成對(duì)應(yīng)交易流水號(hào)(即TN),并回復(fù)至商戶(hù)后臺(tái)(應(yīng)答要素:交易流水號(hào)等);
  (4)商戶(hù)后臺(tái)接收到交易流水號(hào)(TN),將交易流水號(hào)返回至客戶(hù)端;
  (5)客戶(hù)端通過(guò)交易流水號(hào)(TN)調(diào)用支付控件;
  (6)用戶(hù)在支付控件中輸入相關(guān)支付信息后,由支付控件向銀聯(lián)后臺(tái)發(fā)起支付請(qǐng)求;
  (7)支付成功后,銀聯(lián)后臺(tái)將支付結(jié)果通知給商戶(hù)后臺(tái);
  (8)銀聯(lián)后臺(tái)同時(shí)也將支付結(jié)果通知支付控件;
  (9)支付控件顯示支付結(jié)果并將支付結(jié)果返回至客戶(hù)端;
  此處備注:我們是通過(guò)后臺(tái)獲取訂單,我們可以根據(jù)商品id等信息通過(guò)后臺(tái)接口獲取訂單信息,對(duì)訂單支付流程的簽名加密過(guò)程后臺(tái)完成。

三:下載銀聯(lián)SDK

銀聯(lián)手機(jī)控件支付SDK

下載之后,找到兩個(gè)jar包,將UPPayAssistEx.jar和UPPayPluginExPro.jar添加到商戶(hù)應(yīng)用的工程中

SDK路徑

?

四:導(dǎo)入開(kāi)發(fā)SDK

導(dǎo)入sdk流程同支付寶導(dǎo)入流程一樣,這里就借用支付寶導(dǎo)入流程進(jìn)行介紹。

4.1 如果項(xiàng)目開(kāi)發(fā)使用的Eclipse軟件,導(dǎo)入步驟如下:

1.將alipaySDK-20150602.jar包放入商戶(hù)應(yīng)用工程的libs目錄下,如下圖。

?

2.進(jìn)入商戶(hù)應(yīng)用工程的Java Build Path,將libs目錄下的alipaySDK-20150602.jar導(dǎo)入,如下圖。

?

3.選中Order and Export,勾選alipaySDK-20150602.jar,如下圖。

203.png

將上圖的支付寶sdk更換成銀聯(lián)控件支付的兩個(gè)jar包即可

?

4.2 如果項(xiàng)目開(kāi)發(fā)使用的Android Studio軟件,導(dǎo)入步驟如下:

1.將銀聯(lián)SDK拷貝到項(xiàng)目libs文件夾下,如果沒(méi)有l(wèi)ibs文件夾,就新建一個(gè)。

?

2.如果sdk使用過(guò)程中,提示找不到文件。
進(jìn)行如下操作,選中sdk文件,右擊選擇Reveal in Finder

?

除了導(dǎo)入jar包之外,還要導(dǎo)入資源包和依賴(lài)包,如下圖:

?

五:修改AndroidManifest.xml配置

1.在商戶(hù)應(yīng)用工程的AndroidManifest.xml文件里面添加聲明:

<uses-libraryandroid:name="org.simalliance.openmobileapi"android:required="false" /><activityandroid:name="com.unionpay.uppay.PayActivity"android:configChanges="orientation|keyboardHidden"android:excludeFromRecents="true"android:label="@string/app_name"android:screenOrientation="portrait"android:windowSoftInputMode="adjustResize" /><activityandroid:name="com.unionpay.UPPayWapActivity"android:configChanges="orientation|keyboardHidden"android:screenOrientation="portrait"android:windowSoftInputMode="adjustResize" />

和權(quán)限聲明:

<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.NFC" /><uses-feature android:name="android.hardware.nfc.hce" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><uses-permission android:name="org.simalliance.openmobileapi.SMARTCARD" />

到這里,銀聯(lián)支付的前期配置已經(jīng)完成,下面需要完成支付代碼編寫(xiě)。

六:支付接口調(diào)用

  • 在點(diǎn)擊支付按鈕的點(diǎn)擊事件中,我提供的是從后端獲取訂單信息。
  • 需要在新線程中調(diào)用支付接口。代碼如下:
  • // 支付按鈕public void onClick(View view) {//起一個(gè)線程Runnable payRunnable = new Runnable() {@Overridepublic void run() {String data = null;PayBean payBean = new PayBean();payBean.setOrderTime("");String json = new Gson().toJson(payBean);//json為獲取后端結(jié)果時(shí)需要提供給后端訂單信息,例如:時(shí)間、金額、訂單屬性等Log.i("charge request", json);try {//data為后端返回?cái)?shù)據(jù),其中包括訂單字符串data = postJson(CHARGE_URL, json);} catch (IOException e) {e.printStackTrace();}// Json解析dataChargeBean charge = new Gson().fromJson(data, ChargeBean.class);String tn = (String)charge.getResult().getCredential();//在mHandler中處理微信調(diào)起支付和返回結(jié)果回調(diào)Message msg = new Message();msg.what = SDK_PAY_UPPAY;msg.obj = charge;mHandler.sendMessage(msg);}};// 必須異步調(diào)用Thread payThread = new Thread(payRunnable);payThread.start();}
  • 在mHandler中處理調(diào)起支付
  • private Handler mHandler = new Handler() {public void handleMessage(Message msg) {if (msg.what == SDK_PAY_UPPAY){String tn = (String) msg.obj;Log.i("charge", tn);int ret = UPPayAssistEx.startPay (ThirdActivity.this, null, null, tn, "01");}}};
  • 支付結(jié)果回調(diào)
  • 支付完成后,獲取支付控件支付結(jié)果,并添加相應(yīng)處理邏輯,只需實(shí)現(xiàn)調(diào)用Activity中的onActivityResult()方法即可,支付成功時(shí)會(huì)返回商戶(hù)客戶(hù)端支付結(jié)果和簽名信息。

    控件返回的結(jié)果信息僅作為參考,商戶(hù)訂單是否成功支付應(yīng)該以商戶(hù)后臺(tái)主動(dòng)到全渠道查詢(xún)的結(jié)果或者收到全渠道支付結(jié)果通知為準(zhǔn)。
    示例代碼如下:

    @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {/************************************************** 步驟3:處理銀聯(lián)手機(jī)支付控件返回的支付結(jié)果************************************************/if (data == null) {return;}String msg = "";/** 支付控件返回字符串:success、fail、cancel 分別代表支付成功,支付失敗,支付取消*/String str = data.getExtras().getString("pay_result");if (str.equalsIgnoreCase("success")) {// 支付成功后,extra中如果存在result_data,取出校驗(yàn)// result_data結(jié)構(gòu)見(jiàn)c)result_data參數(shù)說(shuō)明if (data.hasExtra("result_data")) {msg = "支付成功!";} else if (str.equalsIgnoreCase("fail")) {msg = "支付失敗!";} else if (str.equalsIgnoreCase("cancel")) {msg = "用戶(hù)取消了支付";}AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("支付結(jié)果通知");builder.setMessage(msg);builder.setInverseBackgroundForced(true);builder.setNegativeButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();}}

    以下三種為常用結(jié)果判斷

    success為支付成功
    fail為支付失敗
    cancel為取消支付

    總結(jié)

    以上是生活随笔為你收集整理的Android 银联控件支付开发流程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。