prefix = "whalet-checkout"{ prefix, type, payload }targetOrigin:生产环境强制使用精确的目标源,不应使用 '*'。interface BaseMessage<T extends string, P> {
prefix: 'whalet-checkout'
type: T
payload: P
}REQUEST_FORM_VALIDATION: 发起表单校验payload: {} 为空对象即可INITIATE_PAYMENT:发起支付payload: { tradeUniId: string; name: string; country: string; email?: string; billingAddress?: BillingAddress; ... }REPLY_FORM_VALIDATION_RESULT:表单校验结果回传payload(成功): { valid: true }payload(失败): { valid: false, errors?: Array<{ name: (string | number)[]; errors: string[] }> }REPLY_PAYMENT_RESULT:支付结果回传payload: { tradeUniId: string; status: 'success'|'failed'; paymentMethod?: string; message?: string }REPLY_ERROR:错误信息回传payload: { code?: string; message: string; detail?: unknown }BillingAddress 等。INITIATE_PAYMENT// Initiate
{
prefix: 'whalet-checkout',
type: 'INITIATE_PAYMENT',
payload: {
tradeUniId: string,
name: string,
country: string,
email?: string,
billingAddress?: BillingAddress,
// 其他必要字段...
}
}// Payment Result
{
prefix: 'whalet-checkout',
type: 'REPLY_PAYMENT_RESULT',
payload: {
tradeUniId: string,
status: 'success' | 'failed',
paymentMethod?: string,
message?: string
}
}
// Error
{
prefix: 'whalet-checkout',
type: 'REPLY_ERROR',
payload: {
code?: string,
message: string,
detail?: unknown,
}
}window 上监听 message 事件,过滤 prefix === 'whalet-checkout'type 路由到对应处理器targetOriginwindow 上监听父页面发送的 INITIATE_PAYMENT, REQUEST_FORM_VALIDATION 等消息REPLY_* 消息