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
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package com.walker.pay.wechat;
 
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.NumberGenerator;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.pay.PayEngineProvider;
import com.walker.pay.PayType;
import com.walker.pay.exception.OrderException;
import com.walker.pay.response.ScanOrderResponsePay;
import com.walker.pay.support.DefaultOrder;
import com.walker.pay.wechat.v2.AppOrderResponsePay;
import com.walker.pay.wechat.v2.H5ResponsePay;
import com.walker.pay.wechat.v2.WechatV2OrderCallback;
import org.junit.Test;
import org.springframework.web.client.RestTemplate;
 
public class TestWechatPayV2 extends TestBase {
 
//    @Test
    public void testPayType(){
        System.out.println("5 = " + PayType.valueOf("OfficialAccount"));
    }
 
//    @Test
    public void testH5PayOrder(){
        RestTemplate restTemplate = this.getRestTemplate();
 
        PayEngineProvider payEngineProvider = new WechatV2PayEngineProvider(restTemplate);
        payEngineProvider.setConfiguration(this.getConfiguration());
        payEngineProvider.setOrderCallback(new WechatV2OrderCallback());
 
        DefaultOrder order = new DefaultOrder();
        order.setId(NumberGenerator.getLongSequenceNumber());
        order.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        order.setPayType(PayType.H5);
        order.setPayDefinitionId("1");
        order.setTotalMoney(1);
        order.setNotifyUrl("http://101.43.168.96:8082/admin/pay/notify/wx_v2/orderNotify");
        order.setIp("127.0.0.1");
        order.setNonce(StringUtils.generateRandomNumber(6));
        order.setTitle("h5支付商品");
        String attach = "order," + 9987654321L;
        order.setAttach(attach);
        order.setBuyerId("oIydh5wC4wpmHjkmdk0cvAT9spFM");
 
        try {
            H5ResponsePay responseValue = (H5ResponsePay)payEngineProvider.generatePrepareOrder(order);
            System.out.println("返回APP调用结果: " + responseValue);
        } catch (OrderException e) {
            throw new RuntimeException(e);
        }
    }
 
//    @Test
    public void testRequestAppOrder(){
        RestTemplate restTemplate = this.getRestTemplate();
 
        PayEngineProvider payEngineProvider = new WechatV2PayEngineProvider(restTemplate);
        payEngineProvider.setConfiguration(this.getConfiguration());
 
        DefaultOrder order = new DefaultOrder();
        order.setId(NumberGenerator.getLongSequenceNumber());
        order.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        order.setPayType(PayType.App);
        order.setPayDefinitionId("1");
        order.setTotalMoney(1);
        order.setNotifyUrl("http://47.99.216.98:7003/pay/wx/notify.do");
        order.setIp("127.0.0.1");
        order.setNonce(StringUtils.generateRandomNumber(6));
        order.setTitle("app支付商品");
        order.setAttach("test");
 
        try {
            AppOrderResponsePay responseValue = (AppOrderResponsePay)payEngineProvider.generatePrepareOrder(order);
            System.out.println("返回APP调用结果: " + responseValue);
        } catch (OrderException e) {
            throw new RuntimeException(e);
        }
    }
 
//    @Test
    public void testRequestScanOrder(){
 
//        RestTemplate restTemplate = new RestTemplate();
        RestTemplate restTemplate = this.getRestTemplate();
 
        PayEngineProvider payEngineProvider = new WechatV2PayEngineProvider(restTemplate);
        payEngineProvider.setConfiguration(this.getConfiguration());
 
        DefaultOrder order = new DefaultOrder();
        order.setId(NumberGenerator.getLongSequenceNumber());
        order.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        order.setPayType(PayType.Scan);
        order.setPayDefinitionId("1");
        order.setTotalMoney(1);
        order.setNotifyUrl("http://47.99.216.98:7003/pay/wx/notify.do");
        order.setIp("127.0.0.1");
        order.setNonce(StringUtils.generateRandomNumber(6));
        order.setTitle("一个苹果");
        order.setAttach("test");
 
        try {
            ScanOrderResponsePay responseValue = (ScanOrderResponsePay)payEngineProvider.generatePrepareOrder(order);
            System.out.println("返回扫码调用结果: " + responseValue);
        } catch (OrderException e) {
            throw new RuntimeException(e);
        }
    }
 
//    /**
//     * String类型转换器,默认是 iso-8859-1
//     * @return
//     */
//    private RestTemplate getRestTemplate(){
//        RestTemplate restTemplate = new RestTemplate();
//        List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
//        Iterator<HttpMessageConverter<?>> iterator=messageConverters.iterator();
//        while(iterator.hasNext()){
//            HttpMessageConverter<?> converter=iterator.next();
//            //原有的String是ISO-8859-1编码 去掉
//            if(converter instanceof StringHttpMessageConverter){
//                iterator.remove();
//            }
//        }
//        messageConverters.add(new StringHttpMessageConverter(StandardCharsets.UTF_8));
//        return restTemplate;
//    }
//
//    private Map<String, Variable> getConfiguration(){
//        Map<String, Variable> configuration = new HashMap<>();
//        configuration.put(Constants.CONFIG_KEY_APP_ID, new DefaultVariable(VariableType.String, "wx8e4834af01a60a32", null));
//        configuration.put(Constants.CONFIG_KEY_MCH_ID, new DefaultVariable(VariableType.String, "1630059373", null));
//        configuration.put(Constants.CONFIG_KEY_API_KEY, new DefaultVariable(VariableType.String, "Zhongzhouzhihuishuili12345678901", null));
//        return configuration;
//    }
}