diff --git a/src/main/java/com/xkrs/unionpay/service/impl/UnionpayServiceImpl.java b/src/main/java/com/xkrs/unionpay/service/impl/UnionpayServiceImpl.java index cac22ae..84c7bb6 100644 --- a/src/main/java/com/xkrs/unionpay/service/impl/UnionpayServiceImpl.java +++ b/src/main/java/com/xkrs/unionpay/service/impl/UnionpayServiceImpl.java @@ -22,21 +22,34 @@ public class UnionpayServiceImpl implements UnionpayService { Map contentData = new HashMap<>(); /***银联全渠道系统,产品参数,除了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", "07"); //交易子类 07:申请消费二维码 - contentData.put("bizType", "000000"); //填写000000 - contentData.put("channelType", "08"); //渠道类型 08手机 + //版本号 全渠道默认值 + contentData.put("version", DemoBase.version); + //字符集编码 可以使用UTF-8,GBK两种方式 + contentData.put("encoding", DemoBase.encoding); + //签名方法 + contentData.put("signMethod", SDKConfig.getConfig().getSignMethod()); + //交易类型 01:消费 + contentData.put("txnType", "01"); + //交易子类 07:申请消费二维码 + contentData.put("txnSubType", "07"); + //填写000000 + contentData.put("bizType", "000000"); + //渠道类型 08手机 + contentData.put("channelType", "08"); /***商户接入参数***/ - contentData.put("merId", "777290058195927"); //商户号码,请改成自己申请的商户号或者open上注册得来的777商户号测试 - contentData.put("accessType", "0"); //接入类型,商户接入填0 ,不需修改(0:直连商户, 1: 收单机构 2:平台商户) - contentData.put("orderId", orderId); //商户订单号,8-40位数字字母,不能含“-”或“_”,可以自行定制规则 - contentData.put("txnTime", DemoBase.getCurrentTime()); //订单发送时间,取系统时间,格式为YYYYMMDDhhmmss,必须取当前时间,否则会报txnTime无效 - contentData.put("txnAmt", txnAmt); //交易金额 单位为分,不能带小数点 - contentData.put("currencyCode", "156"); //境内商户固定 156 人民币 + //商户号码,请改成自己申请的商户号或者open上注册得来的777商户号测试 + contentData.put("merId", "777290058195927"); + //接入类型,商户接入填0 ,不需修改(0:直连商户, 1: 收单机构 2:平台商户) + contentData.put("accessType", "0"); + //商户订单号,8-40位数字字母,不能含“-”或“_”,可以自行定制规则 + contentData.put("orderId", orderId); + //订单发送时间,取系统时间,格式为YYYYMMDDhhmmss,必须取当前时间,否则会报txnTime无效 + contentData.put("txnTime", DemoBase.getCurrentTime()); + //交易金额 单位为分,不能带小数点 + contentData.put("txnAmt", txnAmt); + //境内商户固定 156 人民币 + contentData.put("currencyCode", "156"); //contentData.put("termId", termId); //选填,原则是可以通过交易上送的终端编号准确定位商户每一个门店内每一台收银设备,建议按“门店编号+收银机编号”或“设备编号”组成8位终端编号在交易中上送。商户需将终端编号与门店对应关系反馈给银联。 // 请求方保留域,透传字段,查询、通知、对账文件中均会原样出现,如有需要请启用并修改自己希望透传的数据。 @@ -58,9 +71,12 @@ public class UnionpayServiceImpl implements UnionpayService { contentData.put("backUrl", DemoBase.backUrl); /**对请求参数进行签名并发送http post请求,接收同步应答报文**/ - Map reqData = AcpService.sign(contentData, DemoBase.encoding); //报文中certId,signature的值是在signData方法中获取并自动赋值的,只要证书配置正确即可。 - String requestAppUrl = SDKConfig.getConfig().getBackRequestUrl(); //交易请求url从配置文件读取对应属性文件acp_sdk.properties中的 acpsdk.backTransUrl - Map rspData = AcpService.post(reqData, requestAppUrl, DemoBase.encoding); //发送请求报文并接受同步应答(默认连接超时时间30秒,读取返回结果超时时间30秒);这里调用signData之后,调用submitUrl之前不能对submitFromData中的键值对做任何修改,如果修改会导致验签不通过 + //报文中certId,signature的值是在signData方法中获取并自动赋值的,只要证书配置正确即可。 + Map reqData = AcpService.sign(contentData, DemoBase.encoding); + //交易请求url从配置文件读取对应属性文件acp_sdk.properties中的 acpsdk.backTransUrl + String requestAppUrl = SDKConfig.getConfig().getBackRequestUrl(); + //发送请求报文并接受同步应答(默认连接超时时间30秒,读取返回结果超时时间30秒);这里调用signData之后,调用submitUrl之前不能对submitFromData中的键值对做任何修改,如果修改会导致验签不通过 + Map rspData = AcpService.post(reqData, requestAppUrl, DemoBase.encoding); String qrCode = null; if (!rspData.isEmpty()) {