2014-07-23 18 views
6

Tôi đang làm việc trên Braintree lần đầu tiên và gặp vấn đề trong bước đầu tiên. Tôi không thể truy cập chức năng dropin và các chức năng khác .. Tôi cần trợ giúp để sắp xếp nó.Tích hợp các vấn đề gây ra braintree

Tôi đi theo bước đưa ra ở đây: https://developers.braintreepayments.com/javascript+php/start/overview

Bước đầu tiên là javascript khách hàng! - Tôi đi theo như đã đề cập, thêm vào kịch bản

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

Sau đó thêm vào HTML phần

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

Và cuối cùng tôi đã thêm bên dưới kịch bản trong thẻ script.

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

Tôi đã kiểm tra bằng Mã khóa khách hàng lấy từ máy chủ của chúng tôi.

cho bước tiếp theo, tôi đã thêm các cấu hình như đã đề cập

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 

sau đó thêm

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

Bây giờ, vấn đề tôi nhận được -

Khi tôi cập nhật $ aCustomerId với chúng tôi id khách hàng, tôi nhận được Lỗi nghiêm trọng của trường "customer_id" chưa được xác định trong Braintree_ClientToken. mảng Vì vậy, loại bỏ ("khách hàng" => $ aCustomerId) và đã nhận được thẻ khách hàng ..

Đó khách hàng thẻ được sử dụng trong brantree.setup('TOKEN_KEY','dropin',{container:'checkout'}) và có

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

tôi cũng đề cập đến một lần var braintree = Braintree.create("CLIENT_TOKEN_KEY"); trên brantree.setup('TOKEN_KEY','dropin',{container:'checkout'}) lúc đó tôi đã có TypeError: braintree.setup is not a function

Tôi đang cố gắng phân loại nó trong hai ngày qua, nhưng tôi vẫn không nhận được màn hình thả xuống như được trình bày trong bản trình diễn.

Hy vọng được trợ giúp tốt ..

Trả lời

7

Nơi tất cả các kịch bản sau phần html/footer, điều này sẽ làm việc:

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

Tôi làm việc tại Braintree. Vui lòng reach out to our support team nếu bạn có thêm câu hỏi.

Lỗi đầu tiên bạn thấy, Unable to find valid container., sẽ bị hủy nếu JavaScript không thể tìm thấy vùng chứa bạn đã cung cấp. Các giá trị được chấp nhận cho một container là một chuỗi ID, nút DOM hoặc đối tượng jQuery. Mã ví dụ của bạn sẽ hoạt động, nhưng nếu không, bạn có thể thử chuyển sang một định dạng khác, ví dụ: {container: $('#dropin')}.

Khi bạn chắc chắn mình đang chuyển vào đúng vùng chứa, tôi cũng khuyên bạn nên đảm bảo rằng bạn đang nội suy chính xác trong mã thông báo ứng dụng khách của mình. Nếu bạn xem nguồn trên trang của mình, mã thông báo khách hàng của bạn phải là chuỗi được mã hóa base64.

+1

Cảm ơn bạn đã trả lời, tôi đã thử với '{container: $ ('# dropin')}' quá, nhưng có cùng một vấn đề. Không có bất kỳ lỗi chính tả nào khi tôi đang sao chép từ bản demo của trang web Braintree .. –

5

Tôi có vấn đề này và giải quyết nó bằng cách đặt javascript vào cuối trang. Giải pháp thay thế sẽ là để kèm theo nó trong một bài kiểm tra sẵn sàng cho tài liệu.

Sự cố xảy ra vì mã braintree cố gắng tìm vùng chứa ngay sau khi tập lệnh được tải. Nhưng nếu mã của bạn nằm trong phần đầu của tài liệu, vùng chứa sẽ không được tải, vì vậy nó sẽ không tìm thấy vùng chứa và bạn sẽ gặp lỗi.

Nhận xét về base64_encoding không chính xác. Nó hoạt động hoàn hảo nếu mã được kích hoạt sau khi vùng chứa đã được tải mà không mucking xung quanh mã hóa lại chuỗi đã được mã hóa.

Các vấn đề liên quan