2017-05-03 10 views
1

我正在創建一個web應用程序:什麼時候在Stripe中支付成功?

我需要更新數據庫,當付款成功和卡充電(而不是拒絕)。

我的代碼在這裏:我先創建客戶。 (順便說一句,該變量的聲明,一切工作)

$customer = \Stripe\Customer::create(array(
     'email' => $_POST['stripeEmail'], 
     'source' => $_POST['stripeToken'], 
     'description' => $stripeEmail 
    )); 

然後我爲客戶創造訂閱:

$subscription = \Stripe\Subscription::create(array(
     "customer" => $customer->id, 
     "plan" => $planName 
    )); 

我的問題:我需要建立一個網絡掛接,以檢測是否付款是否成功?或者表單提交成功後是否成功?

+1

您需要一個webhook。成功的提交意味着互聯網的工作。 –

+0

@JohnConde文檔中的任何內容?如果你能指出我說的正確方向,那麼請發表一個答案,以便我可以接受。另外,它是'charge.succeeded'或'invoice.payment_succeeded'?我正在使用訂閱。 –

+2

這比Stripe本身更高。成功的表單提交只是意味着互聯網協議和機器都成功地履行了職責。這並不意味着交易獲得批准。 webhook會告訴你,Stripe是如何處理提交的,以及它是否成功。 –

回答

4

在正常情況下,當您create a subscription時,Stripe將立即嘗試向客戶收取費用(預訂時支付Stripe)。如果付款嘗試失敗,API將立即返回錯誤,並且不會創建訂閱。

在這種情況下,您不需要使用webhooks。只需使用正常的error handling,並檢查在調用\Stripe\Subscription::create(...)時是否引發\Stripe\Error\Card異常。

請注意,如果沒有什麼要立即付款,訂閱創建將始終成功。創建訂閱

  • 時,如果該計劃有一個默認的試用期

  • 如果使用優惠券或負

    • ,如果你提供一個trial_end參數:這可以在各種情況下發生髮票項目,將第一張發票的總額減少至$ 0

    • 如果客戶的account_balance可以支付第一張發票的成本

  • +0

    完美的答案,但你可以舉例說明如何使用'\ Stripe \ Error \ Card'與我的代碼上面?謝謝 –

    +0

    瞭解到它:http://www.larryullman.com/2013/01/30/handling-stripe-errors/ –

    相關問題