2016-11-29 30 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,并将“名称”添加到卡令牌代码中。