带null属性(例如金额和货币)的条带source.chargeable事件

时间:2018-06-26 03:33:59

标签: stripe-payments

根据事件数据的数量和货币对来源收费是否正确?有时我会收到类似的事件:

{
  "object": {
    "id": "src_1Ch7qCIhY6Z3DMWts3HPpWoH",
    "object": "source",
    "amount": null,
    "card": {
      "exp_month": 2,
      "exp_year": 2022,
      "address_zip_check": "unchecked",
      "brand": "Visa",
      "card_automatically_updated": false,
      "country": "US",
      "cvc_check": "unchecked",
      "fingerprint": "xGimquKE7Rnk7LK2",
      "funding": "credit",
      "last4": "3063",
      "three_d_secure": "required",
      "address_line1_check": null,
      "tokenization_method": null,
      "dynamic_last4": null
    },
    "client_secret": "src_client_secret_D7MZe67elxyyCGGAaUA1lCsS",
    "created": 1529983660,
    "currency": null,
    "flow": "none",
    "livemode": false,
    "metadata": {
    },
    "owner": {
      "address": {
        "city": null,
        "country": null,
        "line1": null,
        "line2": null,
        "postal_code": "22222",
        "state": null
      },
      "email": null,
      "name": null,
      "phone": null,
      "verified_address": null,
      "verified_email": null,
      "verified_name": null,
      "verified_phone": null
    },
    "statement_descriptor": null,
    "status": "chargeable",
    "type": "card",
    "usage": "reusable"
  },
  "previous_attributes": null
}

通知金额和货币为空。为什么即使在创建来源时设置了金额和货币,也为什么它为null?我也注意到它有时设置正确。我应该依赖此属性集吗?还是应该将它们存储在数据库中?并将该交易ID从数据库存储到例如源的元数据中。


更新

我意识到前端创建3ds源时会调用此事件。

stripe.createSource(card).then(function (result) {
    console.log(result.source)
})

我确实有点困惑,文档确实说

  

在创建3D安全源时,通常首先将其状态设置为“待处理”,并且尚不能用于创建费用。在某些情况下,可以立即将3D安全源的状态设置为可计费。如果尚未将客户卡注册到3D Secure中,则会发生这种情况。

但是我使用的测试卡4000000000003063需要3ds验证。为什么要立即收费?

status: "chargeable"
type: "card"
usage: "reusable"

1 个答案:

答案 0 :(得分:1)

您要创建的源是常规卡源,与“三维安全”源不同。该卡来源本身是可充电的,但是如果您尝试对其进行充电,则会发现该卡将被拒绝,因为该卡需要3DS。

如果卡的来源表明需要Three D Secure,那么您需要使用它来创建3DS来源并继续充电:https://stripe.com/docs/sources/three-d-secure#create-3ds-source