2015-05-13 3 views
1

Я пытаюсь применить купон к подписке пользователя при создании.Laravel не применяет купон, используя Billing/Cashier

Для этого я использую следующий код:

$user = Auth::user(); 
if(!empty($request->coupon)){ 
    $user->subscription('monthly')->withCoupon($request->coupon)->create($request->stripeToken); 
} else { 
    $user->subscription('monthly')->create($request->stripeToken); 
} 

Я проверил значение $request->coupon и содержит свой купон. Купон существует и находится в Stripe (это проверено программно, поэтому я знаю, что купон в порядке).

Подписка создана в пределах полосы, но выставлена ​​счет на полную сумму, не учитывая купон.

Купон находится в тестовой среде, так же как и на веб-сайте - транзакция также проходит в тестовой среде.

+1

Вы полностью уверены, что ваш код находится в правильном состоянии '! Empty()'? или вы можете попробовать применить свой купон таким образом, чтобы просто проверить, откуда возникла проблема: '$ user-> подписка (« ежемесячно ») -> withCoupon ('' ** with-your-code ** '') -> create ($ request-> stripeToken); –

ответ

2

Проверяется свойство объекта устанавливается с помощью функции empty не будет иметь желаемого эффекта, потому что класс должен был бы иметь магический метод __isset, определенный для empty работать на недоступных свойств.

Это в стороне, Http\Illuminate\Request класса использует __get для доступа входных параметров, что означает, что __isset не будет работать даже в этом случае, так как свойство coupon не очень определенно в классе. Таким образом, ваше состояние почти наверняка переходит к блоку else с вашим текущим кодом (даже если у вас есть входной параметр coupon).

Именно поэтому существует метод has, чтобы определить, содержит ли запрос непустое значение для элемента ввода. Поэтому используйте это вместо:

if ($request->has('coupon')) 
+0

Крекинг ответ, спасибо. Я должен был вручную проверить if-statement (который я сделал вскоре после того, как это было опубликовано), но логично предположить, что если строка не пуста, 'empty' вернет false. Живи и учись :) – Mike

 Смежные вопросы

  • Нет связанных вопросов^_^