统一下单代码示例

更新时间:
2024-01-04
下载文档

统一下单代码示例

本章主要介绍统一下单的 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);
}
文档内容是否对您有所帮助?
有帮助
没帮助