欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Android银联支付Sdk_银联支付接口开发集成Demo下载

程序员文章站 2022-02-16 11:57:01
...

最近工都名车的项目需要使用银联支付、没办法去研究了一下、觉得可以记录一下、希望有需求的哥们可以直接使用、银联手机支付控件、主要为合作商户的手机客户端提供安全、便捷的支付服务、用户通过在支付控件中输入银行卡卡号、手机号、密码借记卡和预付卡、或者CVN2、有效期信用卡、验证码等要素完成支付

Android银联支付Sdk_银联支付接口开发集成Demo下载


支付流程说明

1、用户在客户端中点击购买商品、客户端发起订单生成请求到商户后台

2、商户后台收到订单生成请求后、按照《手机控件支付产品接口规范》组织并推送订单信息至银联后台

3、银联后台接收订单信息并检查通过后、生成对应交易流水号即TN、并回复交易流水号至商户后台应答要素:交易流水号等

4、商户后台接收到交易流水号、将交易流水号返回给客户端

5、客户端通过交易流水号TN、调用支付控件

6、用户在支付控件中输入相关支付信息后、由支付控件向银联后台发起支付请求

7、支付成功后、银联后台将支付结果通知给商户后台

8、银联将支付结果通知支付控件

9、支付控件显示支付结果并将支付结果返回给客户端


发起支付并检测支付控件

@Override
public void doStartUnionPayPlugin(Activity activity, String tn, String mode) {
    // mMode参数解释:
    // 0 - 启动银联正式环境
    // 1 - 连接银联测试环境
    int ret = UPPayAssistEx.startPay(this, null, null, tn, mode);
    if (ret == PLUGIN_NEED_UPGRADE || ret == PLUGIN_NOT_INSTALLED) {
        // 需要重新安装控件
        Log.e(LOG_TAG, " plugin not found or need upgrade!!!");

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("提示");
        builder.setMessage("完成购买需要安装银联支付控件,是否安装?");

        builder.setNegativeButton("确定",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        UPPayAssistEx.installUPPayPlugin(APKActivity.this);
                        dialog.dismiss();
                    }
                });

        builder.setPositiveButton("取消",
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
        builder.create().show();

    }
    Log.e(LOG_TAG, ""   ret);
}


确认支付结果

@Override
protected 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")) {
            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) {
            }
        } else {
            // 未收到签名信息
            // 建议通过商户后台查询支付结果
            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   requestCode);
    builder.setInverseBackgroundForced(true);
    // builder.setCustomTitle();
    builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    builder.create().show();
}


银联支付是需要后台下单获取流水号的、所以是需要后台的代码、这里也分享一下、后台的代码和开发文档

后台代码及开发文档下载地址:点击下载银联支付后台开发包源码 密码: kvcy

银联支付app开发包源代码下载链接: 点击下载银联支付app开发包源码 密码: 9ptx