接入銀聯支付
官方文件實在沒法看,我是根據視訊demo接入的。
接入的是手機控制元件支付,地址如下:
ofollow,noindex">https://open.unionpay.com/tjweb/acproduct/list?apiservId=450&tdsourcetag=s_pctim_aiomsg1、匯入UPPayAssistEx.jar,UPPayPluginExPro.jar到libs中
2、AndroidManifest.xml配置
<uses-permission android:name="org.simalliance.openmobileapi.SMARTCARD" /> <uses-permission android:name="android.permission.NFC" /> <uses-feature android:name="android.hardware.nfc.hce"/> <activity android:name="com.unionpay.uppay.PayActivity" android:configChanges="orientation|keyboardHidden|keyboard" android:screenOrientation="portrait"> </activity> <activity android:name="com.unionpay.UPPayWapActivity" android:configChanges="orientation|keyboardHidden|fontScale" android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize" > </activity>
3、呼叫以及回撥
//"00" - 啟動銀聯正式環境 "01" - 連線銀聯測試環境
//tn介面返回伺服器已經做好有返回最好,沒有請求http://101.231.204.84:8091/sim/getacptn (官方test請求地址)
UPPayAssistEx.startPay(mContext, null, null, tn,01);
回撥(官方demo程式碼有):
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (data == null) { return; } String msg = ""; /* * 支付控制元件返回字串:success、fail、cancel 分別代表支付成功,支付失敗,支付取消 */ String str = data.getExtras().getString("pay_result"); if (str.equalsIgnoreCase("success")) { // 如果想對結果資料驗籤,可使用下面這段程式碼,但建議不驗籤,直接去商戶後臺查詢交易結果 // result_data結構見c)result_data引數說明 if (data.hasExtra("result_data")) { String result = data.getExtras().getString("result_data"); try { JSONObject resultJson = new JSONObject(result); String sign = resultJson.getString("sign"); String dataOrg = resultJson.getString("data"); // 此處的verify建議送去商戶後臺做驗籤 // 如要放在手機端驗,則程式碼必須支援更新證書 boolean ret = verify(dataOrg, sign, mMode); if (ret) { // 驗籤成功,顯示支付結果 msg = "支付成功!"; } else { // 驗籤失敗 msg = "支付失敗!"; } } catch (JSONException e) { } } // 結果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.setCustomTitle(); builder.setNegativeButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); }
混淆程式碼
-keep class org.simalliance.openmobileapi.** {*;} -keep class org.simalliance.openmobileapi.service.** {*;} -keep class com.unionpay.** {*;}
有問題請加群:142739277