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

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

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

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

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

Next step is to generate a client token

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

and then send token to client etc.

Question

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.

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

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

报告相同问题?

悬赏问题

  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)