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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 银联控件支付开发流程

發布時間:2023/12/14 Android 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 银联控件支付开发流程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一:介紹

二:支付流程介紹

三:下載銀聯SDK

四:導入開發SDK

4.1 如果項目開發使用的Eclipse軟件,導入步驟如下:

4.2 如果項目開發使用的Android Studio軟件,導入步驟如下:

除了導入jar包之外,還要導入資源包和依賴包,如下圖:

五:修改AndroidManifest.xml配置

六:支付接口調用


?

一:介紹

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

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

銀聯手機控件SDK

二:支付流程介紹

通過支付控件進行交易的流程如下圖:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?業務流程圖

?

流程圖說明:
  (1)用戶在客戶端中點擊購買商品,客戶端發起訂單生成請求到商戶后臺;
  (2)商戶后臺收到訂單生成請求后,按照《手機控件支付產品接口規范》組織并推送訂單信息至銀聯后臺;
  (3)銀聯后臺接收訂單信息并檢查通過后,生成對應交易流水號(即TN),并回復至商戶后臺(應答要素:交易流水號等);
  (4)商戶后臺接收到交易流水號(TN),將交易流水號返回至客戶端;
  (5)客戶端通過交易流水號(TN)調用支付控件;
  (6)用戶在支付控件中輸入相關支付信息后,由支付控件向銀聯后臺發起支付請求;
  (7)支付成功后,銀聯后臺將支付結果通知給商戶后臺;
  (8)銀聯后臺同時也將支付結果通知支付控件;
  (9)支付控件顯示支付結果并將支付結果返回至客戶端;
  此處備注:我們是通過后臺獲取訂單,我們可以根據商品id等信息通過后臺接口獲取訂單信息,對訂單支付流程的簽名加密過程后臺完成。

三:下載銀聯SDK

銀聯手機控件支付SDK

下載之后,找到兩個jar包,將UPPayAssistEx.jar和UPPayPluginExPro.jar添加到商戶應用的工程中

SDK路徑

?

四:導入開發SDK

導入sdk流程同支付寶導入流程一樣,這里就借用支付寶導入流程進行介紹。

4.1 如果項目開發使用的Eclipse軟件,導入步驟如下:

1.將alipaySDK-20150602.jar包放入商戶應用工程的libs目錄下,如下圖。

?

2.進入商戶應用工程的Java Build Path,將libs目錄下的alipaySDK-20150602.jar導入,如下圖。

?

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

203.png

將上圖的支付寶sdk更換成銀聯控件支付的兩個jar包即可

?

4.2 如果項目開發使用的Android Studio軟件,導入步驟如下:

1.將銀聯SDK拷貝到項目libs文件夾下,如果沒有libs文件夾,就新建一個。

?

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

?

除了導入jar包之外,還要導入資源包和依賴包,如下圖:

?

五:修改AndroidManifest.xml配置

1.在商戶應用工程的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" />

和權限聲明:

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

到這里,銀聯支付的前期配置已經完成,下面需要完成支付代碼編寫。

六:支付接口調用

  • 在點擊支付按鈕的點擊事件中,我提供的是從后端獲取訂單信息。
  • 需要在新線程中調用支付接口。代碼如下:
  • // 支付按鈕public void onClick(View view) {//起一個線程Runnable payRunnable = new Runnable() {@Overridepublic void run() {String data = null;PayBean payBean = new PayBean();payBean.setOrderTime("");String json = new Gson().toJson(payBean);//json為獲取后端結果時需要提供給后端訂單信息,例如:時間、金額、訂單屬性等Log.i("charge request", json);try {//data為后端返回數據,其中包括訂單字符串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中處理微信調起支付和返回結果回調Message msg = new Message();msg.what = SDK_PAY_UPPAY;msg.obj = charge;mHandler.sendMessage(msg);}};// 必須異步調用Thread payThread = new Thread(payRunnable);payThread.start();}
  • 在mHandler中處理調起支付
  • 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");}}};
  • 支付結果回調
  • 支付完成后,獲取支付控件支付結果,并添加相應處理邏輯,只需實現調用Activity中的onActivityResult()方法即可,支付成功時會返回商戶客戶端支付結果和簽名信息。

    控件返回的結果信息僅作為參考,商戶訂單是否成功支付應該以商戶后臺主動到全渠道查詢的結果或者收到全渠道支付結果通知為準。
    示例代碼如下:

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

    以下三種為常用結果判斷

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

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。