2016-11-29 4 views
0

Net::Stripeを使用してクレジットカードの請求を処理する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

post_tokenによってラップされている)ストライプAPI呼び出しCreate a card tokenの説明は次のフィールドが

exp_month 
exp_year 
number 
currency 
cvc 

を必要であることを述べている。しかし、あなたはkorbenするのみ

+0

トークンリクエストの通貨で同じエラーが発生しました... – Diane

0

感謝の4を供給しています返されたトークンIDだけを使用してコードを正常に修正しました。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である「顧客」の値を削除し、カードのトークンコードに「名前」を追加しました。