2016-09-29 42 views
0

使用RubyMock產生磁條卡等。條紋模擬返回相同的指紋哈希

我不知道爲什麼它總是返回相同的哈希fingerprint新卡。

Here it gives an example of creating cards,這基本上是這樣的:

card_token = StripeMock.generate_card_token(last4: rand(9999).to_s, exp_year: rand(9999)) #=> "test_tok_26" 
cus = Stripe::Customer.create(source: card_token); 
card = cus.sources.data.first.fingerprint #=> "wXWJT135mEK107G8" 

而且總是感覺很wXWJT135mEK107G8! 即使輸入卡last4和exp_year更改。

回答

2

StripeMock似乎總是產生相同的fingerprint即使last4exp_year是不同的:

StripeMock.start 

card_token = StripeMock.generate_card_token(last4: "919#{rand 9}", exp_year: "199#{rand 9}".to_i) 
cus = Stripe::Customer.create(source: card_token) 
cus.sources.data.first.last4 # => "9192" 
cus.sources.data.first.fingerprint # => "wXWJT135mEK107G8" 

card_token = StripeMock.generate_card_token(last4: "919#{rand 9}", exp_year: "199#{rand 9}".to_i) 
cus = Stripe::Customer.create(source: card_token) 
cus.sources.data.first.last4 # => "9198" 
cus.sources.data.first.fingerprint # => "wXWJT135mEK107G8" 

正如你可以看到,即使我得到了相同的指紋,你。事實上,StripeMock有指紋值硬編碼:https://github.com/rebelidealist/stripe-ruby-mock/blob/master/lib/stripe_mock/data.rb#L228

def self.mock_card(params={}) 
    StripeMock::Util.card_merge({ 
    id: "test_cc_default", 
    object: "card", 
    last4: "4242", 
    type: "Visa", 
    brand: "Visa", 
    funding: "credit", 
    exp_month: 4, 
    exp_year: 2016, 
    fingerprint: "wXWJT135mEK107G8", # see? 
    customer: "test_cus_default", 
    country: "US", 
    name: "Johnny App", 
    address_line1: nil, 
    address_line2: nil, 
    address_city: nil, 
    address_state: nil, 
    address_zip: nil, 
    address_country: nil, 
    cvc_check: nil, 
    address_line1_check: nil, 
    address_zip_check: nil 
    }, params) 
end 

你可以只通過在自己的指紋:

card_token = StripeMock.generate_card_token(fingerprint: "anything you want") 
cus = Stripe::Customer.create(source: card_token) 
cus.sources.data.first.fingerprint # => "anything you want" 
+0

感謝確認我的懷疑! –