2016-06-07 8 views
1

Ich versuche, den Transaktions-ID nach dem Kauf zu erhalten, aber es gibt leere auf ThankYou SeitePHP-Streifen den Transaktions-ID nach dem erfolgreichen Kauf erhalten

order.php

<?php 
\Stripe\Stripe::setApiKey('<test token>'); 

$amount = 100; 
$card = $_POST['stripeToken']; 

// Create a Customer 
$customer = \Stripe\Customer::create(array(
    "source" => $card, 
    "email" => $email, 
    "description" => "Example description") 
); 

// Charge the Customer instead of the card 
$charge = \Stripe\Charge::create(array(
    "amount" => 100, 
    "currency" => "usd", 
    "customer" => $customer->id) 
); 

// Save the billing info 
set_billing([ 
    'customer_id' => $customer->id, 
    'address' => $address, 
    'address2' => $address2, 
    'city' => $city, 
    'state' => $state, 
    'country' => $country, 
    'postal' => $postal, 
    'trans_id' => $charge->id // Save the transaction id 
]); 

function set_billing($fields = array()) 
{ 
    $bdate = time(); 

    $query = "INSERT INTO billings (
     customer_id, address, address2, city, 
     state, postal, country, billing_date, trans_id 
    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; 

    $stmt = $GLOBALS['sqlConnection']->prepare($query); 
    $stmt->bind_param(
     'sssssssis', $fields['customer_id'], $fields['address'], $fields['address2'], $fields['city'], $fields['state'], $fields['postal'], $fields['country'], $bdate, $fields['trans_id']); 
    $stmt->execute(); 
} 

// If successful, redirect to thank you page 
header('Location: /thankyou.php?id=' . $user_id); 
exit; 

thankyou.php

<?php 
$s = $sql->prepare('SELECT trans_id FROM billings WHERE user_id = ?'); 
$s->bind_param('i', $_GET['id']); 
$s->execute(); 
$s->bind_result($trans_id); 
$s->fetch(); 
?> 

<ul> 
    <li>Transaction id: <?php echo $trans_id ?></li> 
</ul> 

Gibt es ein Problem mit meinem Code?

+0

eingefügt haben, wie Sie trans_id aus billings Tisch holen werden ... In welcher Datei Sie speichern Transaktionsdetails in billings Tabelle? –

+0

Wenn Sie den Kunden belasten, erhalten Sie ein "Nachrichtenarray", versuchen Sie es zu drucken, und Sie erhalten darin auch 'transaction_id'. Genau wie '$ charge_resp = $ charge ['msg']; $ transactionid = $ charge_resp-> id; ' – Nehal

+0

@keziah, anstatt die Transaktions-ID zu holen, müssen Sie sie zuerst auch speichern. Wo hast du 'transaction id' in deine db eingefügt? – Nehal

Antwort

4

verwenden, wenn Sie das Aufladen Kunde mit dieser

$charge = \Stripe\Charge::create(array(
    "amount" => 100, 
    "currency" => "usd", 
    "customer" => $customer->id) 
); 

versuchen auch print_r($charge); // to check the output variables

Sie werden seine Antwort erhalten wie $charge->id das ist nichts anderes als die Transaktions-ID, legen Sie diese Transaktions-ID in der Datenbank für die zukünftige Verwendung. Und dann wenden Sie Ihren weiteren Code an.

Und dann in thankyou.php den Wert holen, die Sie

+0

@keziah, so ist Ihr Problem vollständig gelöst. Wenn ja, dann zögern Sie nicht, abzustimmen/zu akzeptieren, wenn es irgendwie geholfen hat oder Sie es nützlich fanden. Wie es auch für andere Benutzer nützlich sein wird – Nehal

1

Sie können direkt $ Ladungs-> id

Aktualisieren Sie Ihre Linie in order.php

// If successful, redirect to thank you page 
header('Location: /thankyou.php?id=' . $charge->id); 

Aktualisieren Sie Ihren Code in thankyou.php

<ul> 
    <li>Transaction id: <?php echo $_GET['id'] ?></li> 
</ul> 
+0

Sie sollten $ Charge-> ID als Transaktions-ID verwenden, weil balance_transaction ist die ID der Saldotransaktion, die die Auswirkung dieser Gebühr auf Ihren Kontostand beschreibt. –

+0

Bitte überprüfen Sie diesen Link https://stripe.com/docs/api#charge_object-balance_transaction –

+0

Ich denke, Sie sollten keine Kartendetails an Ihrem Ende speichern. Sie können eine Sache tun, die letzten 4 Ziffern der Karte an Ihrem Ende mit der Kartenidentifikation speichern, die durch Streifen gegeben wird. Stripe wird alles an seinem Ende verwalten. Sie können alle Karten, die Benutzern zugeordnet sind, mit der Stripe-Benutzer-ID –

Verwandte Themen