2016-04-27 2 views
2

Я пытаюсь интегрировать переход с Braintree Payments в мобильное приложение Ionic. На основе документации Braintree и некоторые примеры кода я смог найти в Интернете, следующий код, что я смог придумать до сих пор, но это не похоже на работу:Braintree Drop-in container in Ionic

controller.js

.controller('CheckoutForm', function($scope, $window) { 
    $scope.clientToken = "<token generated by the server>" 

    $scope.renderCheckout = function() { 
    braintree.setup($scope.clientToken, "dropin", { 
     container: "payment-form" 
     }); 
    } 
}) 

template.html

<div> 
    Payment details: 
    <form id="checkout"> 
    <div id="payment-form" onLoad="renderCheckout()"></div> 
    </form> 
</div> 

Я также включил следующую строку в index.html:

<script src="https://js.braintreegateway.com/js/braintree-2.23.0.min.js"></script> 

Я совершенно новичок в разработке Ionic и HTML5/JS в целом, поэтому любая помощь будет высоко оценена.

ответ

3

Забудьте о функции onload. Просто сделайте это в своем контроллере.

var clientToken = "eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiIyMTUwYzJiOWYyODdlMmZmMzUyZWQxZmMyMDFiNjY3ZDE5OGNhMjEwNjAyYmYzNzI1NmVmNDIzMWY0Yjg3OGNmfGNyZWF0ZWRfYXQ9MjAxNi0wNC0yOFQwNjoyODo1My43NjM0MjY0MzYrMDAwMFx1MDAyNm1lcmNoYW50X2lkPTM0OHBrOWNnZjNiZ3l3MmJcdTAwMjZwdWJsaWNfa2V5PTJuMjQ3ZHY4OWJxOXZtcHIiLCJjb25maWdVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvMzQ4cGs5Y2dmM2JneXcyYi9jbGllbnRfYXBpL3YxL2NvbmZpZ3VyYXRpb24iLCJjaGFsbGVuZ2VzIjpbXSwiZW52aXJvbm1lbnQiOiJzYW5kYm94IiwiY2xpZW50QXBpVXJsIjoiaHR0cHM6Ly9hcGkuc2FuZGJveC5icmFpbnRyZWVnYXRld2F5LmNvbTo0NDMvbWVyY2hhbnRzLzM0OHBrOWNnZjNiZ3l3MmIvY2xpZW50X2FwaSIsImFzc2V0c1VybCI6Imh0dHBzOi8vYXNzZXRzLmJyYWludHJlZWdhdGV3YXkuY29tIiwiYXV0aFVybCI6Imh0dHBzOi8vYXV0aC52ZW5tby5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tIiwiYW5hbHl0aWNzIjp7InVybCI6Imh0dHBzOi8vY2xpZW50LWFuYWx5dGljcy5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tLzM0OHBrOWNnZjNiZ3l3MmIifSwidGhyZWVEU2VjdXJlRW5hYmxlZCI6dHJ1ZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiQWNtZSBXaWRnZXRzLCBMdGQuIChTYW5kYm94KSIsImNsaWVudElkIjpudWxsLCJwcml2YWN5VXJsIjoiaHR0cDovL2V4YW1wbGUuY29tL3BwIiwidXNlckFncmVlbWVudFVybCI6Imh0dHA6Ly9leGFtcGxlLmNvbS90b3MiLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjp0cnVlLCJlbnZpcm9ubWVudCI6Im9mZmxpbmUiLCJ1bnZldHRlZE1lcmNoYW50IjpmYWxzZSwiYnJhaW50cmVlQ2xpZW50SWQiOiJtYXN0ZXJjbGllbnQzIiwiYmlsbGluZ0FncmVlbWVudHNFbmFibGVkIjp0cnVlLCJtZXJjaGFudEFjY291bnRJZCI6ImFjbWV3aWRnZXRzbHRkc2FuZGJveCIsImN1cnJlbmN5SXNvQ29kZSI6IlVTRCJ9LCJjb2luYmFzZUVuYWJsZWQiOmZhbHNlLCJtZXJjaGFudElkIjoiMzQ4cGs5Y2dmM2JneXcyYiIsInZlbm1vIjoib2ZmIn0="; 

// Client token above is just for testing and provided by Braintree for testing purposes 

braintree.setup(clientToken, "dropin", { 
    container: "payment-form" 
}); 

Затем в HTML:

<form id="checkout"> 
    <div id="payment-form"></div> 
</form> 

Для мобильного помнить, чтобы добавить собственное содержание политики безопасности и белые списки с Cordova-белый список-плагин.

Документация для ПСУ: https://developers.braintreepayments.com/reference/client-reference/javascript/v2/best-practices#using-braintree.js-with-a-content-security-policy

Документация Кордова Белый список плагинов: https://cordova.apache.org/docs/en/latest/guide/appdev/whitelist/index.html

+0

это, похоже, сработало! Спасибо за вашу помощь – whtvr

+0

Благодарим вас за плагин с корневой сетью. Будет ли это хорошо для использования с импортированным модулем drop-in, или это будет использоваться строго с плагином cordova braintree? –

1

Что thepio "предложил исключительно для тестирования. Но правильным способом может быть создание Client Token на вашем сервере. Затем ваше приложение Ionic будет POST и получит токен клиента с вашего сервера. И затем, когда генерируется платеж nonce, вы можете отправить свои платежные данные на свой сервер для обработки платежа.

Проверьте этот пример реализации. https://github.com/demianborba/braintree-cordova-angular-node

+0

Я думаю, что этот вопросник знает об этом, так как он/она написал в своем вопросе '$ scope.clientToken =" <токен, сгенерированный сервером> ". И в своем ответе я просто уточнил, что токен в моем ответе предназначен только для тестирования :) – thepio

+0

Спасибо за ваш комментарий! Да, я генерирую токен на своем сервере, и от этого требуется мобильное приложение. – whtvr

Смежные вопросы