我正在尝试在Symfony 4 PHP应用程序中设置Braintree集成。
我已经使用composer要求并安装了最新版本的Braintree SDK,并已将测试凭据添加到env文件中。
设置客户端
https://developers.braintreepayments.com/start/hello-client/javascript/v3
然后我将客户端代码添加到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>
并将此脚本包含在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代码放在其中或放置在控制器中,或者两者都放置在其中?
答案 0 :(得分:0)
最佳做法是使控制器尽可能薄。控制器方法应:
这是控制器应负责的全部。在您的情况下,适当的服务将是您的BraintreeService
,该类负责您与Braintree SDK或与Braintree相关的任何事情。
Symfony遵循“瘦控制器和胖模型”的哲学。这意味着控制器应仅保留协调应用程序不同部分所需的粘合代码的薄层。
https://symfony.com/doc/current/best_practices/controllers.html