Google Pay ™


适用于:支持Google Pay支付场景

Google Pay 支付适用于主流 PC 和移动设备上的网页浏览器或 App 客户端。YabandPay 支持通过 Google Pay 使用以下卡组织的借记卡或信用卡:

  • Visa / VPay

  • Mastercard / Maestro

  • 银联(UnionPay)

结算账户需位于欧洲经济区(EEA)或英国。

[!TIP|style:flat]

所有使用 Google Pay 的商户必须遵守以下条款:

商户通过 YabandPay 托管式接入 Google Pay,即视为接受并同意遵守上述条款。

1. 凭据类型和3DS要求

Google Pay 支持以下两种凭据类型:

  • PAN_ONLY: 返回明文主账号的加密包装(cardInfo.cardDetails)及发卡网络(cardInfo.cardNetwork),不包含动态密码(cryptogram)。

  • CRYPTOGRAM_3DS: 返回基于令牌的加密凭据,包含网络令牌(DPAN)和动态密码,适用于更高安全级别的交易。

3DS要求:

当您通过 Google Pay API 接收到 PAN_ONLY 类型凭据时,必须执行 3D Secure 验证(设置参数 3ds_initiate=01)。若未进行 3DS 验证,交易将被YabandPay拒绝处理。

为确保兼容性与安全性,请遵循以下集成建议:

  • 您应在 Google Pay 的前端配置中同时启用 ["CRYPTOGRAM_3DS", "PAN_ONLY"];

  • 您在向 YabandPay 发起支付请求时,始终设置 3ds_initiate=01

  • YabandPay 后端将根据凭据类型自动判断是否执行3D Secure。

2. App 或网页端集成(自托管)

商户可通过集成 Google API 启动支付流程,适用于自托管前端网站或 App。以下为流程及配置说明:

支付流程:

Google Pay 使用设备中绑定的卡片凭据(DPAN,网络令牌)代替真实卡号(PAN)完成支付。支付流程如下:

1)用户在商户网站或 App 中点击 Google Pay 按钮;

2)通过 Face ID / Touch ID / 密码完成授权;

3)Google 返回加密 token;

4)商户将 token 提交给 YabandPay 处理。

注意:若商户选择自托管模式,需在 Google Pay & Wallet Console 中注册自己的 Google Pay 商户账号并获取 Merchant ID。该 Merchant ID 将绑定于 YabandPay 的支付通道。

API 配置示例:

"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "yabandpay",
    "gatewayMerchantId": "<由 YabandPay 分配的商户编号>"
  }
}
  • 接收到的 token 请进行 Base64 编码,作为 payment_token_object 字段提交至 YabandPay 支付接口;

  • gateway:固定值,必须为 "yabandpay"

  • 建议禁用地址验证,配置如下:

    billingAddressRequired: false
    

3. 托管式集成

YabandPay 提供托管式 Google Pay 支付解决方案,商户无需自行集成 Google Pay 按钮或 SDK,只需通过标准 API 请求提交订单,并将用户引导至 YabandPay 托管页面 https://pay.yabandpay.com,用户即可在该页面完成 Google Pay 支付。

由于托管模式中 Google Pay 由 YabandPay 页面承载,商户无需配置任何 CSP、加载 Google 脚本或设置 SDK 版本。

集成流程:

1)商户调用 YabandPay的托管支付解决方案(HPP)提交订单,YabandPay 返回 pay_url

2)用户被重定向至托管页面 pay_url

3)在该页面完成 Google Pay 支付流程;

4)支付完成后跳转回商户配置的 redirect_url,并异步通知至 notify_url

注意事项:

  • 商户无需加载 Google Pay JavaScript 或自行构造请求;

  • 所有 Google Pay 的后端解密、交易验证由 YabandPay 完成;

  • 商户需确保在YabandPay的商户后台启用了 Google Pay 支付方式;

  • 托管支付页面将自动展示商户名称、订单金额等信息,确保消费者可辨识性;

  • 所有交易将使用 YabandPay 的统一 Google Merchant ID 进行处理。

4. 授权方式说明

