2016-11-29 64 views
0

我想設置一個Perl腳本,將通過條紋處理信用卡收費使用Net::Stripe「無效字符串」使用網::條紋

我能夠成功申請令牌,但是當我使用該令牌後的收費,我得到這個錯誤:

Error: invalid_request_error - Invalid string: {"exp_month"=>"12", "exp_year"=>"2021", "object"=>"card"} at Stripe.pm line 637

這裏是我的代碼

$API_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 

my $stripe = Net::Stripe->new(
    api_key  => $API_KEY, 
    debug   => '1', 
    debug_network => '1' 
); 

my $card_token = $stripe->post_token(
    card => { 
     number => $FORM{'Credit Card #'}, 
     exp_month => $FORM{'Expiration Month'}, 
     exp_year => $FORM{'Expiration Year'}, 
     cvc  => $FORM{'Credit Card Security Code'} 
    } 
); 

print Dumper($card_token); 

try { 
    my $charge = $stripe->post_charge(
     amount  => $amount_of_charge_in_cents, 
     currency => 'usd', 
     card  => $card_token, 
     description => 'ABC Charge', 
     customer => $FORM{'Name'} 
    ); 
} 
catch { 
    warn "caught error: $_"; # not [email protected] 
} 

我應該是使用$card_token以外的值作爲卡片值?

+0

令牌是一個對象還是它包含一個ID?最終,爲了收費,你只關心id(例如'tok_xxx')。 – korben

回答

0

的條紋API調用Create a card token(由post_token包裹)的文檔說以下字段需要

exp_month 
exp_year 
number 
currency 
cvc 

但是你只提供那些

+0

與令牌請求中的貨幣相同的錯誤... – Diane

0

感謝的四korben我成功修改了我的代碼,使用返回的令牌ID工作:

$API_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 

my $stripe = Net::Stripe->new(
    api_key  => $API_KEY, 
    debug   => '1', 
    debug_network => '1' 
); 

my $card_token = $stripe->post_token(
    card => { 
     number => $FORM{'Credit Card #'}, 
     exp_month => $FORM{'Expiration Month'}, 
     exp_year => $FORM{'Expiration Year'}, 
     cvc  => $FORM{'Credit Card Security Code'}, 
     name  => $FORM{'Name on Card'}, 
    } 
); 
print Dumper($card_token); 

$token_id = $card_token->{id}; 

try { 
    my $charge = $stripe->post_charge(
     amount  => $amount_of_charge_in_cents, 
     currency => 'usd', 
     card => $token_id, 
     description => 'ABC Charge' 
    ); 
} catch { 
    warn "caught error: $_"; # not [email protected] 
} 

我還刪除了「客戶」值,因爲這是現有客戶的ID,並將「名稱」添加到卡令牌代碼中。