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

使用React集成Google Pay DIRECT模式为何每次需输入CVC?

问题描述

在React项目中使用@google-pay/button-react的GooglePayButton组件时,已将Google Pay的tokenizationSpecification类型设置为DIRECT,但每次点击支付按钮,支付弹窗都会要求输入CVC。相关代码示例及弹窗截图如下:

核心配置片段

tokenizationSpecification: {
    type: 'DIRECT',
    parameters: {
         protocolVersion: 'ECv2',
         publicKey:"YOUR_PUBLIC_KEY"
    }
}

完整组件代码

<GooglePayButton
  environment="TEST"
  buttonSizeMode="fill"
  paymentRequest={{
    apiVersion: 2,
    apiVersionMinor: 0,
    allowedPaymentMethods: [
      {
        type: "CARD",
        parameters: {
          allowedAuthMethods: ["PAN_ONLY", "CRYPTOGRAM_3DS"],
          allowedCardNetworks: ["MASTERCARD", "VISA"],
        },
        tokenizationSpecification: {
          type: "DIRECT",
          parameters: {
            protocolVersion: "ECv2",
            publicKey: "PUBLIC_KEY",
          },
        },
      },
    ],
    merchantInfo: {
      merchantId: "01234567890123456789",
      merchantName: "Demo Only (you will not be charged)",
    },
    transactionInfo: storeService.getTransactionInfo([cartItem]),
    shippingAddressRequired: true,
    shippingOptionRequired: true,
    shippingOptionParameters: storeService.getShippingOptionParameters(),
    callbackIntents: ["SHIPPING_ADDRESS", "SHIPPING_OPTION"],
  }}
  onLoadPaymentData={async (paymentData) => {
    console.log(paymentData);
  }}
  onPaymentDataChanged={(paymentData) => {
    return {
      newTransactionInfo: storeService.getTransactionInfo(
        [cartItem],
        paymentData.shippingAddress,
        paymentData.shippingOptionData,
      ),
    };
  }}
/>

支付弹窗截图

支付弹窗


原因分析及解决方案

出现这个问题主要有两个原因:

  • 测试环境的强制验证逻辑
    你当前用的是environment="TEST"测试环境,Google Pay在测试模式下,哪怕配置了DIRECT tokenization,也会强制要求输入CVC,目的是让开发者能完整模拟真实支付的验证流程,这是测试环境的默认行为。

  • 支付验证方式的配置影响
    你的allowedAuthMethods同时包含PAN_ONLY和CRYPTOGRAM_3DS:

    • PAN_ONLY对应直接输入卡片信息的场景,测试环境下必然触发CVC输入要求;
    • 只有选择已保存的、支持CRYPTOGRAM_3DS的卡片才可能跳过CVC,但测试环境中这类可用卡片样本极少。

解决办法

  1. 切换到生产环境:将environment改为PRODUCTION,同时确保你的DIRECT tokenization配置完全符合Google Pay的生产要求(包括有效公钥、已验证的商户ID),此时用户已保存的有效卡片不会要求输入CVC。
  2. 测试环境适配:如果要在测试环境验证无CVC流程,可以使用Google Pay官方提供的测试卡片库中支持CRYPTOGRAM_3DS的测试卡片,这类卡片在测试流程中可能会跳过CVC输入环节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:25:35