YabandPay 支持的 Google Pay 授权模式如下:

  • 支持一次性交易授权(DPAN + 动态密码);

  • 不支持存档卡(COF, Card-on-File);

  • 不支持 FIDO 生物识别身份验证。

5. 数据提交要求

  • 通过 HTTPS POST 提交加密后的 payment_token_object 字段至 YabandPay;

  • 所有数据通过 TLS 1.2 或更高版本加密传输;

  • YabandPay 使用符合 PCI DSS 要求的 HSM 安全模块进行后端解密处理。

6. Google 官方集成参考文档

通用资源:

App 集成指引:

Web 集成指引:


API URL:https://mapi.yabandpay.com/Payments

Method:POST

POST data type:Json

参数 类型 描述 是否必填
user String 收银员账号的UID 必填
sign String 签名 必填
method String v3.GooglePay 必填
time Long 时间戳 必填
  • 参数
Parameter Type Description 是否必填
pay_method String online 必填
sub_pay_method String Google Pay 必填
operation String 1. Sales; 2.Authorisation 必填
order_id String 商户的订单ID 必填
amount String 金额数字。例如 € 24.99 应该写成24.99 必填
currency String 货币代码,ISO 4217,例如EUR,CHF 必填
description String 订单描述 必填
demo String 自定义字段 选填
3ds_initiate String 3ds设置。 01. 开启3ds验证; 必填
payment_token_object String 从Google Pay拿到的“token”的字符串base64 必填
timeout String 过期时间0-1440 分钟,如不设置默认1440分钟 必填
redirect_url String 支付完成后跳转地址 选填
notify_url String 支付完成后异步通知地址 必填
request_id String 请求id需保持唯一,建议24以上位数字+字母 必填

payment_token_object获取方式:

Google Pay 返回的token示例:

{
    "signature": "MEUCIC+XtiYdlmjL2/1wEn33qnya8G4POk5jYkRNY5+MkdBlAiEAwoRYQu26ZopwpcOWlwUe/E+i4FKzpunCFZf44mS0cxQ\u003d",
    "intermediateSigningKey": {
        "signedKey": "{\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUJW8LjUtTV7esDMJLtCe8hYjlcQih8g7HP5bgO4ysma4/CwGq0CnZ5G0t0o44D92d9L3SfXS2GyK2PJMtE/NBg\\u003d\\u003d\",\"keyExpiration\":\"1724120515000\"}",
        "signatures": ["MEYCIQC1ZWgFEaSR1pNbwTW6liQL7WXZQZExx1Idj7oQzHvoPQIhAOx1b+9CamfDeZUcHXpU01xTfa6EaaH3TgKaTBnrsuuG"]
    },
    "protocolVersion": "ECv2",
    "signedMessage": "{\"encryptedMessage\":\"y+XA1ltwldTcmVSZwfVayP7b0hPNLODGyi2UgCCJcSSs0iBj73HML5eWcYBiT+T+ZP8SmV54U9E2AmuRwVeVYHai8Z/ajrxE7fM+Fv/e9IXt36WjC4SWhAHM8T/DkOlE6BcuoKAMz6iLkJJ40g0zAkUKijln5YEbhLXHRoh/5l/8wGNDxErI7JdNZ4cA9vh8go/gR2YXKxVngFH4PFHcGyKa4MKnYDATMBDdx/F+MI4vVtPLXruTPpG0HBgLlJct95LZl9T686sOWuwg4pWLLSqcbuqd+MAZZihy2FW+9cdKNXsebL91rRbq7dahtET1K90YzyWzM9CfntcjHf5YqhnssApnE+Jb7OZ+mn5hO27Z93by7G3Fgi7YxJqcW4o/4D+NIANe0BqwbFyhw5Un8rIKkXg//WD9TlFHl2oIgyOKnZLO8NrnfEffoxstvRft1enafD0DadUk2IL5+Q\\u003d\\u003d\",\"ephemeralPublicKey\":\"BFzys/8Oy4iBu0ZYlLcy5SNZUOKFQhTx/985qiMFKGssVm4Fk9hweWlemyClMbI216lbsPS4Sy15ab/75gW1v08\\u003d\",\"tag\":\"jpHUeHrZuI1y77wRisFznOadAzlP2je8RFpT9PFpmHs\\u003d\"}"
}

