Google Pay™

介绍

要开始处理 Google Pay 支付,您必须先与 Google 进行直接集成。集成完成后,您可以将 Google Pay 按钮添加到结账页面,并开始请求客户的加密支付信息。

Google Pay 的集成和支付可以简化为以下三个步骤:

步骤 1: 集成 Google Pay API
在您的网站或应用中集成 Google Pay API,完成必要的身份验证和支付设置。

步骤 2: Google Pay 按钮,并获取 google 加密预支付数据
在结账页面上添加 Google Pay 按钮,允许客户选择 Google Pay 进行支付。

步骤 3: 处理支付请求
使用 google 的加密 token 数据处理交易。

CRYPTOGRAM_3DS 凭证默认接收责任转移。对 Google Pay 应用 3DS 可为 PAN_ONLY 交易启用责任转移。

集成方式

PayKKa 提供了多种接入 Google Pay 的方式,您可以根据自己的需求选择合适的方式。

前端接入

直接接入 Google Pay SDK

步骤 1: 集成 Google Pay API

在正式上线之前,您需要在 Google Pay 和 Wallet 控制台注册并选择 paykkaeu 作为您的支付处理商。您还需要为您的域名设置允许列表。请注意,您必须以 Google 开发者身份登录才能进行此操作。如果未登录,您将被重定向到 Google Pay 的支持页面。

有关集成 Google Pay 的信息,请首先参考 Google Pay API 指南

当您向 Google API 提交支付数据请求时,请确保包含以下参数:

 'gateway': 'paykkaeu'
 'gatewayMerchantId': '<your merchant id>'

根据您的 公司注册地区gateway 参数的值会有所不同:

  • 欧洲公司:使用 paykkaeu
  • 香港公司:使用 paykka

示例:

{
  "type": "CARD",
  "parameters": {
    "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
    "allowedCardNetworks": ["AMEX", "DISCOVER", "MASTERCARD", "VISA"]
  },
  "tokenizationSpecification": {
    "type": "PAYMENT_GATEWAY",
    "parameters": {
      "gateway": "paykkaeu",
      "gatewayMerchantId": "<YOUR_MERCHANT_ID>"
    }
  }
}

注意:您需要在支付数据请求中指定支持的卡类型和卡组织。

步骤 2: 展示 Google Pay 按钮,并获取 google 加密预支付数据

  • 指定您的 Google Pay API 版本。
  • 选择支付的令牌化方法。
  • 指定支持的支付卡网络。
  • 说明您允许的付款方式。
  • 加载 Google Pay API JavaScript 库。
  • 创建 PaymentDataRequest 对象,创建 PaymentsClient API 对象。
  • 拉起 Google Pay 收银台并填充 PaymentDataRequest 信息
  • 选择银行卡支付调用 google pay js sdk 获取 paymentData 数据

了解更多关于 Google Pay 支付请求的信息,请阅读 Google Pay 对象参考

接入 PayKKa 收银台

参考 PayKKa Checkout UI Component

处理支付请求

现在您已经拥有了令牌,接下来是授权支付。将令牌放入您应用或网站后端服务器的卡片令牌支付请求的请求体中。并使用 paykka 支付服务商发起 Initiate Transaction

API Only

使用 Google Pay token 支付

您可以在我们的 API 中找到完整的列表以及完整的请求和响应示例。

示例 Initiate Transaction

{
  "merchant_id": "18356675194960",
  "payment_type": "PURCHASE",
  "trans_id": "m16093507243369",
  "timestamp": 1710329021387,
  "currency": "JPY",
  "amount": "1690",
  "notify_url": "https://myserver/callback",
  "payment": {
    "payment_method": "GOOGLE_PAY",
    "token_data": "GOOGLE PAY TOKEN DATA"
  }
}

响应:

{
  "ret_code": "000000",
  "ret_msg": "Success",
  "data": {
    "error_code": "0000",
    "error_description": "request success",
    "merchant_id": 18356675194960,
    "trans_id": "m1793xxx95791",
    "order_id": "GW201650334620472773",
    "status": "SUCCESS",
    "amount": 1690,
    "currency": "JPY",
    "shopper_reference": "RXIJ"
  }
}

如果ret_code字段为 0000 且status字段为 SUCCESS,则表示您的授权成功。如果授权未成功,可能是因为支付使用了无效/过期的卡片,或使用了有效卡片但可用余额不足。

商家 PSP 解密

如果您的开发能力很强,自行完成了 Google Pay 的 token 的解密。那么只需要发起 PayKKa 的支付 API 请求,传递解密后的交易卡信息,即可完成交易。

{
  "payment": {
    "payment_method": "GOOGLE_PAY",
    "exp_year": "2027",
    "exp_month": "08",
    "holder_name": "Ocie Vititoe",
    "card_no": "5204240493889658",
    "token_authentication": {
      "cryptogram": "ALbOGff2RLbTADtP3BuIAoABFA==",
      "token_format": "CRYPTOGRAM_3DS",
      "eci": "02",
      "account_verified": true,
      "card_holder_authenticated": true
    }
  }
}

