shikeying
2024-01-11 3b67e947e36133e2a40eb2737b15ea375e157ea0
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
package com.walker.pay.allinpaycloud.generator;
 
import com.allinpay.sdk.bean.OpenResponse;
import com.walker.infrastructure.arguments.Variable;
import com.walker.pay.Order;
import com.walker.pay.PayContext;
import com.walker.pay.ResponsePay;
import com.walker.pay.allinpaycloud.BaseOrderGenerator;
import com.walker.pay.allinpaycloud.Constants;
import com.walker.pay.allinpaycloud.util.OrderUtils;
import com.walker.pay.response.ScanOrderResponsePay;
import com.walker.pay.support.allinpaycloud.ScanWechatOrder;
 
import java.util.Map;
 
/**
 * 微信扫码(正扫)生成动态订单二维码,生成器定义。
 * @author 时克英
 * @date 2023-03-01
 */
public class ScanWechatOrderGenerator extends BaseOrderGenerator {
 
    @Override
    protected ResponsePay invoke(PayContext payContext, Order platformOrder) {
        this.checkSdkClient();
        if(!(platformOrder instanceof ScanWechatOrder)){
            throw new IllegalArgumentException("微信扫描(正扫)支付订单类型必须是'ScanWechatOrder'");
        }
        OpenResponse response = this.getSdkClient().consumeApply(platformOrder);
        if(response == null){
            throw new RuntimeException("调用'通商云微信扫码'订单返回空数据, orderId = " + platformOrder.getId());
        }
 
        if (!Constants.SUB_CODE_OK.equals(response.getSubCode())) {
            logger.debug("'微信扫码(正扫)'订单返回失败:{}", response.getSubMsg());
            return ResponsePay.error(ScanOrderResponsePay.class, response.getSubMsg());
        }
 
        ScanOrderResponsePay scanOrderResponsePay = new ScanOrderResponsePay();
 
        try {
            OrderResponsePay responseValue = OrderUtils.getOrderResponsePay(response.getData());
            if(responseValue == null){
                throw new RuntimeException("orderResponsePay = null!");
            }
            // 生成的二维码结果,统一转换成对象:ScanOrderResponsePay
            scanOrderResponsePay.setStatus(true);
            scanOrderResponsePay.setCodeUrl(responseValue.getPayInfo());
            return scanOrderResponsePay;
 
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            throw new RuntimeException("调用'通商云微信扫码(正扫)'订单数据转换对象失败, orderId = " + platformOrder.getId());
        }
    }
 
    @Deprecated
    @Override
    protected ResponsePay invoke(String providerPayType, Order platformOrder, Map<String, Variable> configuration) {
        return null;
    }
}