2017-09-02 55 views
1

我試圖從收費實體的響應中獲得條形客戶的customer_id。但是,響應不提供客戶ID作爲回報。如何從條紋的收費響應中獲取客戶ID?

&stripe.Charge JSON: { 
    "id": "ch_1AxWbTFytruJp2FXW6iuRd1X", 
    "object": "charge", 
    "amount": 100, 
    "amount_refunded": 0, 
    "application": null, 
    "application_fee": null, 
    "balance_transaction": "txn_17JOXKFytruJp2FXS4XNisQd", 
    "captured": false, 
    "created": 1504339423, 
    "currency": "usd", 
    "customer": null, 
    "description": "My First Test Charge (created for API docs)", 
    "destination": null, 
    "dispute": null, 
    "failure_code": null, 
    "failure_message": null, 
    "fraud_details": { 
    }, 
    "invoice": null, 
    "livemode": false, 
    "metadata": { 
    }, 
    "on_behalf_of": null, 
    "order": null, 
    "outcome": null, 
    "paid": true, 
    "receipt_email": null, 
    "receipt_number": null, 
    "refunded": false, 
    "refunds": { 
    "object": "list", 
    "data": [ 

    ], 
    "has_more": false, 
    "total_count": 0, 
    "url": "/v1/charges/ch_1AxWbTFytruJp2FXW6iuRd1X/refunds" 
    }, 
    "review": null, 
    "shipping": null, 
    "source": { 
    "id": "card_1AxWPmFytruJp2FXw4m0V0fN", 
    "object": "card", 
    "address_city": null, 
    "address_country": null, 
    "address_line1": null, 
    "address_line1_check": null, 
    "address_line2": null, 
    "address_state": null, 
    "address_zip": "10001", 
    "address_zip_check": "unchecked", 
    "brand": "Visa", 
    "country": "US", 
    "customer": null, 
    "cvc_check": "unchecked", 
    "dynamic_last4": null, 
    "exp_month": 4, 
    "exp_year": 2024, 
    "fingerprint": "sNtyd9sZ2vA6o4IM", 
    "funding": "credit", 
    "last4": "4242", 
    "metadata": { 
    }, 
    "name": "Mandeep", 
    "tokenization_method": null 
    }, 
    "source_transfer": null, 
    "statement_descriptor": null, 
    "status": "succeeded", 
    "transfer_group": null 
} 

但它有一個客戶字段裏面的空對象。任何人都可以告訴我爲什麼我得到這個null?

我想要做的是製作一個系統,客戶可以在網站上匿名預訂,並在創建預訂時,客戶獲得註冊並收取預訂總金額。我需要跟蹤客戶的條形碼帳戶ID和卡片ID。所以問題在於,如果我創建了一個客戶,那麼我無法獲取其卡ID,但是當我向客戶收費時,我無法獲得客戶ID。

客戶響應:

&stripe.Customer JSON: { 
    "id": "cus_BKAxGZre2HCNIU", 
    "object": "customer", 
    "account_balance": 0, 
    "created": 1504339424, 
    "currency": "usd", 
    "default_source": null, 
    "delinquent": false, 
    "description": null, 
    "discount": null, 
    "email": null, 
    "livemode": false, 
    "metadata": { 
    }, 
    "shipping": null, 
    "sources": { 
    "object": "list", 
    "data": [ 

    ], 
    "has_more": false, 
    "total_count": 0, 
    "url": "/v1/customers/cus_BKAxGZre2HCNIU/sources" 
    }, 
    "subscriptions": { 
    "object": "list", 
    "data": [ 

    ], 
    "has_more": false, 
    "total_count": 0, 
    "url": "/v1/customers/cus_BKAxGZre2HCNIU/subscriptions" 
    } 
} 

回答

2

同時使用下面的代碼(在Golang)創建新的客戶,您可以訪問card_id的:

for _, data := range customer.Sources.Values{ 
     card_id = data.ID 
    } 

    fmt.Println(card_id) 

我花了差不多1天到看着辦吧。實際上,在客戶結構中(在條帶包下)有一些嵌入類型的字段,並且這些字段在不同文件中進一步連接到其他結構。所以有層次結構來訪問像上面那樣的結構字段。

希望這會解決您的問題。

謝謝!

+0

謝謝@Aman,你節省了我很多的時間。 :) – MKB

2

如果僅使用信用卡令牌創建charge,沒有條紋的客戶創建,你只能創建一個沒有關聯的客戶付款。 因此,您的API返回customer: null是正常的。

而不是充電信用卡,我認爲你應該收取新客戶。 在你的後端代碼,你可以處理支付2步:

  • STEP 1:創建一個新的客戶,通過信用卡令牌存儲 客戶的卡
  • 第2步:向客戶收取,使用由 STEP 1 API調用返回的客戶ID。

這樣做,您使用存儲在客戶數據中的信用卡向客戶收費。

欲瞭解更多詳細信息,請瀏覽:https://stripe.com/docs/quickstart#saving-card-information

是否有意義?