Stripe - 向现有计划添加新客户?

Stripe - adding new customers to an existing plan?

我有一个用于注册用户的简单表单。该表单还使用 Stripe 来处理付款。 Stripe's API 非常干净,但出于某种原因我似乎无法弄清楚这一点。如果我在这里做错了什么,请告诉我。

现在我在 Stripe 的测试帐户中,但每次我在 Stripe 中注册用户时,它都会不断创建新计划。我知道在下面的代码中我有“Stripe\Plan::create”,那是因为我不知道如何将新客户添加到现有计划中。我现在这样做正常吗?

在下面的屏幕截图中,您会看到它将为该客户创建一个新计划并将其分配给该计划。是否可以继续向现有计划中添加新客户?

// Include configuration file  
require_once 'stripe/config.php'; 

// Include Stripe PHP library 
require_once 'vendor/autoload.php'; 

$payment_id = $statusMsg = $api_error = ''; 
$ordStatus = 'error'; 

// Check whether stripe token is not empty 
if(!empty($_POST['stripeToken'])){ 
    
    // Retrieve stripe token, card and user info from the submitted form data 
    $token  = $_POST['stripeToken']; 
    
    $users_email = $_POST['email']; 
    $first_name = $_POST['first_name'];
    $last_name = $_POST['last_name'];
    $full_name = $first_name.' '.$last_name;
    

    // Set API key 
    \Stripe\Stripe::setApiKey(STRIPE_API_KEY); 
    
    // Add customer to stripe 
    $customer = \Stripe\Customer::create(array( 
        'email' => $users_email, 
        'name' => $full_name,
        'source'  => $token
        )); 

    // Create a plan 
    try { 
        $plan = \Stripe\Plan::create([
            'amount' => 3000,
            'currency' => 'usd',
            'interval' => 'month',
            // 'product' => ['name' => 'Standard Plan'],
            'product' => 'prod_ktItFVvqgr4edf',
        ]);
    }catch(Exception $e) { 
        $api_error = $e->getMessage(); 
    } 
    
    if(empty($api_error) && $plan){ 
        // Creates a new subscription 
        try { 
            $subscription = \Stripe\Subscription::create(array( 
                "customer" => $customer->id, 
                "items" => array( 
                    array( 
                        "plan" => $plan->id, 
                    ), 
                ), 
            )); 
        }catch(Exception $e) { 
            $api_error = $e->getMessage(); 
        } 
        
        if(empty($api_error) && $subscription){ 
            // Retrieve subscription data 
            $subsData = $subscription->jsonSerialize(); 
    
            // Check whether the subscription activation is successful 
            if($subsData['status'] == 'active'){ 
                // Subscription info 
                $subscrID = $subsData['id']; 
                $custID = $subsData['customer']; 
                $planID = $subsData['plan']['id']; 
                $created = date("Y-m-d H:i:s", $subsData['created']);
                $status = $subsData['status']; 
                
                // Insert into database
                
                // Insert into database


            }else{ 
                $statusMsg = "Subscription activation failed!"; 
            } 
        }else{ 
            $statusMsg = "Subscription creation failed! ".$api_error; 
        } 
    }else{ 
        $statusMsg = "Plan creation failed! ".$api_error; 
    } 
}else{ 
    $statusMsg = "Error on form submission, please try again."; 
} 

要使用现有计划创建订阅,只需在创建订阅时传入旧计划的 ID,而不是为每个客户创建新计划。在您的 // Create a plan 块中,选择 retrieve an existing plan 并使用它来创建订阅或根据需要创建新计划。或者更好的是,将计划 ID 存储在您自己的数据库中以便于检索。