xiaoyong931011
2023-05-09 31c1f349451712141ce826b585313825e0de41bd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package cc.mrbird.febs.pay.controller;
 
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.pay.model.LaKaLaCreateOrderReqDate;
import cc.mrbird.febs.pay.properties.AliPayProperties;
import cc.mrbird.febs.pay.service.IAliPayService;
import cc.mrbird.febs.pay.service.IPayService;
import cc.mrbird.febs.pay.service.LaKaLaService;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alipay.api.AlipayApiException;
import com.alipay.api.internal.util.AlipaySignature;
import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import com.ijpay.alipay.AliPayApi;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.service.WxService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
 
/**
 * @author wzy
 * @date 2021-09-27
 **/
@Slf4j
@RestController
@RequestMapping(value = "/api/pay")
@RequiredArgsConstructor
@Api(value = "PayCallBackController", tags = "回调接口")
public class PayCallBackController {
 
    @Autowired
    private IAliPayService payService;
 
    @Autowired
    private IPayService wechatPayService;
 
    @Resource
    private AliPayProperties aliPayProperties;
 
    @Autowired
    private WxPayService wxPayService;
 
    @Autowired
    private LaKaLaService laKaLaService;
 
    @RequestMapping("/aliCallBack")
    public String aliPayCallBack(HttpServletRequest request){
        log.info("进入支付宝回调");
        Map<String, String> params = AliPayApi.toMap(request);
 
        boolean verifyResult = false;
        try {
            verifyResult = AlipaySignature.verifyV1(params, aliPayProperties.getPublicKey(), "UTF-8", "RSA2");
        } catch (AlipayApiException e) {
            log.info("=验证失败=:{}", params);
            return "failure";
        }
 
        if (verifyResult) {
            if ("TRADE_SUCCESS".equals(params.get("trade_status")) || "TRADE_FINISHED".equals(params.get("trade_status"))) {
                payService.aliCallback(params);
                return "success";
            } else {
                log.info("支付失败:{}", params);
                return "failure";
            }
        } else {
            log.info("验证失败:{}", params);
            return "failure";
        }
    }
 
    @PostMapping(value = "/wxPayCallBack")
    public String wxPayCallBack(@RequestBody String xmlData) throws WxPayException {
        log.info("=======微信回调:{}========", xmlData);
        WxPayOrderNotifyResult notifyResult = this.wxPayService.parseOrderNotifyResult(xmlData);
 
        wechatPayService.payCallback(notifyResult.toMap());
        return WxPayNotifyResponse.success("成功");
    }
 
    @PostMapping(value = "/laKaLaPayCallBack")
    public String laKaLaPayCallBack(@RequestBody String xmlData){
        log.info("=======拉卡拉回调:{}========", xmlData);
        JSONObject jsonObject = JSONUtil.parseObj(xmlData);
        return laKaLaService.payCallback(jsonObject);
    }
 
    @PostMapping(value = "/laKaLaPayTest")
    public String laKaLaPayTest(){
        log.info("=======拉卡拉支付:{}========");
        LaKaLaCreateOrderReqDate laKaLaCreateOrderReqDate = new LaKaLaCreateOrderReqDate();
        //订单编号
        String yyyyMMddHHmmss = DateUtil.format(new Date(), "yyyyMMddHHmmss");
        laKaLaCreateOrderReqDate.setOut_order_no("HLM"+ yyyyMMddHHmmss);
        //订单金额,分计
        laKaLaCreateOrderReqDate.setTotal_amount(1);
        laKaLaCreateOrderReqDate.setOrder_info("商品");
        return laKaLaService.verifyCreateOrder(laKaLaCreateOrderReqDate);
    }
 
    public static void main(String[] args) {
        String ss = "{\"channel_id\":\"95\",\"merchant_no\":\"8222900701107M5\",\"order_create_time\":\"20230419144657\",\"order_efficient_time\":\"20230419154657\",\"order_info\":\"测试\",\"order_status\":\"2\",\"order_trade_info\":{\"acc_trade_no\":\"4200001781202304197079597853\",\"acc_type\":\"99\",\"bank_type\":\"OTHERS\",\"busi_type\":\"SCPAY\",\"log_no\":\"66210308040064\",\"pay_mode\":\"WECHAT\",\"payer_amount\":1,\"settle_merchant_no\":\"8222900701107M5\",\"settle_term_no\":\"A1062976\",\"trade_amount\":1,\"trade_no\":\"2023041966210308040064\",\"trade_remark\":\"\",\"trade_status\":\"S\",\"trade_time\":\"20230419144905\",\"trade_type\":\"PAY\",\"user_id1\":\"olpr-0s4UbBnMs_BkbhWQZY0dGS4\",\"user_id2\":\"oUpF8uJz3B57zLzhefnWANjzOjYU\"},\"out_order_no\":\"HLM20230419144657\",\"pay_order_no\":\"23041911012001101011000965795\",\"term_no\":\"A1062976\",\"total_amount\":1,\"trans_merchant_no\":\"8222900701107M5\",\"trans_term_no\":\"A1062976\"}";
        JSONObject jsonObject = JSONUtil.parseObj(ss);
        System.out.println(jsonObject.get("order_status"));
        System.out.println(jsonObject.get("out_order_no"));
    }
}