需要内容:

data.bin 、各型号的libentryexpro.so和libuptsmaddon.so

UPPayAssistEx.jar UPPayPluginExStd.jar(建议全部使用标准版)

编译版本建议19以上

开发步骤:

1、将所需bin文件,jar包,so文件拷入项目中,并AddLibrary

2、在清单文件中添加权限和银联支付插件权限

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

3、清单文件中注册银联支付activity(直接复制)

<activity
    android:name="com.unionpay.uppay.PayActivity"
    android:configChanges="orientation|keyboardHidden"
    android:excludeFromRecents="true"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="adjustResize" />

 

4、选择商品下单,将订单信息传给服务器,服务器返回交易流水号tn

5、调用支付控件开始支付:

serverMode 00表示正式环境,01表示测试环境

String serverMode = "01";
String tn="";// 从服务器获取的流水号
UPPayAssistEx.startPayByJAR(MainActivity.this,   

PayActivity.class, "", "", tn, serverMode);

 

6、Activity的onActivityResult中获取支付结果

收到控件返回结果后,建议无视结果中的内容和签名信息,直接到自己的后台查状态,如果后台此时未收到全渠道的后台通知,则主动发起查询接口到全渠道查状态。这样可既保证APP中展示的订单状态和后台记录一致,也可及时更新后台记录的订单状态。

如仍希望使用控件返回的信息,验签时建议送到后台去验签;如果需要在APP中验签,则需要自行实现验签公钥更新的机制,否则银联更新**后会验签失败。

示例代码如下:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.e(TAG, "onActivityResult: ");
    if (data == null) {
        Log.e(TAG, "onActivityResult: 是空");
        return;
    }

    String str = data.getExtras().getString("pay_result");
    if (str.equalsIgnoreCase("success")) {
        Log.e(TAG, "onActivityResult: 支付成功!");
    } else if (str.equalsIgnoreCase("fail")) {
        Log.e(TAG, "onActivityResult: 支付失败!");
    } else if (str.equalsIgnoreCase("cancel")) {
        Log.e(TAG, "onActivityResult: 支付取消!");
    }
}

 

result_data参数说明:

参数说明:

sign —— 签名后做Base64的数据

data —— 用于签名的原始数据

data中原始数据结构:

pay_result —— 支付结果successfailcancel

tn          —— 订单号

result_data示例如下:

{  "sign" : "Xo/pgkzSJSlRTX2e+CjW/k1IjIV1newqfb7p1sDIpK/yPQv9p1jQAdAdKwhBwtyjO3tkFC6I2aLcTaxLHlYQx6/xw9QE0eumkVqAhypk/VyoDWZXxWske+EcduwEkBTxyIgA0ZsbKlpS1JxsciOc6bT+f36jTLa05ZAKZTVErg9sAG3wMjae1TyKd2511Rvvi+tuihYgOmwuMnKzrqksEyqc69wloqi34qx0YqFolMeqQ1UfoglUhZy6s2s4ChKcxHjAFjp/rU/7iHudjAIGtO7+ySahArmw6ltuIxFWYEv*n5xI3Ceur1d11NBphK62it7kBZ1laxUFI98DzalVFQ==",  "data" : "pay_result=success&tn=899394085660622736701&cert_id=68759585097"}

支付流程图:

Android银联控件支付开发流程


相关文章:

  • 2021-08-07
  • 2021-04-07
  • 2022-12-23
  • 2022-01-31
  • 2021-12-04
猜你喜欢
  • 2021-05-12
  • 2021-09-27
  • 2021-04-22
  • 2021-12-20
  • 2021-12-26
  • 2021-06-15
  • 2021-11-30
相关资源
相似解决方案