2017-09-10 5 views
0

J'ai Stripe fonctionne très bien. Lors du don d'un client, un nouvel abonnement est créé, et il fonctionne très bien, sauf si Stripe reconnaît l'e-mail et dit: "Entrez le code de vérification."Stripe Checkout - Problème d'abonnement avec l'utilisateur Stripe Reconnu

Si le client le fait, pour une raison quelconque, un nouvel abonnement n'est pas créé et le client n'est pas facturé.

Voici ma charge 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,) 
); 


?> 

Toutes les idées pourquoi quand Stripe reconnaît l'utilisateur et il est « connecté » il ne me permet pas de créer un abonnement?

Dans le journal de bande, je reçois cette erreur 400:

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

Mais il n'y a certainement pas un plan créé ... ah!

+0

Je ne suis pas sûr de ce qui se passe! Vous avez dit que vous faisiez face à un problème de création d'abonnement. Mais le code fourni est pour créer Plan et Client. Et le message d'erreur dit "Plan existe déjà" bien que l'ID du Plan soit associé au Plan existant selon le message! – Zico

Répondre

1

La raison pour laquelle votre demande est en échec parce que si un utilisateur revient avec la même adresse e-mail et veut vous inscrire pour le même plan, vous disposez déjà d'un plan existant avec ce nom,

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

afin que votre appel à \Stripe\Plan::create renverra une erreur et entraînera l'échec de vos autres appels ici.

Vous pouvez ajouter quelque chose comme un ID ou une heure unique à votre ID de plan.

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

D'autres façons que les gens traitent généralement ce sont:

  • Créer un plan unique pour 1 $, puis ajuster la quantité lors de la création de votre abonnement. Donc, un plan mensuel pour 1 $ avec une quantité de 100, coûterait 100 $ par mois.

  • Stockez le montant qu'un client paiera dans votre application. Abonnez vos clients à un plan de 0 $/mois. Utilisez les webhooks pour écouter les événements invoice.created. Demandez à votre gestionnaire de webhook d'ajouter un élément de facture tous les mois pour le solde.