【问题标题】:Symfony 4 - Setting up Braintree Payments integrationSymfony 4 - 设置 Braintree Payments 集成
【发布时间】:2019-01-04 08:25:57
【问题描述】:

我正在尝试在我的 Symfony 4 PHP 应用程序中设置 Braintree 集成。

我已经使用 composer 要求并安装了最新版本的 Braintree SDK,并在 env 文件中添加了测试凭据。

设置客户端

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

然后,我将客户端代码添加到用于 Drop-in UI 的 twig 模板中。

<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 应用程序的什么位置?

您是在 src/Services 中创建一个 Braintree.php 服务,并将所有 Braintree PHP 代码放在那里或控制器中,还是两者都放一些?

【问题讨论】:

    标签: php symfony symfony4 braintree


    【解决方案1】:

    最佳做法是让控制器尽可能地精简。控制器方法应该:

    • 接受请求
    • 调用相应的服务
    • 处理响应

    这都是控制器应该负责的。在您的情况下,适当的服务将是您的 BraintreeService,该类负责您需要使用 Braintree SDK 执行的任何操作或与 Braintree 相关的任何操作。

    Symfony 遵循“瘦控制器和胖模型”的理念。这意味着控制器应该只包含协调应用程序不同部分所需的薄层粘合代码。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-01
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 2016-09-22
      • 2018-09-30
      相关资源
      最近更新 更多