2017-09-10 8 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,) 
); 


?> 

스트라이프가 사용자를 인식하고 그는 "로그인"할 때 그것은 나를 구독을 만들 수 없습니다 왜 어떤 아이디어인가? 아 ...

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

그러나 확실히 만들 계획이되지 않습니다 : 스트라이핑 로그에서

는,이 400 오류가 발생합니다!

+0

나는 무슨 일이 일어나고 있는지 잘 모르겠다. Subscription 작성 문제에 직면했다고하셨습니다. 그러나 제공된 코드는 계획 및 고객을 작성하는 데 사용됩니다. 그리고 오류 메시지는 계획의 ID가 메시지 당 기존 계획과 일치하지만 "계획이 이미 있습니다"라고 말했습니다! – Zico

답변

1

사용자가 동일한 이메일 주소로 다시 와서 같은 계획에 가입하고자하는 경우, 당신은 이미 그 이름을 가진 기존 계획을 가지고 있기 때문에 요청이 실패하는 이유는

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

이므로 \Stripe\Plan::create으로 전화하면 오류가 반환되어 나머지 통화가 여기서 실패하게됩니다.

계획 ID에 고유 한 ID 또는 시간과 같은 것을 추가 할 수 있습니다. http://php.net/manual/en/function.uniqid.php

사람들이 일반적으로이 문제를 해결할 다른 어떤 방법

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

은 다음과 같습니다

  • $ 1에 대해 하나의 계획을 만들고 구독을 만들 때 다음 양을 조정합니다. 따라서 100 달러짜리 1 달러짜리 월간 계획은 100 달러를 부과 할 것입니다.

  • 신청서 내에서 고객이 지불 할 금액을 저장하십시오. 고객을 0 달러/월 계획에 가입하십시오. webhooks를 사용하여 invoice.created 이벤트를 청취하십시오. webhook 처리기에 매월 인보이스 항목을 추가하여 잔액을 계산하십시오.

관련 문제