2014-07-23 16 views
6

Ich arbeite an Braintree zum ersten Mal und Probleme im allerersten Schritt. Ich bin nicht in der Lage, Dropin-Funktionalität und andere .. Ich brauche Hilfe, um es zu sortieren.Integration von braintree verursacht Probleme

Ich folgte hier angegebenen Schritte: https://developers.braintreepayments.com/javascript+php/start/overview

Erster Schritt ist Javascript-Client! - Ich folgte wie erwähnt, hinzugefügt Skript

<script src="https://js.braintreegateway.com/v2/braintree.js"></script> 

Dann fügte HTML-Teil

<form id="checkout" method="post" action="/checkout"> 
    <div id="dropin"></div> 
    <input type="submit" value="Pay $10"> 
</form> 

Und endlich habe ich unten Skript in Script-Tag hinzugefügt.

braintree.setup("CLIENT_TOKEN_KEY", 'dropin', { 
    container: 'checkout' 
}) 

Ich habe mit Client Token Key von unserem Server abgerufen.

für den nächsten Schritt, fügte ich Konfigurationen wie erwähnt

Braintree_Configuration::environment('sandbox'); 
Braintree_Configuration::merchantId('use_your_merchant_id'); //updated with our merchant id 
Braintree_Configuration::publicKey('use_your_public_key'); // updated with our public key 
Braintree_Configuration::privateKey('use_your_private_key'); //updated with our private key 

hinzugefügt dann

$clientToken = Braintree_ClientToken::generate(array(
    "customerId" => $aCustomerId 
)); 

Nun Probleme Ich erhalte -

Wenn ich $ aCustomerId aktualisiert mit unseren Kundennummer, ich habe einen Fatal Error vom "customer_id" Feld undefined in Braintree_ClientToken. So entfernte array ("Kunde" => $ aCustomerId) und bekam die Client-Token ..

Die Client-Token in brantree.setup('TOKEN_KEY','dropin',{container:'checkout'}) verwendet werden, und bekamen

Error: Unable to find valid container. -braintree.js(line 18) 

ich auch zu dieser Zeit hat mich einmal var braintree = Braintree.create("CLIENT_TOKEN_KEY"); oben erwähnt brantree.setup('TOKEN_KEY','dropin',{container:'checkout'}) habe TypeError: braintree.setup is not a function

Ich versuche, es aus den letzten zwei Tagen zu sortieren, aber immer noch habe ich nicht Dropin Bildschirm wie in Demo gezeigt.

Hoffnung für eine gute Hilfe ..

Antwort

7

Platz alle Skripte nach dem html/footer Abschnitt wird diese Arbeit:

<?php 
require_once 'braintree-php-2.30.0/lib/Braintree.php'; 

Braintree_Configuration::environment('sandbox'); 
Braintree_Configuration::merchantId('-----------'); 
Braintree_Configuration::publicKey('-----------'); 
Braintree_Configuration::privateKey('-----------'); 
if(isset($_POST['submit'])){ 
    /* process transaction */ 
    $result = Braintree_Transaction::sale(array(
    'amount' => '234.00', 
    'creditCard' => array(
    'number' => '30569309025904', 
    'expirationDate' => '05/14' 
    ) 
)); 

if ($result->success) { 
    print_r("success!: " . $result->transaction->id); 
    } else if ($result->transaction) { 
    print_r("Error processing transaction:"); 
    print_r("\n code: " . $result->transaction->processorResponseCode); 
    print_r("\n text: " . $result->transaction->processorResponseText); 
    } else { 
     print_r("Validation errors: \n"); 
     print_r($result->errors->deepAll()); 
    } 
} 

$clientToken = Braintree_ClientToken::generate(); 

?> 

<html> 
    <head> 
    </head> 
    <body> 
    <div id="checkout" method="post" action="/checkout"> 
     <div id="dropin"></div> 
     <input data-braintree-name="number" value="4111111111111111"> 
     <input data-braintree-name="expiration_date" value="10/20"> 
     <input type="submit" id="submit" value="Pay"> 
     <div id="paypal-button"></div> 
    </div> 

    <!-- Scripts --> 
    <script src="https://code.jquery.com/jquery-2.1.1.js"></script> 
    <script src="https://js.braintreegateway.com/v2/braintree.js"></script> 
    <script> 
    braintree.setup("<?php print $clientToken; ?>", "dropin", { container: 
    jQuery("#dropin") , form: jQuery("#checkout") , 

    paymentMethodNonceReceived: function (event, nonce) { 
     // do something 
     } 
    }); 
    </script> 

    </body> 
</html>     
4

ich bei Braintree arbeiten. Fühlen Sie sich frei zu reach out to our support team, wenn Sie weitere Fragen haben.

Der erste Fehler, den Sie sehen konnten, , wird ausgelöst, wenn JavaScript den von Ihnen bereitgestellten Container nicht finden kann. Die akzeptierten Werte für container sind eine ID-Zeichenfolge, ein DOM-Knoten oder ein jQuery-Objekt. Ihr Beispielcode sollte funktionieren, aber wenn nicht, könnten Sie versuchen, ein anderes Format zu übergeben, zum Beispiel {container: $('#dropin')}.

Sobald Sie sicher sind, dass Sie den richtigen Container übergeben, würde ich auch empfehlen, sicherzustellen, dass Sie in Ihrem Client-Token korrekt interpolieren. Wenn Sie die Quelle auf Ihrer Seite anzeigen, sollte Ihr Client-Token eine Base64-codierte Zeichenfolge sein.

+1

Danke für die Antwort, versuchte ich mit '{container: $ ('# dropin')}} auch, aber mit demselben Problem. Es gibt keinen Tippfehler, da ich von der Demo der Braintree-Site kopiere. –

5

Ich hatte dieses Problem und löste es durch das Javascript am Ende der Seite setzen. Die Alternative wäre, es in einen Dokument-Ready-Test zu legen.

Das Problem tritt auf, weil der Braintree-Code versucht, den Container zu finden, sobald das Skript geladen wird. Wenn sich der Code jedoch im Kopf des Dokuments befindet, wurde der Container nicht geladen. Daher wird der Container nicht gefunden und Sie erhalten einen Fehler.

Der Kommentar zu base64_encoding ist falsch. Es funktioniert perfekt, wenn der Code nach dem Laden des Containers ausgelöst wird, ohne die bereits codierte Zeichenkette neu zu codieren.

Verwandte Themen