根据事件数据的数量和货币对来源收费是否正确?有时我会收到类似的事件:
{
"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"
答案 0 :(得分:1)
您要创建的源是常规卡源,与“三维安全”源不同。该卡来源本身是可充电的,但是如果您尝试对其进行充电,则会发现该卡将被拒绝,因为该卡需要3DS。
如果卡的来源表明需要Three D Secure,那么您需要使用它来创建3DS来源并继续充电:https://stripe.com/docs/sources/three-d-secure#create-3ds-source