我目前正在使用Laravel Cashier(PHP)并使用保存在我的 users
表中的已返回 stripe_id
以供将来付款 . 我没有使用Stripes或Laravel收银员订阅功能,因为我想要对它进行更多动态控制 .
它目前的工作方式是......
-
客户在我的应用上有一个帐户 .
-
如果愿意,可以添加信用卡
-
当它们执行时,这将在Stripe上生成0 /月的订阅并将其保存为客户 .
-
使用我的
users
表中返回并保存的stripe_id
,我继续使用自己的订阅功能 .
关于错误处理等添加信用卡是好的,因为我可以简单地使用条带提供的测试卡 .
但是,一旦客户被添加到我的Stripe帐户,我就无法测试该客户以便将来结算 .
我尝试在条带信息中心中添加拒绝卡片,例如4000 0000 0000 0002,但没有任何反应,当我检查控制台时,我可以看到下面的错误 . 这是可以理解的,但我希望在测试模式下它允许我添加它 .
我知道我可以使用网络钩子,但对我来说这似乎是不切实际的 . 在我的本地机器上进行测试会很令人沮丧,我仍然需要能够将信用卡更改为失败的信用卡以发送正确的Web挂钩 . 我不想依赖Stripe web hook测试,因为它不会与我的进程同步,因为我无法控制customer_id等进行测试 .
这是我为客户收费的代码 . 如你所见,我用 stripe_id
充电 .
其他错误有效,但我真正想要测试的唯一一个是卡,所以如果它过期或资金不足我的应用程序会知道
$stripeID = $this->billing->getStripeID($userID);
try {
\Stripe\InvoiceItem::create( [
'customer' => $stripeID,
'amount' => $totalAmount,
'currency' => 'eur',
'description' => 'Test Charge'
] );
$invoice = \Stripe\Invoice::create( [
'customer' => $stripeID
] );
$invoice = \Stripe\Invoice::retrieve( $invoice->id );
$charge = $invoice->pay();
} catch(Card $e) {
// error handling
} catch (RateLimit $e) {
// error handling
} catch (InvalidRequest $e) {
// error handling
} catch (Authentication $e) {
// error handling
} catch (ApiConnection $e) {
// error handling
} catch (Base $e) {
// error handling
} catch (Exception $e) {
// error handling
}