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

Google Pay与Authorize.net集成问题:无效所有权错误

Google Pay 集成 Authorize.net 遇到「无效所有权」错误(错误代码153)

错误详情

交易时触发**「无效所有权」错误**,错误代码153:

There was an error processing the payment data. Invalid ownership.

已完成配置步骤

  • 遵循Authorize.net Google Pay官方设置指南
  • 确认Authorize.net账户使用支持的支付处理器
  • 生成并配置Authorize.net API Login ID和Transaction Key
  • 在Authorize.net商户后台启用Google Pay服务
  • 确认应用符合Google Pay开发者要求
  • 疑似Google Pay公钥生成/配置有误,尚未获取并配置Google KeySet ID

核心问题

  1. 如何为Authorize.net正确生成Google Pay公钥和KeySet ID?
  2. 在Google Pay & Wallet Console中获取KeySet ID的具体步骤是什么?
  3. 「无效所有权」错误是否与未配置正确公钥有关?

补充信息(2025/01/29)

  • 技术栈:Ionic 6 / Angular 16 / Capacitor / C# .NET API
  • Google Pay库:@ionic-enterprise/google-pay": "^2.2.2
  • 端到端流程:
    • 向Google Pay发送GooglePayTransactionInfo对象发起授权请求
    • 调用GooglePay.makePaymentRequest({..})获取支付令牌,转换为base64格式
    • 将令牌传入后端C# SDK处理交易,但仍返回无效所有权错误

问题解答

3. 「无效所有权」错误是否与未配置正确公钥有关?

是的,该错误几乎肯定与Google Pay公钥/KeySet ID的配置不匹配直接相关。Authorize.net需要通过Google提供的公钥验证支付令牌的所有权合法性,未配置或配置错误的公钥会导致验证失败,触发153错误。

2. 在Google Pay & Wallet Console中获取KeySet ID的具体步骤

  • 登录Google Pay & Wallet Console,进入你的目标项目
  • 左侧导航栏选择「支付方法设置」>「令牌化密钥」
  • 点击「创建令牌化密钥」,选择「Authorize.net」作为支付服务提供商
  • 填写必填信息:包括你的Authorize.net商户ID、应用的域名(Web端)或包名(Capacitor移动端)
  • 创建完成后,在令牌化密钥列表中即可看到对应的KeySet ID,同时可下载PEM格式的公钥文件

1. 为Authorize.net正确配置Google Pay公钥和KeySet ID的步骤

  1. 按上述步骤在Google Pay & Wallet Console获取KeySet ID和PEM公钥文件
  2. 登录Authorize.net商户后台,进入「设置」>「支付设置」>「Google Pay」配置页面
  3. 处理公钥:打开下载的PEM文件,去掉首尾的-----BEGIN PUBLIC KEY-----、-----END PUBLIC KEY-----标记及所有换行符,保留纯公钥字符串
  4. 将处理后的公钥字符串粘贴到Authorize.net的「公钥」输入框,同时填入获取到的KeySet ID
  5. 保存配置,确保测试环境和生产环境的配置分别对应沙箱/正式资源

额外排查点(针对你的技术栈)

  • 前端GooglePay.makePaymentRequest的gateway配置需正确指向Authorize.net:
    const paymentRequest = {
      // 其他配置...
      gateway: {
        gatewayId: 'authorize_net',
        merchantId: '你的Authorize.net商户ID'
      }
    };
    const result = await GooglePay.makePaymentRequest(paymentRequest);
    
  • 后端C# SDK处理令牌时,需正确构造OpaqueData对象:
    var opaqueData = new OpaqueDataType
    {
        DataDescriptor = "COMMON.GOOGLE.PAY",
        DataValue = "前端传入的base64格式令牌"
    };
    var paymentType = new PaymentType { OpaqueData = opaqueData };
    // 构造CreateTransactionRequest并发起请求
    
  • 确认测试环境使用Authorize.net沙箱账户+Google Pay测试模式,生产环境切换为正式配置,避免跨环境混用导致验证失败

内容的提问来源于stack exchange,提问作者Robert Green MBA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:55:54