Commit 895c650ca698a5d67a557b115c0523a6a7577195

Authored by YunaiV
1 parent d2f2c2b4

feat(pay):增加支付宝 lite 支付

sql/dm/ruoyi-vue-pro-dm8.sql
... ... @@ -716,6 +716,7 @@ INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_t
716 716 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (117, 11, '支付宝 Wap 网站支付', 'alipay_wap', 'pay_channel_code', 0, 'primary', '', '支付宝 Wap 网站支付', '1', '2021-12-03 10:42:26', '1', '2023-07-19 20:09:16', '0');
717 717 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (118, 12, '支付宝 App 支付', 'alipay_app', 'pay_channel_code', 0, 'primary', '', '支付宝 App 支付', '1', '2021-12-03 10:42:55', '1', '2023-07-19 20:09:20', '0');
718 718 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (119, 14, '支付宝扫码支付', 'alipay_qr', 'pay_channel_code', 0, 'primary', '', '支付宝扫码支付', '1', '2021-12-03 10:43:10', '1', '2023-07-19 20:09:28', '0');
  719 +INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (3449, 15, '支付宝小程序支付', 'alipay_lite', 'pay_channel_code', 0, 'primary', '', '支付宝小程序支付', '1', '2026-08-18 00:00:00', '1', '2026-08-18 00:00:00', '0');
719 720 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (120, 10, '通知成功', '10', 'pay_notify_status', 0, 'success', '', '通知成功', '1', '2021-12-03 11:02:41', '1', '2023-07-19 10:08:19', '0');
720 721 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (121, 20, '通知失败', '20', 'pay_notify_status', 0, 'danger', '', '通知失败', '1', '2021-12-03 11:02:59', '1', '2023-07-19 10:08:21', '0');
721 722 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (122, 0, '等待通知', '0', 'pay_notify_status', 0, 'info', '', '未通知', '1', '2021-12-03 11:03:10', '1', '2023-07-19 10:08:24', '0');
... ...
sql/highgo/ruoyi-vue-pro.sql
... ... @@ -817,6 +817,7 @@ INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_t
817 817 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (117, 11, '支付宝 Wap 网站支付', 'alipay_wap', 'pay_channel_code', 0, 'primary', '', '支付宝 Wap 网站支付', '1', '2021-12-03 10:42:26', '1', '2023-07-19 20:09:16', '0');
818 818 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (118, 12, '支付宝 App 支付', 'alipay_app', 'pay_channel_code', 0, 'primary', '', '支付宝 App 支付', '1', '2021-12-03 10:42:55', '1', '2023-07-19 20:09:20', '0');
819 819 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (119, 14, '支付宝扫码支付', 'alipay_qr', 'pay_channel_code', 0, 'primary', '', '支付宝扫码支付', '1', '2021-12-03 10:43:10', '1', '2023-07-19 20:09:28', '0');
  820 +INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (3449, 15, '支付宝小程序支付', 'alipay_lite', 'pay_channel_code', 0, 'primary', '', '支付宝小程序支付', '1', '2026-08-18 00:00:00', '1', '2026-08-18 00:00:00', '0');
820 821 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (120, 10, '通知成功', '10', 'pay_notify_status', 0, 'success', '', '通知成功', '1', '2021-12-03 11:02:41', '1', '2023-07-19 10:08:19', '0');
821 822 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (121, 20, '通知失败', '20', 'pay_notify_status', 0, 'danger', '', '通知失败', '1', '2021-12-03 11:02:59', '1', '2023-07-19 10:08:21', '0');
822 823 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (122, 0, '等待通知', '0', 'pay_notify_status', 0, 'info', '', '未通知', '1', '2021-12-03 11:03:10', '1', '2023-07-19 10:08:24', '0');
... ... @@ -6195,4 +6196,3 @@ COMMIT;
6195 6196 DROP SEQUENCE IF EXISTS yudao_demo03_student_seq;
6196 6197 CREATE SEQUENCE yudao_demo03_student_seq
6197 6198 START 10;
6198   -
... ...
sql/kingbase/ruoyi-vue-pro.sql
... ... @@ -817,6 +817,7 @@ INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_t
817 817 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (117, 11, '支付宝 Wap 网站支付', 'alipay_wap', 'pay_channel_code', 0, 'primary', '', '支付宝 Wap 网站支付', '1', '2021-12-03 10:42:26', '1', '2023-07-19 20:09:16', '0');
818 818 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (118, 12, '支付宝 App 支付', 'alipay_app', 'pay_channel_code', 0, 'primary', '', '支付宝 App 支付', '1', '2021-12-03 10:42:55', '1', '2023-07-19 20:09:20', '0');
819 819 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (119, 14, '支付宝扫码支付', 'alipay_qr', 'pay_channel_code', 0, 'primary', '', '支付宝扫码支付', '1', '2021-12-03 10:43:10', '1', '2023-07-19 20:09:28', '0');
  820 +INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (3449, 15, '支付宝小程序支付', 'alipay_lite', 'pay_channel_code', 0, 'primary', '', '支付宝小程序支付', '1', '2026-08-18 00:00:00', '1', '2026-08-18 00:00:00', '0');
