You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel集成Stripe处理Apple Pay令牌时提示Invalid token id,如何解决?

解决Apple Pay令牌在Stripe PaymentIntent中报错「Invalid token id」的问题

问题核心原因

Google Pay返回的是Stripe直接兼容的标准令牌(如tok_xxx格式),但Apple Pay返回的是EC_v1格式的加密支付令牌,它包含data、header、version三个核心部分,仅传递token.data无法被Stripe识别,因此触发「Invalid token id」错误。

解决方案步骤

1. 前端调整:传递完整的Apple Pay令牌

不要再单独发送token.data,而是将整个token对象(包含data、header、version的JSON结构)转换为字符串后发送给后端。

Flutter端示例代码:

// 假设拿到的Apple Pay响应为paymentResult
var applePayToken = paymentResult['token'];
// 将完整token对象转为JSON字符串发送
var requestData = {
  'amount': 100,
  'currency': 'usd',
  'apple_pay_token': jsonEncode(applePayToken),
};
// 发送requestData到后端接口

2. 后端Laravel代码修改

接收完整的Apple Pay令牌字符串,直接传入payment_method_data.card.token字段:

$intent = PaymentIntent::create([
    'amount' => $data['amount'] * 100, // 转换为分单位
    'currency' => $data['currency'],
    'payment_method_types' => ['card'],
    'payment_method_data' => [
        'type' => 'card',
        'card' => [
            'token' => $data['apple_pay_token'], // 传入完整的Apple Pay令牌JSON字符串
        ]
    ],
]);

额外检查项

  • 确认Stripe账号已开启Apple Pay功能,并完成商户ID、支付证书的配置。
  • 确保前端传递的令牌字符串格式完整,无截断或转义错误。

内容的提问来源于stack exchange,提问作者ProIEZRush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 04:40:05