payment_token_object 字段为对接Google pay后拿到的token数据的base64_encode后的字符串

签名示例:

拼接为URL方式并排序后的字符串

"3ds_initiate=01&amount=0.1&currency=EUR&description=test&method=v3.GooglePayment&notify_url=https://www.yabandpay.com/notify&operation=1&order_id=1723517503&pay_method=online&payment_token_object=eyJzaWduYXR1cmUiOiJNRVVDSUMrWHRpWWRsbWpMMi8xd0VuMzNxbnlhOEc0UE9rNWpZa1JOWTUrTWtkQmxBaUVBd29SWVF1MjZab3B3cGNPV2x3VWUvRStpNEZLenB1bkNGWmY0NG1TMGN4UVx1MDAzZCIsImludGVybWVkaWF0ZVNpZ25pbmdLZXkiOnsic2lnbmVkS2V5Ijoie1wia2V5VmFsdWVcIjpcIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVVKVzhMalV0VFY3ZXNETUpMdENlOGhZamxjUWloOGc3SFA1YmdPNHlzbWE0L0N3R3EwQ25aNUcwdDBvNDREOTJkOUwzU2ZYUzJHeUsyUEpNdEUvTkJnXHUwMDNkXHUwMDNkXCIsXCJrZXlFeHBpcmF0aW9uXCI6XCIxNzI0MTIwNTE1MDAwXCJ9Iiwic2lnbmF0dXJlcyI6WyJNRVlDSVFDMVpXZ0ZFYVNSMXBOYndUVzZsaVFMN1dYWlFaRXh4MUlkajdvUXpIdm9QUUloQU94MWIrOUNhbWZEZVpVY0hYcFUwMXhUZmE2RWFhSDNUZ0thVEJucnN1dUciXX0sInByb3RvY29sVmVyc2lvbiI6IkVDdjIiLCJzaWduZWRNZXNzYWdlIjoie1wiZW5jcnlwdGVkTWVzc2FnZVwiOlwieStYQTFsdHdsZFRjbVZTWndmVmF5UDdiMGhQTkxPREd5aTJVZ0NDSmNTU3MwaUJqNzNITUw1ZVdjWUJpVCtUK1pQOFNtVjU0VTlFMkFtdVJ3VmVWWUhhaThaL2FqcnhFN2ZNK0Z2L2U5SVh0MzZXakM0U1doQUhNOFQvRGtPbEU2QmN1b0tBTXo2aUxrSko0MGcwekFrVUtpamxuNVlFYmhMWEhSb2gvNWwvOHdHTkR4RXJJN0pkTlo0Y0E5dmg4Z28vZ1IyWVhLeFZuZ0ZINFBGSGNHeUthNE1LbllEQVRNQkRkeC9GK01JNHZWdFBMWHJ1VFBwRzBIQmdMbEpjdDk1TFpsOVQ2ODZzT1d1d2c0cFdMTFNxY2J1cWQrTUFaWmloeTJGVys5Y2RLTlhzZWJMOTFyUmJxN2RhaHRFVDFLOTBZenlXek05Q2ZudGNqSGY1WXFobnNzQXBuRStKYjdPWittbjVoTzI3WjkzYnk3RzNGZ2k3WXhKcWNXNG8vNEQrTklBTmUwQnF3YkZ5aHc1VW44cklLa1hnLy9XRDlUbEZIbDJvSWd5T0tuWkxPOE5ybmZFZmZveHN0dlJmdDFlbmFmRDBEYWRVazJJTDUrUVx1MDAzZFx1MDAzZFwiLFwiZXBoZW1lcmFsUHVibGljS2V5XCI6XCJCRnp5cy84T3k0aUJ1MFpZbExjeTVTTlpVT0tGUWhUeC85ODVxaU1GS0dzc1ZtNEZrOWh3ZVdsZW15Q2xNYkkyMTZsYnNQUzRTeTE1YWIvNzVnVzF2MDhcdTAwM2RcIixcInRhZ1wiOlwianBIVWVIclp1STF5Nzd3UmlzRnpuT2FkQXpsUDJqZThSRnBUOVBGcG1Ic1x1MDAzZFwifSJ9&redirect_url=https://www.yabandpay.com/redirect_url&request_id=g77ur3oqhkqd348iljrb04pbj412rka3&sub_pay_method=Google Pay&time=1723517503&timeout=0&user=016683"

得到的 stringA 使用 secret_key做签名

得到的签名如下:

"121fd2d71b47f6d46ed6b33c9d44ce409b68f8a39d9e6ef20ed426b4b7bacf04"

提交示例(operation=1 Sales):

{
    "user": "info@yabandmedia.com",
    "sign": "7b20278f5785688364f51d84ecff94c575abb1270f625b34d1c1261ca3eb2460",
    "method": "v3.GooglePay",
    "time": 1721979693,
    "data": {
        "description": "test",
        "timeout": "0",
        "pay_method": "online",
        "sub_pay_method": "Google Pay",
        "order_id": 1721979693,
        "amount": "0.1",
        "currency": "EUR",
        "operation": "1",
        "redirect_url": "https://www.yabandpay.com/redirect_url",
        "notify_url": "https://www.yabandpay.com/notify",
        "3ds_initiate": "01",
        "payment_token_object": "eyJzaWduYXR1cmUiOiJNRVVDSVFDOEJmbDJrSkttUjVvOUxNc3RCYnA0MGtBRW9FQnh4SlQ4VTl2UVgyc1JMd0lnTUJTOWpidDFxR0NoVmxmeElDUTdYOHBKM3VYN1lkY0M5UFd1eEVubmo5b1x1MDAzZCIsImludGVybWVkaWF0ZVNpZ25pbmdLZXkiOnsic2lnbmVkS2V5Ijoie1wia2V5VmFsdWVcIjpcIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVdabXZVODU3SnlOV2ZEbFFuVzBaRG1MUEpoSG91dlpsT09aZk5ORm9nWElJVlRVTnNYNGJ0MEZFakdpVEs4QTNGb094a0d5NStrQ0ZCWDUyL0hhcS93XHUwMDNkXHUwMDNkXCIsXCJrZXlFeHBpcmF0aW9uXCI6XCIxNzIwNTg5NjI3MTk5XCJ9Iiwic2lnbmF0dXJlcyI6WyJNRVVDSVFDbWpKSmFMYzUxWEo3T3dEaUY5QVVIVloyVytGMFJSVWdnNmI5YUc0S2hiUUlnVDBKeVdjRHNlcEpyc2ZyM0xzekdtTUpUNkxZSitzRmZ5YWtmYlIweHg1c1x1MDAzZCJdfSwicHJvdG9jb2xWZXJzaW9uIjoiRUN2MiIsInNpZ25lZE1lc3NhZ2UiOiJ7XCJlbmNyeXB0ZWRNZXNzYWdlXCI6XCJBaVhPT3BJYitNdGxSWnV3MW9nL3ZLVVdvT3FmVEcwZndMcG14WCtuSkFPRXJPQkFYa3dWWG8zd01DaVpQaEppZVN3dHZBNnFaVXpWVTBOVWJaWTVSdE1qZWxUWnVHV3dKcjdRVU9Ob3NXRzFXSmd4bjRHVVRPL2g2Nzdpd2ROajgzbVRDdWNPZnNHeDVMcTZCdXZXT1F0a21Gdk9qSnVSN1daQ2k3QTl4S2tWckxvVEsyWEpBNmNxb0pZMERpa1NMOU1WQW5JWVNyenpCakFwWVc0SGxXTm14ZnJYUUUzYTFKTW95UlRDWWR4azZwUGVzNi9xOG5zN2Fid1RHUGNicmNVZndaN0hiSnFWRVd1aFZxTWpxZW50RHgvRXd3SHFYd0s0YUhMc0hvOGVkc09jbEdMTXBNeFVVOHc0MHJ2ZFNxc3NyUEFmN0RnSGoydkNBNUt2amMrcnBaaGY0Wnl1UkFacHpHSmNvYXNTV3JVeXNqUG5FcFNyVnpzbWV3ejB1K2JyYmNFOTlFNnd0cHhnWVZwUVl0d3FmY2FRY3ZJWUZaT3FXaEJGNFpXcUZoUmdGSkZlQVJSQU1ndnlURmhDaVhObExqcFZcIixcImVwaGVtZXJhbFB1YmxpY0tleVwiOlwiQk83SUpTMVNBanlqWG9EUTVOblBqZmk3dWJ3UVB0Mkx1OFZVQm9SVlh0Q2pWV3h4UUNLWm9sbmc0cnBmUEdaVlRyQzNwOWRUMEtveWhBc2NsR0Z5ZFhFXHUwMDNkXCIsXCJ0YWdcIjpcImtoT1dIRUlSSzBuWVBiWU1OdnhkZVNUTzlsYWJRdlBYZWQrQ1NLZTFyZ1FcdTAwM2RcIn0ifQ==",
        "browser_info": "eyJicm93c2VyX2phdmFfc2NyaXB0X2VuYWJsZWQiOiJ0cnVlIiwiYnJvd3Nlcl9qYXZhX2VuYWJsZWQiOiJ0cnVlIiwiYnJvd3Nlcl9jb2xvcl9kZXB0aCI6IjMyIiwiYnJvd3Nlcl9zY3JlZW5faGVpZ2h0IjoiOTYwIiwiYnJvd3Nlcl9zY3JlZW5fd2lkdGgiOiIxMDIwIiwiYnJvd3Nlcl90eiI6IjYwIiwiYnJvd3Nlcl9hY2NlcHRfaGVhZGVyIjoidGV4dC9odG1sLGFwcGxpY2F0aW9uL2pzb24sYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL3dlYnAsKi8qO3E9MC44IiwiY2hhbGxlbmdlX3dpbmRvd19zaXplIjoiMDMiLCJhY2NlcHRfbGFuZ3VhZ2UiOiJ6aC1DTiIsInVzZXJfYWdlbnQiOiJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNTguMC4zMDI5LjExMCBTYWZhcmkvNTM3LjMifQ==",
        "request_id": "2cwmm7wubqkgtzbtzjhvhkaubev81a0r"
    }
}

返回示例:

{
    "status": true,
    "code": "200",
    "data": {
        "order_id": "1723517503",
        "trade_id": "e684679e-658b-ac70-fd9e-e4959e147e00",
        "amount": "0.10",
        "currency": "EUR",
        "sub_pay_method": "Google Pay",
        "state": "processing",
        "url": "https://pay.yabandpay.com/dispose_shift4_googlepay_3ds?data=eyJwc3QiOiJlNjg0Njc5ZS02NThiLWFjNzAtZmQ5ZS1lNDk1OWUxNDdlMDAiLCJzaWduX3RyYWRlX2lkIjoiNWZkNzc5Zjg0MmY1ZTc2ZjVmNGQzNGQyNGQ5MGZkMzYyZWMyZGY5ZjU0ODk5ZjBlZDgxYTRkYWUxODM2MmEwNCIsInVzZXIiOiIwMTY2ODMifQ=="
    },
    "message": "",
    "response_id": "202408131051432400124088"
}

更多信息:

返回结果:
  1. 若调用成功,则返回"status": true

  2. 若调用失败,则返回"status": fales

你需要跳转返回的url。用户在此url输入卡号信息并完成支付后,会同步跳转回redirect_url。我们强烈建议同时使用订单查询异步通知来同步和更新支付状态,以确保支付信息的实时准确性。 a) 如果订单状态statepaid,即支付成功; b) 如果订单状态stateauthorized,即预授权成功。 预授权成功后如需要请款调用预授权请款接口

返回代码:
Status Code Message
true 200
fales -1000 Internal error
fales -403 The signature Error
fales -2001 The user not exist
fales -3001 Required field is missing
fales -4118 Incorrect request ID

results matching ""

    No results matching ""