对接微信支付

This commit is contained in:
2026-07-01 22:41:49 +08:00
parent b78ef8798c
commit ff4622ff6c
14 changed files with 389 additions and 19 deletions
+18 -1
View File
@@ -6,6 +6,19 @@ import { request } from '../lib/api';
import { buildOrderConfirmUrl } from '../lib/navigation';
import { isWechatEnv, weixinSdk } from '../lib/weixin';
function sleep(ms: number) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function waitOrderPaid(orderId: string, maxAttempts = 15) {
for (let i = 0; i < maxAttempts; i += 1) {
const order = await request<{ payStatus?: string }>('USER_H5', `/trade/orders/${orderId}`);
if (order.payStatus === 'PAID') return true;
await sleep(2000);
}
return false;
}
export default function PayPage() {
const [params] = useSearchParams();
const orderId = params.get('orderId') || '';
@@ -35,6 +48,10 @@ export default function PayPage() {
setMockMode(false);
await weixinSdk.init();
await weixinSdk.pay(result.prepay);
const paid = await waitOrderPaid(orderId);
if (!paid) {
alert('支付结果确认中,请稍后在订单列表查看');
}
navigate('/orders?tab=pending_ship');
return;
}
@@ -60,7 +77,7 @@ export default function PayPage() {
<p className="text-muted body-md" style={{ marginTop: 8 }}>
{mockMode
? 'preV1 Mock 模式:点击确认即完成;开启真实支付后将调起微信收银台'
: '请在微信内完成支付'}
: '请在微信内完成支付,支付成功后自动跳转'}
</p>
<p className="label-md text-muted" style={{ marginTop: 24 }}> {orderId}</p>
</div>