fix wechat mini program virtual payment flow
This commit is contained in:
@@ -14,6 +14,7 @@ describe('wechat-pay mini program payment bridge', () => {
|
||||
globalThis.wx = {
|
||||
requestPayment: vi.fn(),
|
||||
requestVirtualPayment: vi.fn(),
|
||||
getSystemInfoSync: vi.fn(() => ({ SDKVersion: '2.32.0' })),
|
||||
setStorageSync: vi.fn(),
|
||||
navigateBack: vi.fn(),
|
||||
};
|
||||
@@ -32,9 +33,9 @@ describe('wechat-pay mini program payment bridge', () => {
|
||||
signature: 'user-sig',
|
||||
};
|
||||
|
||||
const status = await requestWechatPayment(payParams);
|
||||
const result = await requestWechatPayment(payParams);
|
||||
|
||||
expect(status).toBe('success');
|
||||
expect(result).toEqual({ status: 'success', errorMessage: '' });
|
||||
expect(globalThis.wx.requestVirtualPayment).toHaveBeenCalledWith({
|
||||
mode: 'short_series_coin',
|
||||
signData: payParams.signData,
|
||||
@@ -58,9 +59,9 @@ describe('wechat-pay mini program payment bridge', () => {
|
||||
signature: 'user-sig',
|
||||
};
|
||||
|
||||
const status = await requestWechatPayment(payParams);
|
||||
const result = await requestWechatPayment(payParams);
|
||||
|
||||
expect(status).toBe('success');
|
||||
expect(result).toEqual({ status: 'success', errorMessage: '' });
|
||||
expect(globalThis.wx.requestVirtualPayment).toHaveBeenCalledWith({
|
||||
mode: 'short_series_goods',
|
||||
signData: payParams.signData,
|
||||
@@ -77,7 +78,7 @@ describe('wechat-pay mini program payment bridge', () => {
|
||||
options.success?.();
|
||||
});
|
||||
|
||||
const status = await requestWechatPayment({
|
||||
const result = await requestWechatPayment({
|
||||
timeStamp: '1777110165',
|
||||
nonceStr: 'nonce',
|
||||
package: 'prepay_id=wx-prepay',
|
||||
@@ -85,7 +86,7 @@ describe('wechat-pay mini program payment bridge', () => {
|
||||
paySign: 'signature',
|
||||
});
|
||||
|
||||
expect(status).toBe('success');
|
||||
expect(result).toEqual({ status: 'success', errorMessage: '' });
|
||||
expect(globalThis.wx.requestPayment).toHaveBeenCalledWith({
|
||||
timeStamp: '1777110165',
|
||||
nonceStr: 'nonce',
|
||||
@@ -110,7 +111,13 @@ describe('wechat-pay mini program payment bridge', () => {
|
||||
paySig: 'pay-sig',
|
||||
signature: 'user-sig',
|
||||
}),
|
||||
).resolves.toBe('cancel');
|
||||
).resolves.toEqual({
|
||||
status: 'cancel',
|
||||
errorMessage: JSON.stringify({
|
||||
errCode: -2,
|
||||
errMsg: 'requestVirtualPayment:fail cancel',
|
||||
}),
|
||||
});
|
||||
});
|
||||
|
||||
test('page notifies previous web-view after virtual payment', async () => {
|
||||
@@ -118,7 +125,7 @@ describe('wechat-pay mini program payment bridge', () => {
|
||||
data: { webViewUrl: 'https://web.test/#tab=profile' },
|
||||
setData: vi.fn(),
|
||||
};
|
||||
globalThis.getCurrentPages = vi.fn(() => [{}, previousPage]);
|
||||
globalThis.getCurrentPages = vi.fn(() => [previousPage, {}]);
|
||||
globalThis.wx.requestVirtualPayment.mockImplementationOnce((options) => {
|
||||
options.success?.({ errMsg: 'requestVirtualPayment:ok' });
|
||||
});
|
||||
@@ -128,6 +135,7 @@ describe('wechat-pay mini program payment bridge', () => {
|
||||
|
||||
await page.onLoad({
|
||||
requestId: 'request-1',
|
||||
orderId: 'order-1',
|
||||
payParams: encodeURIComponent(
|
||||
JSON.stringify({
|
||||
mode: 'short_series_coin',
|
||||
@@ -140,10 +148,10 @@ describe('wechat-pay mini program payment bridge', () => {
|
||||
|
||||
expect(globalThis.wx.setStorageSync).toHaveBeenCalledWith(
|
||||
'genarrative:wechat-pay-result',
|
||||
'request-1:success',
|
||||
'request-1:success:order-1',
|
||||
);
|
||||
expect(previousPage.setData).toHaveBeenCalledWith({
|
||||
webViewUrl: 'https://web.test/#tab=profile&wx_pay_result=request-1%3Asuccess',
|
||||
webViewUrl: 'https://web.test/#tab=profile&wx_pay_result=request-1%3Asuccess%3Aorder-1',
|
||||
});
|
||||
expect(globalThis.wx.navigateBack).toHaveBeenCalled();
|
||||
});
|
||||
@@ -152,8 +160,8 @@ describe('wechat-pay mini program payment bridge', () => {
|
||||
expect(parsePayParams(encodeURIComponent('{"paySign":"sig"}'))).toEqual({
|
||||
paySign: 'sig',
|
||||
});
|
||||
expect(appendPayResult('https://web.test/#old=1', 'req', 'fail')).toBe(
|
||||
'https://web.test/#old=1&wx_pay_result=req%3Afail',
|
||||
expect(appendPayResult('https://web.test/#old=1', 'req:fail:order-1')).toBe(
|
||||
'https://web.test/#old=1&wx_pay_result=req%3Afail%3Aorder-1',
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user