Перейти к содержимому


Фото
- - - - -

У кого есть решение Яндекс кассы для оплаты со скидкой


  • Чтобы отвечать, сперва войдите на форум
18 ответов в теме

#1 Kami

Kami
  • Пользователь
  • 419 сообщений
  • Откуда:Россия

Опубликовано 05.06.2020 - 21:55

Есть у кого готовое решение по скидке при оплате яндекс кассы? 

Чтоб скидка делилась на все товары пропорционально.


Изменено: Kami, 05.06.2020 - 21:55


#2 Drake777

Drake777
  • Пользователь
  • 17 сообщений

Опубликовано 08.06.2020 - 12:59

1) Получаем скидку для каждого товара $order->coupon_discount / count($purchases)

2) вычитаем скидку из каждого товара



#3 phukortsin

phukortsin
  • Фрилансер
  • 1 077 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 08.06.2020 - 14:17

1) Получаем скидку для каждого товара $order->coupon_discount / count($purchases)

2) вычитаем скидку из каждого товара


Так можно получить много разных неожиданных сюрпризов, если в заказе товар не один. Например, отрицательную цену на товар...



#4 Kami

Kami
  • Пользователь
  • 419 сообщений
  • Откуда:Россия

Опубликовано 08.06.2020 - 17:00


Так можно получить много разных неожиданных сюрпризов, если в заказе товар не один. Например, отрицательную цену на товар...

 

да уже понятно, но можно же и проверять чтоб он не был отрицательным. Более изящного я не придумал ничего, может что посоветуйте?

имею ввиду в плане как правильней составить алгоритм?



#5 phukortsin

phukortsin
  • Фрилансер
  • 1 077 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 08.06.2020 - 17:29

да уже понятно, но можно же и проверять чтоб он не был отрицательным. Более изящного я не придумал ничего, может что посоветуйте?

имею ввиду в плане как правильней составить алгоритм?

 

Конечно, можно. Но тогда можно получить НУЛЕВУЮ ЦЕНУ на товар, что немногим лучше...

 

И потом, что будете делать если проверка даст отрицательную стоимость при пересчете? Если вообще не вычитать у такого товара, то общая скидка по заказу будет менее обещанной, то есть обман покупателя выйдет... Если вычитать до 0, то опять же может быть и скидка неполная, и цена товара нулевая, тоже плохо...
 

 

Правильно - вычитать скидку у каждого  товара пропорционально его стоимости.



#6 alexivchenko

alexivchenko
  • Пользователь
  • 148 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Курск

Опубликовано 09.06.2020 - 14:01

Готового решения видимо нет.

Но такое решение было логично сделать не только при оплате Яндекс.Кассой, а вообще из коробки при применении купона на сайте, чтобы менялись {$cart->total_price|convert} и {($purchase->variant->price*$purchase->amount)|convert} корзины. Видимо как-то нужно реализовать это в api/Cart.php

 

Если брать за основу пример из одной стать, допустим

В корзине 3 товара

1. 2827 руб ( {($purchase->variant->price*$purchase->amount)|convert} )

2. 1365 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
3. 1538 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
Итого 5730 руб ( {$cart->total_price|convert}  )
Скидка 300 руб
 
Первое, что нам нужно узнать, это долю товара в итоговой сумме
1. 2827*100%/5730 = 0.49 %
2. 1365*100%/5730 = 0.24 %
3. 1538*100%/5730 = 0.27 %
 
Второе узнать сумму скидки каждого товара
1. 300*0,49 = 148 руб
2. 300*0,24 = 71 руб
3. 300*0,27 = 81 руб
 
Третье вычесть сумму пропорциональной скидки из каждого товара
1. 2827-148 = 2679 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
2. 1365-71 = 1294 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
3. 1538-81 = 1457 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
 
Итого после применения скидки 300 руб и пропорционально ее распределили
5430 руб ( {$cart->total_price|convert}  )


#7 Kami

Kami
  • Пользователь
  • 419 сообщений
  • Откуда:Россия

Опубликовано 09.06.2020 - 16:45

Вопрос в другом ,кто может сделать и какая цена доработки?

 

Также стоит модуль скидка от суммы заказа, который в зависимости от суммы заказа делает  ,скидку.

 

Соответственно все родные скидки должны работать + скидка от суммы заказа. Пишите цену и сроки.



#8 megauser

megauser
  • Пользователь
  • 140 сообщений
  • Дизайн, Заказчик, Пользователь
  • Откуда:Россия

Опубликовано 09.06.2020 - 23:53

нет спецов свободных? я бы тоже приобрел такое


Изменено: megauser, 09.06.2020 - 23:53


#9 phukortsin

phukortsin
  • Фрилансер
  • 1 077 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 10.06.2020 - 08:44

Вопрос в другом ,кто может сделать и какая цена доработки?

 

Также стоит модуль скидка от суммы заказа, который в зависимости от суммы заказа делает  ,скидку.

 

Соответственно все родные скидки должны работать + скидка от суммы заказа. Пишите цену и сроки.


Чтобы это сделать, надо сначала точно знать, что хотите. Стандартный модуль Яндекс-кассы

