【问题标题】:Apple Pay Payment Token ExampleApple Pay 支付令牌示例
【发布时间】:2019-12-06 09:50:37
【问题描述】:

我如何才能以某种方式获取 Apple Pay 支付令牌 (as described here) 的示例,而无需实际使用 Apple 设备请求 Apple 付款?

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

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

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

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

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

任何帮助将不胜感激!

【问题讨论】:

    标签: json base64 checkout applepay


    【解决方案1】:

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

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

    {
        "data":"...",
        "signature":"...",
        "version":"..",
        "header":{
            "applicationData":"...",
            "ephemeralPublicKey":"...",
            "wrappedKey":"...",
            "publicKeyHash":"...",
            "transactionId":"..."
        }
    }
    

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

    令牌

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

    标题:标题字典

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

    版本:字符串

    标题

    applicationData:SHA–256 哈希,十六进制编码为字符串

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

    wrappedKey:Base64 编码字符串

    publicKeyHash:SHA–256 哈希,Base64 编码为字符串

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

    更多信息/详情可以在the Apple documentation找到。

    【讨论】:

    • 您有一个示例如何将解密后的数据发送到 Stripe?
    • @ElmarAbdurayimov 不,对不起。但是你可以看看 Stripe 的文档……应该很相似。
    猜你喜欢
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 2020-11-12
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 2015-03-02
    相关资源
    最近更新 更多