Symfony 4 - Настройка интеграции Braintree Payments - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь настроить интеграцию Braintree в своем приложении Symfony 4 PHP.

Я использовал composer, чтобы требовать и установить последнюю версию Braintree SDK, и добавил учетные данные тестирования в файл env.

Настройка клиента

https://developers.braintreepayments.com/start/hello-client/javascript/v3

Затем я добавил код клиента в свой шаблон веточки для пользовательского интерфейса.

<div id="dropin-container"></div>
<button id="submit-button">Request payment method</button>
<script>
 var button = document.querySelector('#submit-button');

 braintree.dropin.create({
  authorization: 'CLIENT_TOKEN_FROM_SERVER',
  container: '#dropin-container'
 }, function (createErr, instance) {
  button.addEventListener('click', function () {
   instance.requestPaymentMethod(function (err, payload) {
     // Submit payload.nonce to your server
   });
  });
 });
</script>

И включил этот скрипт в блок js

<script src="https://js.braintreegateway.com/web/dropin/1.14.1/js/dropin.min.js"></script>

Настроить сервер

https://developers.braintreepayments.com/start/hello-server/php

Следующим шагом является созданиеклиентский токен

$clientToken = $gateway->clientToken()->generate([
    "customerId" => $aCustomerId
]);

, а затем отправить токен клиенту и т. д.

Вопрос

У меня вопрос, куда поместить код на стороне сервера вмое приложение Symfony 4?

Создаете ли вы сервис Braintree.php в src / Services и помещаете весь PHP-код Braintree туда или в контроллер, или некоторые в оба?

1 Ответ

0 голосов
/ 04 января 2019

Лучшая практика - держать контроллеры настолько тонкими, насколько это возможно.Метод контроллера должен:

  • принять запрос
  • вызвать соответствующую службу
  • обработать ответ

Это все, что должен быть контроллерответственный за.В вашем случае соответствующей службой будет ваш BraintreeService, класс, отвечающий за все, что вам нужно сделать с Braintree SDK или за все, что связано с Braintree.

Symfony следует философии «тонких контроллеров итолстые модели ".Это означает, что контроллеры должны содержать только тонкий слой клея-кода, необходимый для координации различных частей приложения.

https://symfony.com/doc/current/best_practices/controllers.html

...