820 821 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (120, 10, '通知成功', '10', 'pay_notify_status', 0, 'success', '', '通知成功', '1', '2021-12-03 11:02:41', '1', '2023-07-19 10:08:19', '0');
821 822 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (121, 20, '通知失败', '20', 'pay_notify_status', 0, 'danger', '', '通知失败', '1', '2021-12-03 11:02:59', '1', '2023-07-19 10:08:21', '0');
822 823 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (122, 0, '等待通知', '0', 'pay_notify_status', 0, 'info', '', '未通知', '1', '2021-12-03 11:03:10', '1', '2023-07-19 10:08:24', '0');
... ... @@ -1663,7 +1664,7 @@ COMMIT;
1663 1664  
1664 1665 DROP SEQUENCE IF EXISTS system_dict_data_seq;
1665 1666 CREATE SEQUENCE system_dict_data_seq
1666   - START 3449;
  1667 + START 3450;
1667 1668  
1668 1669 -- ----------------------------
1669 1670 -- Table structure for system_dict_type
... ...
sql/opengauss/ruoyi-vue-pro.sql
... ... @@ -817,6 +817,7 @@ INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_t
817 817 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (117, 11, '支付宝 Wap 网站支付', 'alipay_wap', 'pay_channel_code', 0, 'primary', '', '支付宝 Wap 网站支付', '1', '2021-12-03 10:42:26', '1', '2023-07-19 20:09:16', '0');
818 818 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (118, 12, '支付宝 App 支付', 'alipay_app', 'pay_channel_code', 0, 'primary', '', '支付宝 App 支付', '1', '2021-12-03 10:42:55', '1', '2023-07-19 20:09:20', '0');
819 819 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (119, 14, '支付宝扫码支付', 'alipay_qr', 'pay_channel_code', 0, 'primary', '', '支付宝扫码支付', '1', '2021-12-03 10:43:10', '1', '2023-07-19 20:09:28', '0');
  820 +INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (3449, 15, '支付宝小程序支付', 'alipay_lite', 'pay_channel_code', 0, 'primary', '', '支付宝小程序支付', '1', '2026-08-18 00:00:00', '1', '2026-08-18 00:00:00', '0');
820 821 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (120, 10, '通知成功', '10', 'pay_notify_status', 0, 'success', '', '通知成功', '1', '2021-12-03 11:02:41', '1', '2023-07-19 10:08:19', '0');
821 822 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (121, 20, '通知失败', '20', 'pay_notify_status', 0, 'danger', '', '通知失败', '1', '2021-12-03 11:02:59', '1', '2023-07-19 10:08:21', '0');
822 823 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (122, 0, '等待通知', '0', 'pay_notify_status', 0, 'info', '', '未通知', '1', '2021-12-03 11:03:10', '1', '2023-07-19 10:08:24', '0');
... ... @@ -1663,7 +1664,7 @@ COMMIT;
1663 1664  
1664 1665 DROP SEQUENCE IF EXISTS system_dict_data_seq;
1665 1666 CREATE SEQUENCE system_dict_data_seq
1666   - START 3449;
  1667 + START 3450;
