启用微信支付

1、微信支付配置

[info] 预支付订单、跳转及回调处理Controller /dodo/src/main/java/com/pay/action/front/PayAction.java

2、定义一些业务类型,用于回调的时候,区分

  1. // 修改此枚举,添加有意义的业务类型
  2. package com.pay;
  3. public enum PayBusiType{
  4. BUSI1,BUSI2
  5. }

3、获取预支付订单

  1. /**
  2. * 参见:PayAction.java
  3. */
  4. @RequestMapping("/ten_pay/prepay.json")
  5. @ResponseBody
  6. public RespData tenpayPrepay(HttpServletRequest request, String accountName, String tradeNo, String openId) {
  7. // 待支付的业务类型
  8. PayBusiType payBusiType = PayBusiType.BUSI1;
  9. // 商品名称
  10. String remark = "Test";//query
  11. // 支付的金额,单位:分
  12. BigDecimal total_fee = new BigDecimal(1000);//query
  13. // 收款账户
  14. TenpayAccount account = PayConfig.getTenpayAccount(accountName);
  15. // 打包支付请求
  16. PayPack pack = new PayPack();
  17. // 系统内部订单号
  18. pack.setOut_trade_no(tradeNo);
  19. // 支付的业务类型
  20. pack.setPayBusiType(payBusiType);
  21. // 商品名称
  22. pack.setRemark(remark);
  23. // 待支付金额
  24. pack.setTotal_fee(total_fee);
  25. // 支付成功后的回调URL
  26. pack.setNotifyUrl(account.getNotifyUrl());
  27. // APP支付,获取预支付订单
  28. if (account.getType() == AccountType.APP) {
  29. return RespData.success(PayUtil.makeWeixinPrepayOrderAPP(pack, request, accountName));
  30. }
  31. // JSAPI支付,获取预支付订单
  32. else {
  33. return RespData.success(PayUtil.makeWeixinPrepayOrderJSAPI(openId, pack, request, accountName));
  34. }
  35. }

4、接收回调

  1. 参见方法:PayAction.javatenpayNotify
  2. ......省略代码......
  3. // 业务1的回调
  4. if (payBusiType == PayBusiType.BUSI1) {
  5. }
  6. // 业务2的回调
  7. else if (payBusiType == PayBusiType.BUSI2) {
  8. }
  9. ......省略代码......