接入银联支付

作者: 你的益达233 | 来源:发表于2018-12-04 09:06 被阅读26次

    官方文档实在没法看,我是根据视频demo接入的。
    接入的是手机控件支付,地址如下:
    https://open.unionpay.com/tjweb/acproduct/list?apiservId=450&tdsourcetag=s_pctim_aiomsg

    1、导入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

    相关文章

      网友评论

        本文标题:接入银联支付

        本文链接:https://www.haomeiwen.com/subject/qseucqtx.html