1667 1668  
1668 1669 -- ----------------------------
1669 1670 -- Table structure for system_dict_type
... ...
sql/oracle/ruoyi-vue-pro.sql
... ... @@ -769,6 +769,7 @@ INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_t
769 769 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (117, 11, '支付宝 Wap 网站支付', 'alipay_wap', 'pay_channel_code', 0, 'primary', '', '支付宝 Wap 网站支付', '1', to_date('2021-12-03 10:42:26', 'SYYYY-MM-DD HH24:MI:SS'), '1', to_date('2023-07-19 20:09:16', 'SYYYY-MM-DD HH24:MI:SS'), '0');
770 770 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (118, 12, '支付宝 App 支付', 'alipay_app', 'pay_channel_code', 0, 'primary', '', '支付宝 App 支付', '1', to_date('2021-12-03 10:42:55', 'SYYYY-MM-DD HH24:MI:SS'), '1', to_date('2023-07-19 20:09:20', 'SYYYY-MM-DD HH24:MI:SS'), '0');
771 771 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (119, 14, '支付宝扫码支付', 'alipay_qr', 'pay_channel_code', 0, 'primary', '', '支付宝扫码支付', '1', to_date('2021-12-03 10:43:10', 'SYYYY-MM-DD HH24:MI:SS'), '1', to_date('2023-07-19 20:09:28', 'SYYYY-MM-DD HH24:MI:SS'), '0');
  772 +INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (3449, 15, '支付宝小程序支付', 'alipay_lite', 'pay_channel_code', 0, 'primary', '', '支付宝小程序支付', '1', to_date('2026-08-18 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'), '1', to_date('2026-08-18 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'), '0');
