feat(M08-B): 补保洁微信转账回调与轮询
This commit is contained in:
@@ -159,6 +159,30 @@ const app = await buildApp({
|
||||
transferState: input.mode === 'MOCK' ? 'SUCCESS' : 'WAIT_USER_CONFIRM',
|
||||
idempotent: false
|
||||
};
|
||||
},
|
||||
async syncWechatTransfer(input) {
|
||||
calls.push(['syncWechatTransfer', input]);
|
||||
return {
|
||||
settlement: {
|
||||
...settlementResponse('PAID'),
|
||||
payoutChannel: 'WECHAT_TRANSFER',
|
||||
payoutReference: 'wx-transfer-sync-501'
|
||||
},
|
||||
transferState: 'SUCCESS',
|
||||
idempotent: false
|
||||
};
|
||||
},
|
||||
async processWechatTransferNotification(headers, rawBody, traceId) {
|
||||
calls.push(['processWechatTransferNotification', { headers, rawBody, traceId }]);
|
||||
return {
|
||||
settlement: {
|
||||
...settlementResponse('PAID'),
|
||||
payoutChannel: 'WECHAT_TRANSFER',
|
||||
payoutReference: 'wx-transfer-notify-501'
|
||||
},
|
||||
transferState: 'SUCCESS',
|
||||
idempotent: false
|
||||
};
|
||||
}
|
||||
},
|
||||
mediaStorage: {
|
||||
@@ -395,6 +419,36 @@ assert.equal(calls.at(-1)[0], 'executeWechatTransfer');
|
||||
assert.equal(calls.at(-1)[1].settlementId, '501');
|
||||
assert.equal(calls.at(-1)[1].mode, 'API');
|
||||
|
||||
const syncedWechatTransfer = await app.inject({
|
||||
method: 'POST',
|
||||
url: '/admin-api/cleaning/settlements/501/wechat-transfer/sync',
|
||||
headers: { authorization: `Bearer ${token}` },
|
||||
payload: { note: 'poll wechat transfer' }
|
||||
});
|
||||
assert.equal(syncedWechatTransfer.statusCode, 200);
|
||||
assert.equal(syncedWechatTransfer.json().data.transferState, 'SUCCESS');
|
||||
assert.equal(syncedWechatTransfer.json().data.settlement.payoutReference, 'wx-transfer-sync-501');
|
||||
assert.equal(calls.at(-1)[0], 'syncWechatTransfer');
|
||||
assert.equal(calls.at(-1)[1].settlementId, '501');
|
||||
|
||||
const wechatTransferNotify = await app.inject({
|
||||
method: 'POST',
|
||||
url: '/app-api/cleaning/wechat-transfer/notify',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
'wechatpay-timestamp': '1782700001',
|
||||
'wechatpay-nonce': 'notify-nonce',
|
||||
'wechatpay-serial': 'PLATFORM-SERIAL',
|
||||
'wechatpay-signature': 'signature'
|
||||
},
|
||||
payload: '{"resource":"encrypted"}'
|
||||
});
|
||||
assert.equal(wechatTransferNotify.statusCode, 200);
|
||||
assert.equal(wechatTransferNotify.json().code, 'SUCCESS');
|
||||
assert.equal(calls.at(-1)[0], 'processWechatTransferNotification');
|
||||
assert.equal(calls.at(-1)[1].headers.serial, 'PLATFORM-SERIAL');
|
||||
assert.equal(calls.at(-1)[1].rawBody, '{"resource":"encrypted"}');
|
||||
|
||||
const reclaimed = await app.inject({
|
||||
method: 'POST',
|
||||
url: '/admin-api/cleaning/reclaim-timeouts',
|
||||
|
||||
Reference in New Issue
Block a user