Apple Pay付款令牌示例

时间:2019-12-06 09:50:37

标签: json base64 checkout applepay

我如何以某种方式获得Apple Pay付款令牌(as described here)的示例,而无需实际使用Apple Device向Apple请求付款?

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

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

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

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

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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我设法弄清了苹果作为支付令牌发送的内容。

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

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

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

令牌

  

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

     

标题:标题字典

     

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

     

版本:字符串

标题

  

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

     

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

     

wrappedKey :Base64编码的字符串

     

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

     

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

更多信息/详细信息,请参见the Apple documentation