feat(M08-B): 接入保洁微信转账适配器

This commit is contained in:
Codex
2026-06-27 16:07:41 +08:00
parent 05907a6bea
commit b07c451700
22 changed files with 663 additions and 27 deletions
+22
View File
@@ -151,6 +151,16 @@ const app = await buildApp({
return { byStatus: { SUBMITTED: 2 }, pendingSettlementCents: 1200 };
}
},
payoutService: {
async executeWechatTransfer(input) {
calls.push(['executeWechatTransfer', input]);
return {
settlement: settlementResponse(input.mode === 'MOCK' ? 'PAID' : 'CONFIRMED'),
transferState: input.mode === 'MOCK' ? 'SUCCESS' : 'WAIT_USER_CONFIRM',
idempotent: false
};
}
},
mediaStorage: {
async storeImage(input) {
calls.push(['storeImage', input]);
@@ -373,6 +383,18 @@ assert.equal(paidSettlement.json().data.status, 'PAID');
assert.equal(paidSettlement.json().data.payoutReference, 'wx-paid-001');
assert.equal(calls.at(-1)[0], 'markSettlementPaid');
const wechatTransfer = await app.inject({
method: 'POST',
url: '/admin-api/cleaning/settlements/501/wechat-transfer',
headers: { authorization: `Bearer ${token}` },
payload: { mode: 'API', note: 'wechat transfer' }
});
assert.equal(wechatTransfer.statusCode, 200);
assert.equal(wechatTransfer.json().data.transferState, 'WAIT_USER_CONFIRM');
assert.equal(calls.at(-1)[0], 'executeWechatTransfer');
assert.equal(calls.at(-1)[1].settlementId, '501');
assert.equal(calls.at(-1)[1].mode, 'API');
const reclaimed = await app.inject({
method: 'POST',
url: '/admin-api/cleaning/reclaim-timeouts',