先来一张官方文档中的流程图
同样的,我们会严格按照流程走,会将私钥等安全相关信息放在后台,以前写过的微信,支付宝也是一样,有兴趣可以看一下。
第一步,android端选中购买商品,直接将后台需要的参数传过去。对应于步骤1
String merId = req.getParameter("merId");
String txnAmt = req.getParameter("txnAmt");
String orderId = req.getParameter("orderId");
String txnTime = req.getParameter("txnTime");
这几个参数将会和接下来的第二步一起说明。
第二步,商户后台向银联全渠道平台发送订单推送请求,并获得交易流水号tn。对应于步骤2,3。
官方demo点我(包括了android端和Java端,我就是依照这个讲的)
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String merId = req.getParameter("merId");
String txnAmt = req.getParameter("txnAmt");
String orderId = req.getParameter("orderId");
String txnTime = req.getParameter("txnTime");
Map<String, String> contentData = new HashMap<String, String>();
/***银联全渠道系统,产品参数,除了encoding自行选择外其他不需修改***/
contentData.put("version", DemoBase.version); //版本号 全渠道默认值
contentData.put("encoding", DemoBase.encoding); //字符集编码 可以使用UTF-8,GBK两种方式
contentData.put("signMethod", SDKConfig.getConfig().getSignMethod()); //签名方法
contentData.put("txnType", "01"); //交易类型 01:消费
contentData.put("txnSubType", "01"); //交易子类 01:消费
contentData.put("bizType", "000201"); //填写000201
contentData.put("channelType", "08"); //渠道类型 08手机
/***商户接入参数***/
contentData.put("merId", merId); //商户号码,请改成自己申请的商户号或者open上注册得来的777商户号测试
contentData.put("accessType", "0"); //接入类型,商户接入填0 ,不需修改(0:直连商户, 1: 收单机构 2:平台商户)
contentData.put("orderId", orderId); //商户订单号,8-40位数字字母,不能含“