统一下单代码示例
本章主要介绍统一下单的 Java SDK 代码示例,用于商户系统后台服务返回给前台应用调用 Web-SDK 的参数。
代码示例
public Map<String, Object> getTradeParameter(AcopayTradeAppModel tradeAppModel) throws Exception {
// 商户私钥
String mchPrivateKey = "<yourMchPrivateKey>";
// 商户号
String mchNo = "<yourMchNo>";
// 商户支付应用号
String appNo = "<yourAppNo>";
// 商户退款结果通知地址
String tradeNotifyUrl = "<yourTradeNotifyUrl>";
// 实际业务中根据请求参数,如商品主键等,返回业务相关的支付参数
tradeAppModel.setAmountCurrency("CNY");
tradeAppModel.setAppNo(appNo);
tradeAppModel.setDescription("test pay ");
tradeAppModel.setExtra("商户业务附加数据");
tradeAppModel.setMchNo(mchNo);
tradeAppModel.setMchTradeNo(AcopayCommonUtil.getRandomString(40));
// 填写商户的支付通知地址
tradeAppModel.setNotifyUrl(tradeNotifyUrl);
tradeAppModel.setNonce(AcopayCommonUtil.getRandomString(32));
tradeAppModel.setSignType(AcopayConstant.SIGN_TYPE);
ZonedDateTime zonedDateTime = ZonedDateTime.now().plusMinutes(10);
String timeExpire = zonedDateTime.format(DateTimeFormatter.ofPattern(DATETIME_PATTERN_RFC3339));
tradeAppModel.setTimeExpire(timeExpire);
// 翼辉接收参数为下划线格式 需要转换参数格式
String sign = AcopaySignUtil.getSign(AcopayCommonUtil.beanToLowerUnderscoreMap(tradeAppModel),
mchPrivateKey);
// 没有异常 进行商户业务处理 并返回给 Web-SDK 数据
tradeAppModel.setSign(sign);
log.info("返回 Web-SDK 支付参数:{}", tradeAppModel);
// Web-SDK 需要下划线格式的参数 AcopayTradeAppModel 类中参数以驼峰方式命名
return AcopayCommonUtil.beanToLowerUnderscoreMap(tradeAppModel);
}