772 773 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (120, 10, '通知成功', '10', 'pay_notify_status', 0, 'success', '', '通知成功', '1', to_date('2021-12-03 11:02:41', 'SYYYY-MM-DD HH24:MI:SS'), '1', to_date('2023-07-19 10:08:19', 'SYYYY-MM-DD HH24:MI:SS'), '0');
773 774 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (121, 20, '通知失败', '20', 'pay_notify_status', 0, 'danger', '', '通知失败', '1', to_date('2021-12-03 11:02:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', to_date('2023-07-19 10:08:21', 'SYYYY-MM-DD HH24:MI:SS'), '0');
774 775 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (122, 0, '等待通知', '0', 'pay_notify_status', 0, 'info', '', '未通知', '1', to_date('2021-12-03 11:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '1', to_date('2023-07-19 10:08:24', 'SYYYY-MM-DD HH24:MI:SS'), '0');
... ... @@ -1614,7 +1615,7 @@ COMMIT;
1614 1615 -- @formatter:on
1615 1616  
1616 1617 CREATE SEQUENCE system_dict_data_seq
1617   - START WITH 3449;
  1618 + START WITH 3450;
1618 1619  
1619 1620 -- ----------------------------
1620 1621 -- Table structure for system_dict_type
... ...
sql/sqlserver/ruoyi-vue-pro.sql
... ... @@ -2258,6 +2258,7 @@ GO
2258 2258 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (118, 12, N'支付宝 App 支付', N'alipay_app', N'pay_channel_code', 0, N'primary', N'', N'支付宝 App 支付', N'1', N'2021-12-03 10:42:55', N'1', N'2023-07-19 20:09:20', N'0')
2259 2259 GO
2260 2260 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (119, 14, N'支付宝扫码支付', N'alipay_qr', N'pay_channel_code', 0, N'primary', N'', N'支付宝扫码支付', N'1', N'2021-12-03 10:43:10', N'1', N'2023-07-19 20:09:28', N'0')
  2261 +INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (3449, 15, N'支付宝小程序支付', N'alipay_lite', N'pay_channel_code', 0, N'primary', N'', N'支付宝小程序支付', N'1', N'2026-08-18 00:00:00', N'1', N'2026-08-18 00:00:00', N'0')
2261 2262 GO
2262 2263 INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (120, 10, N'通知成功', N'10', N'pay_notify_status', 0, N'success', N'', N'通知成功', N'1', N'2021-12-03 11:02:41', N'1', N'2023-07-19 10:08:19', N'0')
2263 2264 GO
... ...
yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/core/client/impl/alipay/AlipayLitePayClient.java
... ... @@ -20,6 +20,8 @@ import static cn.iocoder.yudao.module.pay.framework.pay.core.client.impl.alipay.
20 20 * 支付宝【小程序】的 PayClient 实现类
21 21 *
22 22 * 文档:<a href="https://opendocs.alipay.com/mini/6039ed0c_alipay.trade.create">统一收单交易创建</a>
  23 + *
  24 + * @author graypxl
23 25 */
24 26 public class AlipayLitePayClient extends AbstractAlipayPayClient {
25 27  
... ...
yudao-module-pay/src/test/java/cn/iocoder/yudao/module/pay/framework/pay/core/client/impl/alipay/AlipayLitePayClientTest.java
1 1 package cn.iocoder.yudao.module.pay.framework.pay.core.client.impl.alipay;
2 2  
3 3 import cn.iocoder.yudao.framework.common.exception.ServiceException;
  4 +import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants;
  5 +import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
4 6 import cn.iocoder.yudao.module.pay.framework.pay.core.client.dto.order.PayOrderRespDTO;
5 7 import cn.iocoder.yudao.module.pay.framework.pay.core.client.dto.order.PayOrderUnifiedReqDTO;
6 8 import cn.iocoder.yudao.module.pay.framework.pay.core.enums.PayOrderDisplayModeEnum;
  9 +import cn.iocoder.yudao.module.pay.framework.pay.core.client.exception.PayClientException;
7 10 import com.alipay.api.AlipayApiException;
8 11 import com.alipay.api.domain.AlipayTradeCreateModel;
9 12 import com.alipay.api.request.AlipayTradeCreateRequest;
... ... @@ -27,12 +30,15 @@ import static org.mockito.Mockito.when;
27 30  
28 31 /**
29 32 * {@link AlipayLitePayClient} 单元测试
  33 + *
  34 + * @author graypxl
30 35 */
31 36 public class AlipayLitePayClientTest extends AbstractAlipayClientTest {
32 37  
33 38 @InjectMocks
34 39 private AlipayLitePayClient client = new AlipayLitePayClient(randomLongId(), config);
35 40  
  41 + @Override
36 42 @BeforeEach
37 43 public void setUp() {
38 44 setClient(client);
... ... @@ -55,9 +61,15 @@ public class AlipayLitePayClientTest extends AbstractAlipayClientTest {
55 61 PayOrderRespDTO resp = client.unifiedOrder(reqDTO);
56 62  
57 63 assertEquals(WAITING.getStatus(), resp.getStatus());
  64 + assertEquals(reqDTO.getOutTradeNo(), resp.getOutTradeNo());
  65 + assertNull(resp.getChannelOrderNo());
  66 + assertNull(resp.getChannelUserId());
  67 + assertNull(resp.getSuccessTime());
58 68 assertEquals(PayOrderDisplayModeEnum.APP.getMode(), resp.getDisplayMode());
59 69 assertEquals(tradeNo, resp.getDisplayContent());
60 70 assertSame(response, resp.getRawData());
  71 + assertNull(resp.getChannelErrorCode());
  72 + assertNull(resp.getChannelErrorMsg());
61 73 }
62 74  
63 75 @Test
... ... @@ -70,7 +82,12 @@ public class AlipayLitePayClientTest extends AbstractAlipayClientTest {
70 82 PayOrderUnifiedReqDTO reqDTO = buildOrderUnifiedReqDTO(randomURL(), randomString(), randomInteger());
71 83 reqDTO.setChannelExtras(Map.of(AlipayLitePayClient.BUYER_ID_KEY, buyerId));
72 84  
73   - assertEquals(WAITING.getStatus(), client.unifiedOrder(reqDTO).getStatus());
  85 + PayOrderRespDTO resp = client.unifiedOrder(reqDTO);
  86 +
  87 + assertEquals(WAITING.getStatus(), resp.getStatus());
  88 + assertEquals(reqDTO.getOutTradeNo(), resp.getOutTradeNo());
  89 + assertEquals(PayOrderDisplayModeEnum.APP.getMode(), resp.getDisplayMode());
  90 + assertSame(response, resp.getRawData());
74 91 }
75 92  
76 93 @Test
... ... @@ -83,7 +100,12 @@ public class AlipayLitePayClientTest extends AbstractAlipayClientTest {
83 100 PayOrderUnifiedReqDTO reqDTO = buildOrderUnifiedReqDTO(randomURL(), randomString(), randomInteger());
84 101 reqDTO.setChannelExtras(Map.of("openid", buyerOpenId));
85 102  
86   - assertEquals(WAITING.getStatus(), client.unifiedOrder(reqDTO).getStatus());
  103 + PayOrderRespDTO resp = client.unifiedOrder(reqDTO);
  104 +
  105 + assertEquals(WAITING.getStatus(), resp.getStatus());
  106 + assertEquals(reqDTO.getOutTradeNo(), resp.getOutTradeNo());
  107 + assertEquals(PayOrderDisplayModeEnum.APP.getMode(), resp.getDisplayMode());
  108 + assertSame(response, resp.getRawData());
87 109 }
88 110  
89 111 @Test
... ... @@ -97,7 +119,12 @@ public class AlipayLitePayClientTest extends AbstractAlipayClientTest {
97 119 PayOrderUnifiedReqDTO reqDTO = buildOrderUnifiedReqDTO(randomURL(), randomString(), randomInteger());
98 120 reqDTO.setChannelExtras(Map.of(AlipayLitePayClient.BUYER_OPEN_ID_KEY, buyerOpenId));
99 121  
100   - assertEquals(WAITING.getStatus(), client.unifiedOrder(reqDTO).getStatus());
  122 + PayOrderRespDTO resp = client.unifiedOrder(reqDTO);
  123 +
  124 + assertEquals(WAITING.getStatus(), resp.getStatus());
  125 + assertEquals(reqDTO.getOutTradeNo(), resp.getOutTradeNo());
  126 + assertEquals(PayOrderDisplayModeEnum.APP.getMode(), resp.getDisplayMode());
  127 + assertSame(response, resp.getRawData());
101 128 }
102 129  
103 130 @Test
... ... @@ -117,6 +144,13 @@ public class AlipayLitePayClientTest extends AbstractAlipayClientTest {
117 144 PayOrderRespDTO resp = client.unifiedOrder(reqDTO);
118 145  
119 146 assertEquals(CLOSED.getStatus(), resp.getStatus());
  147 + assertEquals(reqDTO.getOutTradeNo(), resp.getOutTradeNo());
  148 + assertNull(resp.getChannelOrderNo());
  149 + assertNull(resp.getChannelUserId());
  150 + assertNull(resp.getSuccessTime());
  151 + assertNull(resp.getDisplayMode());
  152 + assertNull(resp.getDisplayContent());
  153 + assertSame(response, resp.getRawData());
120 154 assertEquals(subCode, resp.getChannelErrorCode());
121 155 assertEquals(subMsg, resp.getChannelErrorMsg());
122 156 }
... ... @@ -130,6 +164,28 @@ public class AlipayLitePayClientTest extends AbstractAlipayClientTest {
130 164 assertThrows(ServiceException.class, () -> client.unifiedOrder(reqDTO));
131 165 }
132 166  
  167 + @Test
  168 + @DisplayName("支付宝小程序支付:抛出业务异常")
  169 + public void testUnifiedOrder_throwServiceException() throws AlipayApiException {
  170 + when(defaultAlipayClient.execute(argThat((ArgumentMatcher<AlipayTradeCreateRequest>) request -> true)))
  171 + .thenThrow(ServiceExceptionUtil.exception(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR));
  172 + PayOrderUnifiedReqDTO reqDTO = buildOrderUnifiedReqDTO(randomURL(), randomString(), randomInteger());
  173 + reqDTO.setChannelExtras(Map.of(AlipayLitePayClient.BUYER_OPEN_ID_KEY, randomString()));
  174 +
  175 + assertThrows(ServiceException.class, () -> client.unifiedOrder(reqDTO));
  176 + }
  177 +
  178 + @Test
  179 + @DisplayName("支付宝小程序支付:抛出系统异常")
  180 + public void testUnifiedOrder_throwPayException() throws AlipayApiException {
  181 + when(defaultAlipayClient.execute(argThat((ArgumentMatcher<AlipayTradeCreateRequest>) request -> true)))
  182 + .thenThrow(new RuntimeException("系统异常"));
  183 + PayOrderUnifiedReqDTO reqDTO = buildOrderUnifiedReqDTO(randomURL(), randomString(), randomInteger());
  184 + reqDTO.setChannelExtras(Map.of(AlipayLitePayClient.BUYER_OPEN_ID_KEY, randomString()));
  185 +
  186 + assertThrows(PayClientException.class, () -> client.unifiedOrder(reqDTO));
  187 + }
  188 +
133 189 private static ArgumentMatcher<AlipayTradeCreateRequest> assertRequest(String appId, String buyerId,
134 190 String buyerOpenId) {
135 191 return request -> {
... ...