Parcourir la source

✅ test(payment): 增强支付回调集成测试

- 为租户1创建特定的回调数据,使用租户1支付记录的outTradeNo
- 模拟微信支付SDK解密,返回租户1的商户订单号
- 更新测试请求体,使用租户1的回调数据
yourname il y a 1 mois
Parent
commit
af4dc63663

+ 31 - 1
packages/mini-payment-mt/tests/integration/payment-callback.integration.test.ts

@@ -214,13 +214,43 @@ describe('支付回调API集成测试 - 多租户版本', () => {
       const tenant1Data = multiTenantData.tenant1;
       const tenant2Data = multiTenantData.tenant2;
 
+      // 为租户1创建特定的回调数据,使用租户1支付记录的outTradeNo
+      const tenant1RawBody = JSON.stringify({
+        "id": "495e231b-9fd8-54a1-8a30-2a38a807744c",
+        "create_time": "2025-10-25T12:48:11+08:00",
+        "resource_type": "encrypt-resource",
+        "event_type": "TRANSACTION.SUCCESS",
+        "summary": "支付成功",
+        "resource": {
+          "original_type": "transaction",
+          "algorithm": "AEAD_AES_256_GCM",
+          "ciphertext": "tl1/8FRRn6g0gRq8IoVR8+95VuIADYBDOt6N9PKiHVhiD6l++W5g/wg6VlsCRIZJ+KWMYTaf5FzQHMjCs8o9otIkLLuJA2aZC+kCQtGxNfyVBwxool/tLT9mHd0dFGThqbj8vb/lm+jjNcmmiWHz+J1ZRvGl7mH4I714vudok7JRt5Q0u0tYaLWr76TTXuQErlA7T4KbeVeGAj8iMpu2ErCpR9QRif36Anc5ARjNYrIWfraXlmUXVbXermDyJ8r4o/4QCFfGk8L1u1WqNYASrRTQvQ8OPqj/J21OkDxbPPrOiEmAX1jOvONvIVEe9Lbkm6rdhW4aLRoZYtiusAk/Vm7MI/UYPwRZbyuc4wwdA1T1D4RdJd/m2I4KSvZHQgs0DM0tLqlb0z3880XYNr8iPFnyu2r8Z8LGcXD+COm06vc7bvNWh3ODwmMrmZQkym/Y/T3X/h/4MZj7+1h2vYHqnnrsgtNPHc/2IwWC/fQlPwtSrLh6iUxSd0betFpKLSq08CaJZvnenpDf1ORRMvd8EhTtIJJ4mV4v+VzCOYNhIcBhKp9XwsuhxIdkpGGmNPpow2c2BXY=",
+          "associated_data": "transaction",
+          "nonce": "sTnWce32BTQP"
+        }
+      });
+
+      // 模拟微信支付SDK解密,返回租户1的商户订单号
+      const mockWxPay = {
+        verifySign: vi.fn().mockResolvedValue(true),
+        decipher_gcm: vi.fn().mockReturnValue(JSON.stringify({
+          out_trade_no: tenant1Data.payment.outTradeNo, // 使用租户1的支付记录outTradeNo
+          trade_state: 'SUCCESS',
+          transaction_id: 'test_transaction_id',
+          amount: {
+            total: 1
+          }
+        }))
+      };
+      vi.mocked(WxPay).mockImplementation(() => mockWxPay as any);
+
       // 处理租户1的支付回调
       const response = await client.payment.callback.$post({
         json: {}
       }, {
         headers: callbackHeader,
         init: {
-          body: rawBody
+          body: tenant1RawBody
         }
       });