其中,exp_yearexp_monthcard_nocryptogramtoken_formateciaccount_verifiedcard_holder_authenticated字段值来自于解密后的明文信息,但是有些字段并不是每次都会返回。

Hosted 收银台方式接入

如果您使用 PayKKa 的托管结账页面来接入 Google Pay, 只需要在开通商户过程中支持 Google Pay 并接受 Google Pay 支付, PayKKa 将在幕后处理与 Google Pay 的所有交易。这种集成方案,最为便捷。您需要调用发起收银台请求,获取 PayKKa 的收银台的跳转地址。

调用接口 Create Session

{
  "merchant_id": "18356675194960",
  "payment_type": "PURCHASE",
  "trans_id": "t202311081113",
  "timestamp": 1700805506000,
  "currency": "USD",
  "amount": 1250,
  "session_mode": "HOSTED",
  "display_merchant_name": "PayKKa Merchant",
  "display_locale": "zh-CN",
  "allowed_payment_methods": ["GOOGLE_PAY"]
}

其中指定session_mode字段值为 HOSTED,allowed_payment_methods允许支持 GOOGLE_PAY。

Component 方式接入

您可以在自己的付款页面集成 Google Pay 付款元素, 这种解决方案让您的客户不需要跳转到第三方付款页面,就可以在您的当前页面完成支付,体验更丝滑。但是这种方式,您需要提供您的付款页面所在的域名,在 PayKKa 上进行绑定验证。操作步骤:

引入 PayKKa Checkout UI Component 组件库

具体使用步骤可参考 PayKKa Checkout UI Component 使用文档 - PayKKa Docs for Payments

调用接口 Create Session

{
  "merchant_id": "18356675194960",
  "payment_type": "PURCHASE",
  "trans_id": "t202311081113",
  "timestamp": 1700805506000,
  "currency": "USD",
  "amount": 1250,
  "session_mode": "COMPONENT",
  "display_merchant_name": "PayKKa Merchant",
  "display_locale": "zh-CN",
  "allowed_payment_methods": ["GOOGLE_PAY"]
}

其中指定session_mode字段值为 COMPONENT,allowed_payment_methods允许支持 GOOGLE_PAY。

3D Secure

Google Pay 提供两种认证模式:

  • PAN_ONLY-卡片存储在您客户的 Google 帐号中。因此,支付凭证不绑定于 Android 设备(例如,桌面或非 Android 移动网页)。
  • CRYPTOGRAM_3DS-Google Pay 通过将支付凭证绑定到 Android 设备,并允许发卡行将认证委托给 Google,以实现 SCA 合规性,从而支持该设备上的所有后续支付。

以下是您如何在 PAN_ONLY 场景中遵守 SCA 要求的方法。

责任转移

经过 3DS 认证的 Google Pay 交易可以在以下场景中受益于责任转移:

  • 持卡人将其卡片直接添加到 Google Chrome 或 Google 产品中:该卡将作为资金主账号(FPAN)保存,并将支持经过 3DS 明确认证的交易的责任转移。
  • 持卡人使用 Android 设备将其卡片添加到原生 Google Pay 应用中:该卡将作为设备主账号(DPAN)保存,并将支持责任转移,因为在添加卡片时已完成认证。

尽管 ECI 值表明在认证过程中发生了降级,卡组织在授权阶段仍可能降级交易的责任转移。责任转移的结果是在授权后确定的。

为了享受使用 Google Pay 处理的 Visa 交易的责任转移,Visa 要求您选择加入 Visa 设备令牌的欺诈责任保护

3DS 示例:

{
  "merchant_id": "18356675194960",
  "payment_type": "PURCHASE",
  "trans_id": "m16093507243369",
  "timestamp": 1710329021387,
  "currency": "JPY",
  "amount": "1690",
  "notify_url": "https://myserver/callback",
  "return_url": "xxxxxx",
  "payment": {
    "payment_method": "GOOGLE_PAY",
    "token_data": "GOOGLE PAY TOKEN DATA"
  },
  "authentication": {
    "attempt": "AUTO",
    "exemption": "LOW_VALUE"
  }
}

测试 Google Pay

要测试 Google Pay 支付,您必须首先创建一个测试 paykka.com 账户。

然后,您将能够在沙盒环境中使用我们的测试卡模拟不同的支付流程。Google 还提供了 模拟测试卡,您可以将其添加到您的钱包中。

如果您在 Google 的测试环境中使用真实卡片进行支付,Google Pay 会在加密支付数据中提供一张测试卡。这确保不会发生实际交易。

这种用于测试的自动支付数据加密仅适用于 Google Pay。请勿在沙盒环境中使用真实的卡号或卡片详情对其他支付方式进行测试。