2017-09-10 30 views
0

我有條紋效果很好。在客戶捐贈後,會創建一個新的訂閱,並且效果非常好 - 除非Stripe識別該電子郵件並說「輸入驗證碼」。條紋簽出 - 帶有識別條紋用戶的訂購問題

如果客戶這樣做,出於某種原因,不會創建新的訂閱,並且客戶不收費。

這是我充monthly.php

<?php 

require_once('init.php'); 
// Set your secret key: remember to change this to your live secret key in production 
// See your keys here https://dashboard.stripe.com/account/apikeys 
\Stripe\Stripe::setApiKey("sk_test_**************"); 

// Get the credit card details submitted by the form 
$token = $_POST['stripeToken']; 
$email = $_POST['stripeEmail']; 
$amount = $_POST['amount']; 
$finalamount = $amount * 100; 
$dollars = ".00"; 
$plan = "/month"; 
$dash = " - "; 
$monthlyplan = $amount .$dollars .$plan .$dash .$email; 


//Create monthly plan 
$plan = \Stripe\Plan::create(array(
    "name" => $monthlyplan, 
    "id" => $monthlyplan, 
    "interval" => "month", 
    "currency" => "usd", 
    "amount" => $finalamount, 
)); 


// Create a Customer 
$customer = \Stripe\Customer::create(array(
    "source" => $token, 
    "description" => "MONTHLY DONATION", 
    "plan" => $monthlyplan, 
    "email" => $email,) 
); 


?> 

任何想法,爲什麼當條紋識別用戶和他的「登錄」這並不讓我創建預訂?

在條紋的日誌,我收到此400錯誤:

{ 
    "error": { 
    "type": "invalid_request_error", 
    "message": "Plan already exists." 
    } 
} 

但絕對不是創造了一個計劃......啊!

+0

我不確定發生了什麼!你說過你在創建Subscription時遇到了問題。但提供的代碼是用於創建計劃和客戶。並且錯誤消息表示「計劃已經存在」,儘管計劃的ID與現有計劃按照消息匹配! – Zico

回答

1

您的請求失敗的原因是因爲如果用戶回來與相同的電子郵件地址,並希望報名參加同樣的計劃,你已經有一個同名的現有計劃,

$monthlyplan = $amount .$dollars .$plan .$dash .$email;

因此您撥打\Stripe\Plan::create將返回一個錯誤,並導致您的其他通話在此處失敗。

你可以添加一些東西,如獨特的ID或時間到你的計劃ID。

http://php.net/manual/en/function.time.php http://php.net/manual/en/function.uniqid.php

是人們通常處理這方面的一些其他方法是:

  • 爲$ 1創建一個計劃,然後創建訂閱時調整量。因此,每月1美元的數量爲100的計劃將收取100美元的月費。

  • 存儲客戶將在您的應用程序中支付的金額。訂購您的客戶到$ 0 /月的計劃。使用webhooks來收聽invoice.created事件。讓您的webhook處理程序每​​月爲餘額添加一個發票項目。