顧客を正常に作成した後、次の方法でオブジェクトを検査できます。
Rails.logger.debug("single card object has: #{customer.cards.data.card.inspect}")
次のようなjsonを返します。
#<Stripe: : Customer: 0x2801284>JSON: {
"id": "cus_2WXxmvhBJgSmNY",
"object": "customer",
"cards": {
"object": "list",
"data": [
{
"id": "card_2WXxcCsdY0Jjav",
"object": "card",
"last4": "4242",
"type": "Visa",
"exp_month": 1,
"exp_year": 2014,
}
]
},
"default_card": "card_2WXxcCsdY0Jjav"
}
しかし、私はCustomer.cards.data.last4を実行し 、NOMethodErrorを返します。
last4を削除してCustomer.cards.dataを呼び出すと、
#<Stripe: : Card: 0x1ed7dc0>JSON: {
"id": "card_2Wmd80yQ76XZKH",
"object": "card",
"last4": "4242",
"type": "Visa",
"exp_month": 1,
"exp_year": 2015,
}
今、私はダイレクトカードオブジェクトを持っているようですが、もしそうなら
card = Customer.cards.data
self.last4 = card.last4
まだnoMethodErrorが発生する
これが私のモデルの短縮版です:
class Payment < ActiveRecord::Base
def create_customer_in_stripe(params)
if self.user.stripe_card_token.blank?
user_email = self.user.email
customer = Stripe::Customer.create(email: user_email, card: params[:token])
card = customer.cards.data
self.card_last4 = card.last4
self.card_type = card.type
self.card_exp_month = card.exp_month
self.card_exp_year = card.exp_year
self.user.save
end
self.save!
end
end