安卓第三方支付之银联支付

来源:互联网 发布:剑网3捏脸数据女 编辑:程序博客网 时间:2024/04/30 16:12

进入银联支付的开发者平台:https://open.unionpay.com/ajweb/help/file ,下载银联最新sdk



先看下支付流程:


流程图说明:
(1)用户在客户端中点击购买商品,客户端发起订单生成请求到商户后台;
(2)商户后台收到订单生成请求后,按照《手机控件支付产品接口规范》组织并推送订单信息至银联后台;
(3)银联后台接收订单信息并检查通过后,生成对应交易流水号(即TN),并回复交易流水号至商户后台(应答要素:交易流水号等);
(4)商户后台接收到交易流水号,将交易流水号返回给客户端;
(5)客户端通过交易流水号(TN)调用支付控件;
(6)用户在支付控件中输入相关支付信息后,由支付控件向银联后台发起支付请求;
(7)支付成功后,银联后台将支付结果通知给商户后台;
(8)银联将支付结果通知支付控件;
(9)支付控件显示支付结果并将支付结果返回给客户端;

可以看到银联的Demo是es的,那在as里面如何导包呢?
es中:


as中:


接下来,在工程的AndroidManifest.xml文件中注册支付插件使用的Activity和权限,接口文档中有,就不贴出来了。

post请求到流水账号,再调用支付控件,并处理支付结果

// “00” – 银联正式环境// “01” – 银联测试环境,该环境中不发生真实交易String serverMode = "01";UPPayAssistEx.startPay (activity, null, null, tn, serverMode);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (data == null) {            return;        }        String str = data.getExtras().getString("pay_result");        if (str.equalsIgnoreCase(R_SUCCESS)) {            // 支付成功后,extra中如果存在result_data,取出校验// result_data结构见c)result_data参数说明            if (data.hasExtra("result_data")) {                String sign = data.getExtras().getString("result_data");// 验签证书同后台验签证书// 此处的verify,商户需送去商户后台做验签                 if (verify(sign)) {                    //验证通过后,显示支付结果                    showResultDialog(" 支付成功! ");                } else {// 验证不通过后的处理// 建议通过商户后台查询支付结果                }            } else {// 未收到签名信息// 建议通过商户后台查询支付结果            }        } else if (str.equalsIgnoreCase(R_FAIL)) {            showResultDialog(" 支付失败! ");        } else if (str.equalsIgnoreCase(R_CANCEL)) {            showResultDialog(" 你已取消了本次订单的支付! ");        }    }
银联支付还提供测试账号,相比支付宝,微信支付简单些。


0 0
原创粉丝点击