Skip to content
breadwild edited this page Jul 31, 2016 · 8 revisions

Webservice::Stripe applied in e-commerce

use WebService::Stripe;
use JSON;
use HTTP::Response;
use Data::Dumper;

my ($obj, $exc);

my $stripe = WebService::Stripe->new(
    api_key => 'sk_test_DG8__________________YrWxdP'
);

my $token = eval {  $stripe->create_token({ 
                    'card[number]'    => '4000000000000002', #bad card
                    #'card[number]'    => '4242424242424242', #good card
                    'card[exp_month]' => 12,
                    'card[exp_year]'  => 2018,
                    'card[cvc]'       => 123
                     })  
                };
             
if ($exc = $@) { #thank you, Naveed
    $obj = from_json($exc->content);
    print "Token: ".$obj->{'error'}->{'message'}."\n";
} else {
    print "Token: success\n";
}
 
my $charge = eval { $stripe->create_charge({
                    "amount" => 1000,
                    "currency" => "usd",
                    "source" => $token->{'id'}, #access hash for needed id
                    "description" => "Example charge"
                    })  
                  };

if ($exc = $@) {
    $obj = from_json($exc->content); #returns JSON string
    print "Charge: ".$obj->{'error'}->{'message'}."\n";
} else {
    print "Charge: success\n";
}     

print Dumper($token); #if success  

Returns:

Token: success
Charge: Your card was declined.

$VAR1 = {
          'client_ip' => '175.456.456.23',
          'created' => 1469971634,
          'used' => bless( do{\(my $o = 0)}, 'JSON::XS::Boolean' ),
          'type' => 'card',
          'livemode' => $VAR1->{'used'},
          'card' => {
                      'tokenization_method' => undef,
                      'address_city' => undef,
                      'address_line1' => undef,
                      'address_country' => undef,
                      'brand' => 'Visa',
                      'address_line2' => undef,
                      'address_zip' => undef,
                      'customer' => undef,
                      'exp_month' => 12,
                      'address_zip_check' => undef,
                      'dynamic_last4' => undef,
                      'funding' => 'credit',
                      'cvc_check' => undef,
                      'last4' => '0002',
                      'address_state' => undef,
                      'address_line1_check' => undef,
                      'name' => undef,
                      'metadata' => {},
                      'country' => 'US',
                      'fingerprint' => 'EZ6FkkogdqK3dj02',
                      'exp_year' => 2018,
                      'id' => 'card_18dJyICJ_________pUHPFTay',
                      'object' => 'card'
                    },
          'object' => 'token',
          'id' => 'tok_18dJyIC________aULYPj'
        };

Example of JSON string if error:

print Dumper($exc->content);

$VAR1 = '{
  "error": {
    "message": "Your card was declined.",
    "type": "card_error",
    "code": "card_declined",
    "charge": "ch_18dK8RCJAurfnBjvuiBC8Sn0"
  }
}
';

Example of access to success hash:

print $token->{'type'};
card

print $token->{'card'}{'brand'};
Visa
Clone this wiki locally