dsyo9700 2019-01-04 08:25
浏览 51

Symfony 4 - 设置Braintree Payments集成

I am trying to set up Braintree integration in my Symfony 4 PHP app.

I have used composer to require and install the latest version of Braintree SDK, and have added testing credentials to env file.

Set Up Client


I then added the client code to my twig template for Drop-in UI.

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

  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

And included this script in the js block

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

Set Up Server


Next step is to generate a client token

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

and then send token to client etc.


My question is where do I put the server side code in my Symfony 4 app?

Do you create a Braintree.php service in src/Services and put all the Braintree PHP code in there or in the controller, or some in both?

  • 写回答

1条回答 默认 最新

  • dornc9470 2019-01-04 09:21

    Best practice is to keep Controllers as thin as possible. Controller method should:

    • accept the request
    • call the appropriate service
    • handle response

    This is all a controller should be responsible of. In your case, the appropriate service would be your BraintreeService, a class responsible for whatever you need to do with Braintree SDK or anything related to Braintree.

    Symfony follows the philosophy of "thin controllers and fat models". This means that controllers should hold just the thin layer of glue-code needed to coordinate the different parts of the application.


    本回答被题主选为最佳回答 , 对您是否有帮助呢?



  • ¥20 求解答(matlab)
  • ¥30 ffmpeg库使用过程中遇到的问题
  • ¥15 pyqt5 中python如何通过Qtwebchannel主动发消息给web前端
  • ¥15 关于HTML中title获取xml内容的问题
  • ¥15 fanuc机器人PRIO083数字信号未复原错误,如何解决?
  • ¥20 如何为现有电路板增加远程控制功能
  • ¥15 C#点击按钮的时候的循环次数就是最后一次,如何是循环第几次的值?
  • ¥15 UE5打包失败,求解决
  • ¥15 请问STM32G431的CANOPEN协议函数怎么写
  • ¥15 graphpad prism 三因素重复测定报错