https://yandex.ru/su...ons/simpla.html

работает  с общей суммой заказа, и где использовать пересчитанные цены, не понятно.

Если у Вас что-то свое специфичное, то надо и объяснять в деталях...



#10 Kami

Kami
  • Пользователь
  • 419 сообщений
  • Откуда:Россия

Опубликовано 10.06.2020 - 09:18


Чтобы это сделать, надо сначала точно знать, что хотите. Стандартный модуль Яндекс-кассы

https://yandex.ru/su...ons/simpla.html

работает  с общей суммой заказа, и где использовать пересчитанные цены, не понятно.

Если у Вас что-то свое специфичное, то надо и объяснять в деталях...

 

использовать в "идеальном варианте" нужно только на яндекс кассе, не трогая симплу, но если так не получится то можно и на стороне симплы пересчитывать. т.е. чтоб при заказе было все как обычно, а при отправке в яндекс кассу скидка делилась (как указано выше) 

 

скидки 3

родная скидка группы

купоны 

скидка от суммы заказа.



#11 phukortsin

phukortsin
  • Фрилансер
  • 1 077 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 10.06.2020 - 10:57

использовать в "идеальном варианте" нужно только на яндекс кассе, не трогая симплу, но если так не получится то можно и на стороне симплы пересчитывать. т.е. чтоб при заказе было все как обычно, а при отправке в яндекс кассу скидка делилась (как указано выше) 

 

скидки 3

родная скидка группы

купоны 

скидка от суммы заказа.


Ничего не понятно.

Стандартно при работе с Яндекс Кассой  НЕ отправляются отдельные товары и цены отдельных товаров. Если Вам надо отправлять, то писать надо точно и конкретно - что, где, когда...



#12 Kami

Kami
  • Пользователь
  • 419 сообщений
  • Откуда:Россия

Опубликовано 10.06.2020 - 11:19


Ничего не понятно.

Стандартно при работе с Яндекс Кассой  НЕ отправляются отдельные товары и цены отдельных товаров. Если Вам надо отправлять, то писать надо точно и конкретно - что, где, когда...

 

Как это не отправляется? Отправляется в чеке 

 

https://kassa.yandex...ers/api#receipt

 

Соответственно из за этого и происходит ошибка.

 

[2020-06-10 11:15:20] [info] Message: Send request: POST /payments with body: {"amount":{"value":"5399.00","currency":"RUB"},
"description":"\u041e\u043f\u043b\u0430\u0442\u0430 \u0437\u0430\u043a\u0430\u0437\u0430 \u21164756",
"receipt":{"items":[{"description":"\u0411\u043b\u043e\u043a \u043f\u0438\u0442\u0430\u043d\u0438\u044f \"\u0427\u0410\u0421\u0422\u041e\u041a\u041e\u041b \u041d\"","amount":{"value":"5999.00","currency":"RUB"},"quantity":1,"vat_code":1}],
"email":"test@ma.ru"},"payment_method_data":{"type":"bank_card"},
"confirmation":{"type":"redirect","return_url":"https:\/\/site.ru\/payment\/YandexMoneyApi\/callback.php?order=4756&action=return"},
"metadata":{"cms_name":"ya_api_simpla","module_version":"1.0.6","order_id":"4756"},"capture":true} with headers: {"Idempotence-Key":"NDc1NjAuyedtyfdfteyMTUxMzM1MDAgMTU5MTc3NjkyMA=="} 
[2020-06-10 11:15:20] [info] Message: Response with code 400 received with headers: {"0":"HTTP\/1.1 400","Keep-Alive":"timeout=10000, max=100","Signature":"v1 2672aa58 1 MGUCMQCCV4pp\/zomn0ocZmXuTdNqJ1nfwm9+UjW12b7Q\/1O24TzgSDhS+eiEqNCxHNqafIUCMD63MqhOfXghsG7f1PGvSraP00AC3lxyYsgPdldTTr1y\/tedfz0AqoLCn\/Em6tz9aw==","Content-Type":"application\/json;charset=UTF-8","Content-Length":"305","Date":"Wed, 10 Jun 2020 08:15:20 GMT"} and body: {
  "type" : "error",
  "id" : "77e056582c7-33a5-49ac-bbcf-6f39194335697a",
  "code" : "invalid_request",
  "description" : "Invalid parameter's value (for example, the value is illegal or its format is incorrect). Send the value in accordance with the documentation.",
  "parameter" : "receipt.items.amount"
} 
[2020-06-10 11:15:20] [error] Message: Invalid parameter's value (for example, the value is illegal or its format is incorrect). Send the value in accordance with the documentation..Error code: invalid_request.Parameter name: receipt.items.amount. 



#13 Kami

Kami
  • Пользователь
  • 419 сообщений
  • Откуда:Россия

Опубликовано 10.06.2020 - 11:32


Ничего не понятно.

Стандартно при работе с Яндекс Кассой  НЕ отправляются отдельные товары и цены отдельных товаров. Если Вам надо отправлять, то писать надо точно и конкретно - что, где, когда...

 

наверное с несколькими товарами будет понятней

 

