Commit 19f554176c7fbb65b182848e2e3a51d476203f63
1 parent
3368a995
tina提交支付宝扫码单元测试
Showing
1 changed file
with
95 additions
and
0 deletions
yudao-framework/yudao-spring-boot-starter-biz-pay/src/test/java/cn.iocoder.yudao.framework.pay.core.client.impl/alipay/AlipayQrPayClientTest.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.pay.core.client.impl.alipay; | |
| 2 | +import cn.hutool.core.util.ReflectUtil; | |
| 3 | +import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; | |
| 4 | +import cn.iocoder.yudao.framework.pay.core.client.PayCommonResult; | |
| 5 | +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderUnifiedReqDTO; | |
| 6 | +import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; | |
| 7 | +import com.alipay.api.AlipayApiException; | |
| 8 | +import com.alipay.api.DefaultAlipayClient; | |
| 9 | +import com.alipay.api.request.AlipayTradePrecreateRequest; | |
| 10 | +import com.alipay.api.response.AlipayTradePrecreateResponse; | |
| 11 | +import org.junit.jupiter.api.Test; | |
| 12 | +import org.mockito.ArgumentMatcher; | |
| 13 | +import org.mockito.InjectMocks; | |
| 14 | +import org.mockito.Mock; | |
| 15 | + | |
| 16 | +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | |
| 17 | +import static org.junit.jupiter.api.Assertions.assertEquals; | |
| 18 | +import static org.junit.jupiter.api.Assertions.assertNotSame; | |
| 19 | +import static org.mockito.ArgumentMatchers.argThat; | |
| 20 | +import static org.mockito.Mockito.when; | |
| 21 | + | |
| 22 | +public class AlipayQrPayClientTest extends BaseMockitoUnitTest { | |
| 23 | + | |
| 24 | + private final AlipayPayClientConfig config = new AlipayPayClientConfig() | |
| 25 | + .setAppId("2021000118634035") | |
| 26 | + .setServerUrl(AlipayPayClientConfig.SERVER_URL_SANDBOX) | |
| 27 | + .setSignType(AlipayPayClientConfig.SIGN_TYPE_DEFAULT) | |
| 28 | + .setPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCHsEV1cDupwJ" + | |
| 29 | + "v890x84qbppUtRIfhaKSwSVN0thCcsDCaAsGR5MZslDkO8NCT9V4r2SVXjyY7eJUZlZd1M0C8T" + | |
| 30 | + "01Tg4UOx5LUbic0O3A1uJMy6V1n9IyYwbAW3AEZhBd5bSbPgrqvmv3NeWSTQT6Anxnllf+2iDH" + | |
| 31 | + "6zyA2fPl7cYyQtbZoDJQFGqr4F+cGh2R6akzRKNoBkAeMYwoY6es2lX8sJxCVPWUmxNUoL3tScw" + | |
| 32 | + "lSpd7Bxw0q9c/X01jMwuQ0+Va358zgFiGERTE6yD01eu40OBDXOYO3z++y+TAYHlQQ2toMO63tr" + | |
| 33 | + "epo88X3xV3R44/1DH+k2pAm2IF5ixiLrAgMBAAECggEAPx3SoXcseaD7rmcGcE0p4SMfbsUDdk" + | |
| 34 | + "USmBBbtfF0GzwnqNLkWa+mgE0rWt9SmXngTQH97vByAYmLPl1s3G82ht1V7Sk7yQMe74lhFllr" + | |
| 35 | + "8eEyTjeVx3dTK1EEM4TwN+936DTXdFsr4TELJEcJJdD0KaxcCcfBLRDs2wnitEFZ9N+GoZybVmY8w" + | |
| 36 | + "0e0MI7PLObUZ2l0X4RurQnfG9ZxjXjC7PkeMVv7cGGylpNFi3BbvkRhdhLPDC2E6wqnr9e7zk+hiENi" + | |
| 37 | + "vAezXrtxtwKovzCtnWJ1r0IO14Rh47H509Ic0wFnj+o5YyUL4LdmpL7yaaH6fM7zcSLFjNZPHvZCKPw" + | |
| 38 | + "YcQKBgQDQFho98QvnL8ex4v6cry4VitGpjSXm1qP3vmMQk4rTsn8iPWtcxPjqGEqOQJjdi4Mi0VZKQO" + | |
| 39 | + "LFwlH0kl95wNrD/isJ4O1yeYfX7YAXApzHqYNINzM79HemO3Yx1qLMW3okRFJ9pPRzbQ9qkTpsaegsm" + | |
| 40 | + "yX316zOBhzGRYjKbutTYwKBgQCm7phr9XdFW5Vh+XR90mVs483nrLmMiDKg7YKxSLJ8amiDjzPejCn7i9" + | |
| 41 | + "5Hah08P+2MIZLIPbh2VLacczR6ltRRzN5bg5etFuqSgfkuHyxpoDmpjbe08+Q2h8JBYqcC5Nhv1AKU4iOU" + | |
| 42 | + "hVLHo/FBAQliMcGc/J3eiYTFC7EsNx382QKBgClb20doe7cttgFTXswBvaUmfFm45kmla924B7SpvrQpDD" + | |
| 43 | + "/f+VDtDZRp05fGmxuduSjYdtA3aVtpLiTwWu22OUUvZZqHDGruYOO4Hvdz23mL5b4ayqImCwoNU4bAZIc9v1" + | |
| 44 | + "8p/UNf3/55NNE3oGcf/bev9rH2OjCQ4nM+Ktwhg8CFAoGACSgvbkShzUkv0ZcIf9ppu+ZnJh1AdGgINvGwaJ" + | |
| 45 | + "8vQ0nm/8h8NOoFZ4oNoGc+wU5Ubops7dUM6FjPR5e+OjdJ4E7Xp7d5O4J1TaIZlCEbo5OpdhaTDDcQvrkFu+Z4e" + | |
| 46 | + "N0qzj+YAKjDAOOrXc4tbr5q0FsgXscwtcNfaBuzFVTUrUkCgYEAwzPnMNhWG3zOWLUs2QFA2GP4Y+J8cpUYfj6p" + | |
| 47 | + "bKKzeLwyG9qBwF1NJpN8m+q9q7V9P2LY+9Lp9e1mGsGeqt5HMEA3P6vIpcqLJLqE/4PBLLRzfccTcmqb1m71+erx" + | |
| 48 | + "TRhHBRkGS+I7dZEb3olQfnS1Y1tpMBxiwYwR3LW4oXuJwj8=") | |
| 49 | + .setAlipayPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnq90KnF4dTnlzzmxpujbI05OYqi5WxAS6cL0" + | |
| 50 | + "gnZFv2gK51HExF8v/BaP7P979PhFMgWTqmOOI+Dtno5s+yD09XTY1WkshbLk6i4g2Xlr8fyW9ODnkU88RI2w9UdPhQU4cPPwBN" + | |
| 51 | + "lrsYhKkVK2OxwM3kFqjoBBY0CZoZCsSQ3LDH5WeZqPArlsS6xa2zqJBuuoKjMrdpELl3eXSjP8K54eDJCbeetCZNKWLL3DPahTPB7LZ" + | |
| 52 | + "ikfYmslb0QUvCgGapD0xkS7eVq70NaL1G57MWABs4tbfWgxike4Daj3EfUrzIVspQxj7w8HEj9WozJPgL88kSJSits0pqD3n5r8HSuseQIDAQAB"); | |
| 53 | + // 创建客户端 | |
| 54 | + | |
| 55 | + @InjectMocks | |
| 56 | + AlipayQrPayClient client=new AlipayQrPayClient(10L,config); | |
| 57 | + | |
| 58 | + @Mock | |
| 59 | + private DefaultAlipayClient defaultAlipayClient; | |
| 60 | + | |
| 61 | + @Test | |
| 62 | + public void testDoInit(){ | |
| 63 | + client.doInit(); | |
| 64 | + assertNotSame(defaultAlipayClient, ReflectUtil.getFieldValue(client, "defaultAlipayClient")); | |
| 65 | + | |
| 66 | + } | |
| 67 | + @Test | |
| 68 | + public void create() throws AlipayApiException { | |
| 69 | + | |
| 70 | + Long shopOrderId = System.currentTimeMillis(); | |
| 71 | + PayOrderUnifiedReqDTO reqDTO=new PayOrderUnifiedReqDTO(); | |
| 72 | + reqDTO.setMerchantOrderId(String.valueOf(System.currentTimeMillis())); | |
| 73 | + reqDTO.setAmount(1L); | |
| 74 | + reqDTO.setBody("内容:" + shopOrderId); | |
| 75 | + reqDTO.setSubject("标题:"+shopOrderId); | |
| 76 | + String notify="http://niubi.natapp1.cc/api/pay/order/notify"; | |
| 77 | + reqDTO.setNotifyUrl(notify); | |
| 78 | + | |
| 79 | + AlipayTradePrecreateResponse response=randomPojo(AlipayTradePrecreateResponse.class,o->o.setQrCode("success")); | |
| 80 | + | |
| 81 | + when(defaultAlipayClient.execute(argThat((ArgumentMatcher<AlipayTradePrecreateRequest>) request ->{ | |
| 82 | + assertEquals(notify,request.getNotifyUrl()); | |
| 83 | + return true; | |
| 84 | + }))).thenReturn(response); | |
| 85 | + | |
| 86 | + | |
| 87 | + PayCommonResult<AlipayTradePrecreateResponse> result = client.doUnifiedOrder(reqDTO); | |
| 88 | + // 断言 | |
| 89 | + assertEquals(response.getCode(), result.getApiCode()); | |
| 90 | + assertEquals(response.getMsg(), result.getApiMsg()); | |
| 91 | + assertEquals(GlobalErrorCodeConstants.SUCCESS.getCode(), result.getCode()); | |
| 92 | + assertEquals(GlobalErrorCodeConstants.SUCCESS.getMsg(), result.getMsg()); | |
| 93 | + | |
| 94 | + } | |
| 95 | +} | ... | ... |