2016-12-21 3 views
0

Alles funktioniert gut in Stripe - das Token wird generiert, geschrieben in den "Log" Teil in meinem Dashboard, etc. Es wird jedoch keine Gebühr erhoben. Ich habe keinen Fehler von Stripe oder meinem Code, auch wenn ich die gesamte Fehlerbehandlung durch die Stripe-Dokumentation durchgeführt habe. Wie kann ich das korrigieren?Ladekarte mit Stripe

require_once ("vendor/autoload.php"); 

if ($_POST) { 
echo "catch if"; 

// 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 

StripeStripe::setApiKey("myApyKey"); 

// Get the credit card details submitted by the form 

$token = $_POST['stripeToken']; 

// Create a charge: this will charge the user's card 

try { 
    echo "charging"; 
    $charge = StripeCharge::create(array(
    "amount" => 1000, // Amount in cents 
    "currency" => "eur", 
    "source" => $token, 
    "description" => "Example charge" 
)); 
} 

catch(StripeErrorCard $e) { 

    // Since it's a decline, \Stripe\Error\Card will be caught 

    $body = $e->getJsonBody(); 
    $err = $body['error']; 
    print ('Status is:' . $e->getHttpStatus() . "\n"); 
    print ('Type is:' . $err['type'] . "\n"); 
    print ('Code is:' . $err['code'] . "\n"); 

    // param is '' in this case 

    print ('Param is:' . $err['param'] . "\n"); 
    print ('Message is:' . $err['message'] . "\n"); 
} 

catch(StripeErrorRateLimit $e) { 

    // Too many requests made to the API too quickly 

} 

catch(StripeErrorInvalidRequest $e) { 

    // Invalid parameters were supplied to Stripe's API 

} 

catch(StripeErrorAuthentication $e) { 

    // Authentication with Stripe's API failed 
    // (maybe you changed API keys recently) 

} 

catch(StripeErrorApiConnection $e) { 

    // Network communication with Stripe failed 

} 

catch(StripeErrorBase $e) { 

    // Display a very generic error to the user, and maybe send 
    // yourself an email 

} 

catch(Exception $e) { 

    // Something else happened, completely unrelated to Stripe 

} 
+0

Ihre Fänge werden meist still andernfalls zu verwenden. Entweder entfernen Sie sie oder lassen sie etwas Offensichtliches tun, wie 'print 'OH SHIT Stripe InvalidRequest"; ' – ceejayoz

+0

versuche nach dieser Zeile $ err = $ body [' error ']; print_r ($ err); und siehe Fehler. –

Antwort

2

Sie sind wahrscheinlich einen Fehler bekommen, und Ihr Code ist der Umgang mit diesen Fehler korrekt, aber Sie Fehlerbehandlungscode nicht wirklich für viele der Fälle nichts tun.

Sie sollten wahrscheinlich in jedem catch-Block etwas hinzufügen (z. B. einen print-Aufruf), um genau zu sehen, welche Art von Problem zurückgegeben wird.

Alternativ dazu können Sie in Ihrem Stripe Dashboard Ihre Konten anzeigen. Live-Modus und Testmodus Protokolle unter https://dashboard.stripe.com/logs, die einen Eintrag für jede Anfrage (erfolgreich oder nicht) enthalten, die Stripe-Server trifft.

+0

Ich habe das Problem gefunden !! –

+0

Eigentlich war meine API nicht auf dem neuesten Stand! Anscheinend hatte Stripe nicht das Gefühl, mir zu sagen, dass es so wichtig war. –

+0

Sie sagten es Ihnen wahrscheinlich. Ihre Do-Nothing "Catch" -Aussagen haben das wahrscheinlich vor Ihnen verborgen. – ceejayoz

0

Versuchen unter Code Fehler Ausgabe

try { 
    echo "charging"; 
    $charge = StripeCharge::create(array(
    "amount" => 1000, // Amount in cents 
    "currency" => "eur", 
    "source" => $token, 
    "description" => "Example charge" 
)); 
} 

catch(StripeErrorCard $e) { 
    $error = $e->getJsonBody(); 
    <pre>print_r($error);</pre> 
    //then you can handle like that 
    if($error == "Your card was declined."){ 
     echo "Your credit card was declined. Please try again with an alternate card."; 
    } 
}