From 95f58aa70ed247746ace962b2e616a297f201104 Mon Sep 17 00:00:00 2001 From: imeepos Date: Sun, 28 Sep 2025 12:32:45 +0800 Subject: [PATCH] feat: add cb url for payment --- src/pages/result/index.tsx | 6 +++--- src/platforms/h5/payment.ts | 9 ++++++++- src/sdk/sdk-server.ts | 5 +++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/pages/result/index.tsx b/src/pages/result/index.tsx index 41ad505..98388df 100644 --- a/src/pages/result/index.tsx +++ b/src/pages/result/index.tsx @@ -56,10 +56,10 @@ const ResultPage: React.FC = () => { const instance = getCurrentInstance(); const params = instance?.router?.params; - if (params?.taskId) { - setTaskId(params.taskId); + if (params?.payment_id) { + setTaskId(params.payment_id); // 开始轮询 - pollTaskResult(params.taskId); + pollTaskResult(params.payment_id); } else { showToast({ title: '缺少taskId参数', diff --git a/src/platforms/h5/payment.ts b/src/platforms/h5/payment.ts index cc22f93..b910836 100644 --- a/src/platforms/h5/payment.ts +++ b/src/platforms/h5/payment.ts @@ -3,9 +3,16 @@ import { Payment } from "../types/payment"; export class H5Payment extends Payment { async pay(templateCode: string, imageUrl: string) { const sdk = useServerSdk() - const response = await sdk.payTemplateCode(templateCode, imageUrl) + const { hostname, protocol, port } = window.location; + let baseUrl = `${protocol}//${hostname}` + if (hostname === 'localhost') { + baseUrl = `${protocol}//${hostname}:${port}` + } + const cbUrl = `${baseUrl}` + const response = await sdk.payTemplateCode(templateCode, imageUrl, cbUrl) if (response.url) { window.location.href = response.url; + return; } throw new Error(`payment error: ${response}`) } diff --git a/src/sdk/sdk-server.ts b/src/sdk/sdk-server.ts index 9095584..97a6090 100644 --- a/src/sdk/sdk-server.ts +++ b/src/sdk/sdk-server.ts @@ -368,10 +368,11 @@ export class SdkServer { /** * 如果多图的话 images.join(',') */ - async payTemplateCode(templateCode: string, imageUrl: string) { + async payTemplateCode(templateCode: string, imageUrl: string, cbUrl: string) { try { const response = await this.request(`/payment/checkout/${templateCode}`, 'POST', { - imageUrl: imageUrl + imageUrl: imageUrl, + cb_url: cbUrl }) return response.data as {url: string}; } catch (error) {