2017-04-05 2 views
0

Mein Code setzt Streifen Abonnements bis (wiederkehrende Gebühren) unterWie testen Stripe-Abonnements in localhhost?

  $strtok = \Stripe\Token::create([ 
        'card' => [ 
        'number' => $ccNum, 
        'exp_month' => $expMonth, 
        'exp_year' => $expYear, 
        'cvc' => $cvc 
        ], 
        ] 
      ); 
      $stripetoken = $strtok->id; 
      $customer = \Stripe\Customer::create([ 
        'source' => $stripetoken, 
        'email' => $email 
      ]); 
      $subscription = \Stripe\Subscription::create([ 
       'customer' => $customer->id, 
       'plan' => $planId, 
      ]); 

den Code gegeben Verwendung Wenn ich es richtig ersten Versuche Striping verstehen die Karte unmittelbar nach dem Abonnement Anruf aufzuladen. Ist es unbedingt notwendig, eine Stripe-Web-Hook-URL einzurichten, um Details wie chargeId usw. zu erhalten? Ich meine, ich arbeite im Testmodus und ich bin nicht in der Lage, eine Stripe-Web-Hook-URL einzurichten, die auf einen Server zeigt. Ich möchte die stripe chargeId und andere Gebühreninformationen erhalten, wenn Stripe die Karte zuerst auflädt und wenn Stripe anschließend die Karte in periodischen Abständen zu Testzwecken lädt. Ich möchte dies in meinem lokalen System tun, das in einem lokalen Netzwerk mit dem Internet verbunden ist.

Antwort

0

Sie benötigen hier keine Webhooks. Die API-Anfrage ist synchron, was bedeutet, dass Stripe nach dem Anruf \Stripe\Subscription::create() versucht hat, den Kunden bereits zu belasten.

Sie würden entweder eine Subscriptionobject zurück, wenn die Ladung erfolgreich war oder eine error wenn nicht.

Unter der Annahme, dass die Gebühr erfolgreich war, können Sie dann sofort die neuesten Gebühren und Rechnungen über die API abrufen. Am einfachsten ist es, einen zu finden und die Funktion expand zu verwenden, um alles auf einmal zu erhalten. Ihr Code würde:

$invoices = \Stripe\Invoice::all(array(
    "limit" => 1, 
    "customer" => $customer->id, 
    "expand" => array("data.charge") 
)); 

$invoice = $invoices->data[0]; 
$invoiceId = $invoice->id; 
$chargeId = $invoice->charge->id; 

Was webhooks lokal können Sie immer ein Tool wie ngrok verwenden, um automatisch Ereignisse zu umleiten auf localhost.

+0

Der obige Code würde mir die ersten Gebühren Details abrufen, sobald das Abonnement erstellt wird. Danke für den Code. Aber ich habe immer noch ein Problem. Mein Server ist flüchtig in der Natur. Wie erhalte ich die Gebühren für die Folgegebühren in den folgenden Monaten (für monatliche Abonnements), ohne einen Web-Hook einzurichten? Dafür muss ich ein Tool wie Ngrok verwenden, oder? Um den obigen Code jeden Monat zu verwenden, muss ich eine Art Cron einrichten, der ein Skript ausführt? Ich bin mir nicht sicher, ob dies im Falle eines Epheser-Servers von Amazon ec2 möglich ist, den ich später verwenden möchte. – jai

+0

@jai ngrok wird verwendet, um Webhooks lokal zu testen, sonst nichts. Sie würden ngrok hier nicht verwenden, Ihr Code wäre live auf einem Server und würde immer nur laufen. und wenn eine neue Belastung eintritt, wird das Ereignis 'invoice.payment_succeeded' an Ihren Webhook-Endpunkt gesendet und Ihr Code würde das Ereignis behandeln und Ihre Datenbank automatisch aktualisieren. Dies ist alles dokumentiert in Stripe-Dokumentation für Webhooks und Subs: https://stripe.com/docs/webhooks und https://stripe.com/docs/subscriptions/lifecycle – koopajah

+0

Können Sie mir sagen, wie ngrok mit Docker verwenden? – jai