我使用Stripe API进行一次性付款,使用以下内容完美无缺:
$stripe = array("secret_key" => "MY_SECRET_KEY", "publishable_key" => "MY_PUBLISHABLE_KEY");
Stripe::setApiKey($stripe['secret_key']);
try {
$charge = Stripe_Charge::create(array(
"amount" => round($_POST['amount'] * 100, 0),
"currency" => "USD",
"card" => array(
"number" => 111111111111111111,
"exp_month" => 10,
"exp_year" => 2017,
"cvc" => 321,
),
"description" => $_POST['item_name']));
$json = json_decode($charge);
$amount_charged = round(($json->{'amount'} / 100), 2);
//process payment here......
}
catch (Stripe_CardError $e) {
$body = $e->getJsonBody();
print json_encode($json);
}
现在,我希望能够通过捕获用户信用卡信息以及每月运行一次cron作业来定期付款。以上工作会好吗,还是我需要别的东西。我知道Stripe已经内置了定期付款功能,但就我而言,每个月的付款金额会有所不同。
答案 0 :(得分:1)
您的示例中缺少的是客户记录。你知道,Stripe不允许你重复使用令牌。他们一次性使用。为了构建您正在寻找的功能,您需要在某处安全地存储付款详细信息。如果您符合PCI标准,那当然可以在您自己的本地数据存储上;但是,如果您想让自己变得轻松,您可以为每个用户及其相关的付款方式构建客户记录。
当您正常构建费用时,您将使用Create a Charge API请求。
您现在正在执行此操作并将令牌ID作为source
- 参数传递。您要做的是首先制作Customer,然后通过creating a Card附加该付款来源。 (我建议将它们作为两个单独的步骤来执行,这样您就可以更好地管理具有多个付款来源的客户。)
然后,要再次收取该记录,您将再次发出Create a Charge API请求,但您可以在customer
- 参数中传递客户ID并(可选)传递来源id(card_xxx
)进入source
- 参数。如果您没有传递source
- 参数,但是传递了customer
- 参数,则会使用默认付款来源。
希望有所帮助!
答案 1 :(得分:-1)
你不能每个月使用卡片令牌收费吗?而不是使用他们的卡令牌传递卡将更安全。但是否则你的代码看起来很好。你应该每个月都能收取这样的费用。
修改强>
忘记提及您需要创建一个Stripe Customer并将CC令牌分配给该Stripe Customer,因为CC令牌仅限一次性使用。创建Stripe客户后,您每个月都可以向该客户收费。