STRIPE 的处理逻辑应该在 Laravel controller 中还是在 validator 中?
Should processing logic of STRIPE be in the Laravel controller or in the validator?
我是laravel的新人。我有一个这样的控制器 ProductController
public function buy(Request $request, User $user) {
\Stripe\Stripe::setApiKey("sk_test_xxxxxxxxxxxxxxxxxxxxxxxx");
$token = $_POST['stripeToken'];
$charge = \Stripe\Charge::create([
'amount' => 100,
'currency' => 'aud',
'description' => 'Example charge',
'source' => $token,
]);
if ($charge->status === "succeeded") {
//-- Processing... --//
}
请问更合适的设计风格,是不是应该把STTRIE的部分放在其他地方,比如validator。
如果是,是制定规则和请求,然后在验证器中验证它?
谁能告诉我如何在请求中使用规则?
创建 Stripe 费用不是请求验证。这是对 Stripe 的 API 调用。所以,它绝对不应该留在验证器中。
您可以在小型应用程序的控制器中使用此逻辑,但对于 medium/large 具有抽象的扩展应用程序(例如,如果您希望稍后可以选择将支付提供商从 Stripe 更改为 Braintree),它应该在服务 class.
中
此外,切勿直接使用 $_POST
。请改用 $request->input
。作为经验法则,如果您有 2 种方法在代码中做某事,请始终使用实现更高级别库的方法(库 > 然后是框架 > 然后是核心 PHP)。
使用Laravel 5.5+
编写验证
public function buy(Request $request, User $user)
{
// first define your rules
$rules = [
'amount' => 'required|numeric'
];
$validatedData = $request->validate($rules);
// The purchase is valid...
}
对于 Laravel 5.0 - 5.4:
public function buy(Request $request, User $user)
{
// first define your rules
$rules = [
'amount' => 'required|numeric'
];
$validatedData = $this->validate($rules);
// The purchase is valid...
}
我认为控制器的典型职责:
- 接受请求
- Return 回复
我认为进行一次条件或验证检查可能没问题。
我是laravel的新人。我有一个这样的控制器 ProductController
public function buy(Request $request, User $user) {
\Stripe\Stripe::setApiKey("sk_test_xxxxxxxxxxxxxxxxxxxxxxxx");
$token = $_POST['stripeToken'];
$charge = \Stripe\Charge::create([
'amount' => 100,
'currency' => 'aud',
'description' => 'Example charge',
'source' => $token,
]);
if ($charge->status === "succeeded") {
//-- Processing... --//
}
请问更合适的设计风格,是不是应该把STTRIE的部分放在其他地方,比如validator。 如果是,是制定规则和请求,然后在验证器中验证它?
谁能告诉我如何在请求中使用规则?
创建 Stripe 费用不是请求验证。这是对 Stripe 的 API 调用。所以,它绝对不应该留在验证器中。
您可以在小型应用程序的控制器中使用此逻辑,但对于 medium/large 具有抽象的扩展应用程序(例如,如果您希望稍后可以选择将支付提供商从 Stripe 更改为 Braintree),它应该在服务 class.
中此外,切勿直接使用 $_POST
。请改用 $request->input
。作为经验法则,如果您有 2 种方法在代码中做某事,请始终使用实现更高级别库的方法(库 > 然后是框架 > 然后是核心 PHP)。
使用Laravel 5.5+
编写验证public function buy(Request $request, User $user)
{
// first define your rules
$rules = [
'amount' => 'required|numeric'
];
$validatedData = $request->validate($rules);
// The purchase is valid...
}
对于 Laravel 5.0 - 5.4:
public function buy(Request $request, User $user)
{
// first define your rules
$rules = [
'amount' => 'required|numeric'
];
$validatedData = $this->validate($rules);
// The purchase is valid...
}
我认为控制器的典型职责:
- 接受请求
- Return 回复
我认为进行一次条件或验证检查可能没问题。