我正试图解决这个问题。基本上,它看起来有大量的PHP / Ruby / Node等模块,但同样是一个非常缺乏的Perl( Business :: Stripe ,自2012年以来一直没有更新!)
所以,我使用curl使用自己的更新。这有点乱,因为我已经使用Perl模块进行基本客户创建,然后使用curl查询来订阅它们(因为Perl模块不提供“计划”作为功能)
use Business::Stripe;
my $stripe = Business::Stripe->new(
-api_key => $CFG->{stripe_mode}
);
my $cid = $stripe->customers_create(
card => $_[2],
email => $in->{email},
description => 'For Site Membership'
);
然后订阅:
my $sub = `curl https://api.stripe.com/v1/subscriptions -u $key: -d plan=name_$in->{package} -d customer=$cid`;
my $json = decode_json($sub);
现在这可行......但我遇到的问题是,如何向这位客户添加新卡?
我可以很好地获得客户对象:
my $sub = `curl https://api.stripe.com/v1/customers/cus_xxxx -u sk_test_KEY:`;
my $json = decode_json($sub);
...这给了我关于用户的所有信息。但是如何为他们添加新卡呢?我已经获得了要求所有卡信息的代码,然后传回令牌(卡与之关联的位置),但是我对下一步感到难过。我试过谷歌搜索,我没有提出任何有用的东西(有关于它的大量帖子与ruby / node / php的例子,但没有一个是纯粹的卷曲:/)
提前致谢!
答案 0 :(得分:2)
https://stripe.com/docs/api#card_object
所以解决办法就是将令牌传递给via:
my $res = `curl https://api.stripe.com/v1/customers/$USER->{stripe_customer_id}/sources -u $key: -d source=$in->{token}`;
...然后解码:
my $json = decode_json($res);
...这会返回一张带有新卡的对象:
$VAR1 = {
'object' => 'card',
'address_zip' => undef,
'address_state' => undef,
'fingerprint' => 'lRvQRC14boreOKjk',
'brand' => 'Visa',
'tokenization_method' => undef,
'dynamic_last4' => undef,
'address_zip_check' => undef,
'address_line2' => undef,
'funding' => 'credit',
'exp_month' => 12,
'address_city' => undef,
'metadata' => {},
'id' => 'card_xxxx',
'country' => 'US',
'name' => 'andy@domain.co.uk',
'exp_year' => 2019,
'address_line1' => undef,
'address_country' => undef,
'cvc_check' => 'pass',
'customer' => 'cus_xxxx',
'last4' => '4242',
'address_line1_check' => undef
};
......果然,它现在显示了与用户相关的额外卡片:
希望这有助于拯救别人麻烦:)
另外,我遇到了一个更好的Perl模块,用于以编程方式进行:
http://search.cpan.org/~rconover/Net-Stripe-0.30/lib/Net/Stripe.pm