[2020-06-10 11:15:20] [error] Message: Invalid parameter's value (for example, the value is illegal or its format is incorrect). Send the value in accordance with the documentation..Error code: invalid_request.Parameter name: receipt.items.amount. 
[2020-06-10 11:25:25] [info] Message: Send request: POST /payments with body: {

"amount":{"value":"1935.00","currency":"RUB"},"description":"\u041e\u043f\u043b\u0430\u0442\u0430 \u0437\u0430\u043a\u0430\u0437\u0430 \u21164757",
"receipt":{"items":[{"description":" \u041a\u0430\u0440\u0442\u0440\u0438\u0434\u0436\u0438 GREEN RS  15 ",
"amount":{"value":"1200.00","currency":"RUB"},"quantity":1,"vat_code":1},{"description":" \u041a\u0430\u0440\u0442\u0440\u0438\u0434\u0436\u0438 YELLOW 14 ",
"amount":{"value":"950.00","currency":"RUB"},"quantity":1,"vat_code":1}],"email":"test@ma.ru"},
"payment_method_data":{"type":"bank_card"},"confirmation":{"type":"redirect","return_url":"https:\/\/site.ru\/payment\/YandexMoneyApi\/callback.php?order=4757&action=return"},
"metadata":{"cms_name":"ya_api_simpla","module_version":"1.0.6","order_id":"4757"},"capture":true} with headers: {"Idempotence-Key":"NDc1NzfaertwrtAuMTI2MjEwMDAgMTU5MTc3NzUyNQ=="} 
[2020-06-10 11:25:25] [info] Message: Response with code 400 received with headers: {"0":"HTTP\/1.1 400","Keep-Alive":"timeout=10000, max=100",
"Signature":"v1 2672acb5 1 MGQCMH2DMYnYKW0VrFO2xCoUesOMh8bL\/m8HfyhS5Ocy7\/pFD2cifW2W5pmuxLRl6trwtz7bKQIwW\/AFTMRlqaqdzzKmjUjmgo7IbBtrwtL8j8wo6XOPbcPSJmJepr8Mi8ylMbkPtaXrR\/JD","Content-Type":"application\/json;charset=UTF-8","Content-Length":"305","Date":"Wed, 10 Jun 2020 08:25:24 GMT"} and body: {
  "type" : "error",
  "id" : "6c12222dae7e-6d6a-4acb-bbc0-a8f25d7e178d",
  "code" : "invalid_request",
  "description" : "Invalid parameter's value (for example, the value is illegal or its format is incorrect). Send the value in accordance with the documentation.",
  "parameter" : "receipt.items.amount"
} 
[2020-06-10 11:25:25] [error] Message: Invalid parameter's value (for example, the value is illegal or its format is incorrect). Send the value in accordance with the documentation..Error code: invalid_request.Parameter name: receipt.items.amount. 



#14 phukortsin

phukortsin
  • Фрилансер
  • 1 077 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 10.06.2020 - 12:42

Понятно только то, что у Вас свое специфичное что-то сделано.

Если надо в отправку форму подставлять цены товаров пересчитанные, то можно сделать. Обращайтесь в личку...



#15 Drake777

Drake777
  • Пользователь
  • 17 сообщений

Опубликовано 10.06.2020 - 13:47

там ничего специфичного нет, обычный чек для соответствия 54ФЗ

 

если у товаров ценник не сильно отличается, а скидка 5-10% максимум, то решение из моего сообщения вполне работает. И никаких отрицательных цен не получим.

 

если же один товар стоит условно 1р, а другой 1000р, то действительно придется "веса" цен на товары городить, как предложил alexivchenko

 

единственный косяк может быть если цены нормально не делятся, скидка получится не целое число рублей, а например 10р 45,67коп

 

еще вариант чуть проще, но не всем подойдет, тк возможны махинации со стороны покупателя. Делаем всю скидку на 1 товар, если его стоимость выше, чему величина скидки. 

 

Все вышеперечисленное вполне реально сделать внутри платежного модуля, НЕ трогая Симплу

По времени зависит от используемых типов скидок, особенно если они нестандартные.

Но думаю не больше 3 часов.

 

Если кому-то нужно - пишите



#16 Kami

Kami
  • Пользователь
  • 419 сообщений
  • Откуда:Россия

Опубликовано 10.06.2020 - 14:34

Понятно только то, что у Вас свое специфичное что-то сделано.

Если надо в отправку форму подставлять цены товаров пересчитанные, то можно сделать. Обращайтесь в личку...

 

ничего специфического, просто применяю купон с 10% скидкой.



#17 Drake777

Drake777
  • Пользователь
  • 17 сообщений

Опубликовано 10.06.2020 - 21:42

Сделал, кому-то ещё нужно решение?

#18 artbe

artbe
  • Пользователь
  • 197 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 12.06.2020 - 03:48

Сделал, кому-то ещё нужно решение?

 

Нужно



#19 Drake777

Drake777
  • Пользователь
  • 17 сообщений

Опубликовано 12.06.2020 - 13:02

Нужно

Пишите в личку, обсудим






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых