Apple Pay 支付令牌示例

Ano*_*elo 3 base64 json checkout applepay

如何以某种方式获取 Apple Pay 支付令牌的示例(如此处所述),而不实际使用 Apple 设备向 Apple 请求付款?

我正在创建一个端点,该端点将接受 Apple Pay 支付令牌,该令牌与请求 Apple 付款的设备上收到的令牌完全相同。然而,它是一个二进制数据,因此必须将其解码为我认为的普通 json 对象。这个 json 对象的格式/结构是什么?

从 Checkout.com 关于 Apple Pay 的文档(此处)中,我假设解码后的 json 对象看起来像这样(尽管他们将其标记为“示例”,所以我不能确定):

{
  "type": "applepay",
  "token_data": {
    "version": "EC_v1",
    "data": "t7GeajLB9skXB...",
    "signature": "MIAGCSqGSIb3DQEHAq...",
    "header": {
      "ephemeralPublicKey": "MFkwEwYHKoZIzj...",
      "publicKeyHash": "tqYV+tmG9aMh+l/K6cicU...",
      "transactionId": "3cee89679130a4b2617c..."
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,为简洁起见,上述字段中的数据已被缩短。

Apple 向请求付款的设备发送的确切对象/数据是什么?

任何帮助将不胜感激!

Ano*_*elo 5

我已经设法弄清楚苹果发送了什么作为支付令牌。

\n\n

Apple 发送一个PKPaymentToken可以解码为 json 的二进制数据 ( )。json 对象如下所示:

\n\n
{\n    "data":"...",\n    "signature":"...",\n    "version":"..",\n    "header":{\n        "applicationData":"...",\n        "ephemeralPublicKey":"...",\n        "wrappedKey":"...",\n        "publicKeyHash":"...",\n        "transactionId":"..."\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

因此,使用支付令牌首先需要将二进制数据解码为 json,然后可以将其发送给商家(例如 Checkout 或 Stripe)。需要注意的是,json对象中的一些字段是加密的。它们可以在未加密或加密的情况下使用。例如,Checkout 接受加密字段

\n\n

代币

\n\n
\n

data : 支付数据字典,Base64编码为字符串

\n\n

header : 标题字典

\n\n

签名:分离的 PKCS #7 签名,Base64 编码为字符串

\n\n

版本:字符串

\n
\n\n

标头

\n\n
\n

applicationData:SHA\xe2\x80\x93256 哈希,十六进制编码为字符串

\n\n

ephemeralPublicKey:X.509 编码的密钥字节,Base64 编码为字符串

\n\n

wrappedKey : Base64 编码的字符串

\n\n

publicKeyHash:SHA\xe2\x80\x93256 哈希,Base64 编码为字符串

\n\n

transactionId:十六进制标识符,作为字符串

\n
\n\n

更多信息/细节可以在Apple 文档中找到。

\n