2017-07-18 13 views
1

私のコードでは、顧客が名前とカードの詳細を入力し、PHPスクリプトに戻ってストリーミング顧客を作成し、カードを請求する購入リクエスト。Stripe CheckoutとOmnipayを使用したサブスクリプションの作成

可能であれば、同じカードとomnipayライブラリを使用してサブスクリプションを追加するにはどうすればよいですか?トークンを使用するか、購入オブジェクトのソースIDを取得して使用し、購入後にサブスクリプションを作成しますか?

クラス内で、以下のコードでcreateSubscriptionを呼び出すと、「この顧客は支払い元がありません」というエラーが表示されます。

public function createSubscription($token,$customer_id,$plan,$source_id) 
{ 
     try { 
      $response = $this->gateway->createSubscription(
           array(
            'customerReference' => $customer_id, 
            'plan'    => $plan, 
            'source'   => $token 
           ) 
      )->send(); 
      if ($response->isSuccessful()) { 
       $data = $response->getData(); 
return $data; 
      } 
     } catch (Exception $e) { 
      $message = "Error creating Stripe subscription: " . $e->getMessage(); 
      return; 
     } 
    } 
+0

ストライプサブスクリプションは、常に、顧客にデフォルトのカード(default_source)を充電します 何ここで「ソース」に渡していますか? Stripe.js/Checkoutから取得したトークン(テスト用:tok_visa)? – duck

+0

お客様が「Checkout」を完了した後、Stripeから受け取ったトークンを渡そうとしました。ここで 'ソース'がトークンであるかどうか、またはソースIDかカードオブジェクトのいずれかである必要があるかどうかは不明です。私は、カードを充電した後にサブスクリプションを追加しようとしますが、ソースがワンタイムチャージにしか適さないかどうかはわかりません。 –

+0

購入後、ソースIDまたはトークンのいずれかを使用できないため、「invalid_request_error - この顧客には支払い元がありません」というメッセージが表示されます。顧客の作成依頼を使用して再試行します。 –

答えて

0

私はその後、「本プラン」と「customerReference」パラメータを使用してサブスクリプションを作成し、最後にcustomerReference(isSuccessfulとチェックを使用してカードを充電するために、トークンを使用して、付属のカードの詳細と顧客を作成することで、成功してきました明確にするために省略し、エラーチェック):あなたはすでにカードを追加した場合は「ソース」をパスする必要はありませんので

$response = $gateway->createCustomer(array(
    'description'  => 'Test Customer', 
    'email'    => $_POST['stripeEmail'], 
    'source' => $token 
))->send(); 

$response = $gateway->createSubscription(array(
    "customerReference" => $customer_id, 
    'plan' => 'plan_name', 
))->send(); 

$transaction = $gateway->purchase(array(
        'amount' => '5.00', 
        'currency' => 'gbp', 
        'receipt_email' => '[email protected]', 
        "description" => 'Test Order', 
        'customerReference' => $customer_id, 
)); 
関連する問題