2017-11-07 25 views
0

ストレート決済でカスタム金額ベースのプランコードを管理する方法は?ストライプPHP:カスタム金額ベースのプランを管理する方法は?

プランID:basic- {間隔} - {量}

1)計画終了をチェックするかどうか?

場合:終了は、

ない加入者に割り当てる - 新しい計画を作成します。

if(!empty($recurring_duration)){ 
           try { 
            $plan = \Stripe\Plan::retrieve($planname); 
           } catch (Error\InvalidRequest $exception) { 
            $plan = \Stripe\Plan::create(array(
             "name" => "Basic Plan", 
             "id" => $planname,  
             "interval" => "$recurring_duration", 
             "currency" => strtolower($currency), 
             "amount" => $amount, 
            )); 
           } 

           $plan = \Stripe\Plan::create(array(
             "name" => "Basic Plan", 
             "id" => $planname,  
             "interval" => "$recurring_duration", 
             "currency" => strtolower($currency), 
             "amount" => $amount, 
           )); 
          } 

$customer = \Stripe\Customer::create(array(
           'email'  => $email, 
           'source' => $token 
          )); 

          if(!empty($recurring_duration)){ 

           $charge = \Stripe\Subscription::create(array(
            "customer" => $customer->id, 
            "items" => array(
             array(
             "plan" => $planname, 
            ), 
            ), 
           )); 

          }else{ 

           $charge = \Stripe\Charge::create(array(
               'customer' => $customer->id, 
               'amount'  => $amount, 
               'currency' => strtolower($currency), 
               'description' => '', 
             ) 
           ); 

          } 

          $val = BSP_add_form_data($charge); 
+0

あなたが共有できるコードはありますか? – samiles

答えて

0

最初にすべてのプランを取得する必要があります&あなたの値で確認してください。

<?php 
$recurring_duration = $_POST['recurring_duration']; 
$planname = "plan value"; 
$last_customer = NULL; 
while (true) { 
    $plan_list = \Stripe\Plan::all(array("limit" => 100, "starting_after" => $last_plan)); 
    foreach ($plan_list->autoPagingIterator() as $plan) { 
     if ($plan->id == $planname) { 
      $planlookfor = $plan; 
      break 2; 
     } 
    } 
    if (!$plan->has_more) { 
     break; 
    } 
    $last_plan = end($plan_list->data); 
} 

if(!empty($recurring_duration)){ 
    if(isset($planlookfor) && $planlookfor->id==$planname){ 

    }else{ 
     $plan = \Stripe\Plan::create(array(
      "name" => 'Basic Plan'.' '.$recurring_duration_text.' '.$amount/100, 
      "id" => $planname,  
      "interval" => "$recurring_duration", 
      "currency" => strtolower($currency), 
      "amount" => $amount, 
     )); 
    } 
} 
1

私はあなたが計画を作成しすぎていると思います。あなたのコードはありますが、いったん計画を立てたら、それを再作成する必要はありません。 ここに簡単な手順があります。

  1. 計画が取得できた場合に顧客
  2. チェックを作成します。できるだけ$ planに格納してください。
  3. 繰り返し期間が空でない場合は、チェック$計画に
  4. を新しい計画を作成し、それを保存しない場合は、顧客
  5. に計画を割り当てるそうしないとした後、あなたのコードから今すぐ顧客に

を金額を請求例外をチェックして計画を作成した後、それを再度作成する必要はありません。

$customer = \Stripe\Customer::create(array(
          'email'  => $email, 
          'source' => $token 
         )); 
if(!empty($recurring_duration)){ 
          try { 
           $plan = \Stripe\Plan::retrieve($planname); 
           //got plan 
          } catch (Error\InvalidRequest $exception) { 
           //create new plan 
           $plan = \Stripe\Plan::create(array(
            "name" => "Basic Plan", 
            "id" => $planname,  
            "interval" => "$recurring_duration", 
            "currency" => strtolower($currency), 
            "amount" => $amount, 
           )); 
          } 
          $charge = \Stripe\Subscription::create(array(
           "customer" => $customer->id, 
           "items" => array(
            array(
            "plan" => $planname, 
           ), 
           ), 
          )); 
        }else{ 
          $charge = \Stripe\Charge::create(array(
              'customer' => $customer->id, 
              'amount'  => $amount, 
              'currency' => strtolower($currency), 
              'description' => '', 
            ) 
          ); 
        } 
$val = BSP_add_form_data($charge); 

いつも必要とされる顧客を最初に作成しました。

+0

はい、しかし、その時に問題を解決する計画を検索します。メッセージを返します。 –

関連する問題