Перейти к содержанию
Официальный форум поддержки Simpla

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


Рекомендуемые сообщения

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

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

Изменено пользователем Kami
Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

 

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

 

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

 

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

 

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

Но такое решение было логично сделать не только при оплате Яндекс.Кассой, а вообще из коробки при применении купона на сайте, чтобы менялись {$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}  )
Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

https://yandex.ru/support/checkout/instructions/simpla.html

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

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

Ссылка на сообщение
Поделиться на другие сайты

 

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

https://yandex.ru/support/checkout/instructions/simpla.html

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

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

 

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

 

скидки 3

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

купоны 

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

скидки 3

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

купоны 

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

 

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

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

Ссылка на сообщение
Поделиться на другие сайты

 

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

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

 

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

 

https://kassa.yandex.ru/developers/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. 

Ссылка на сообщение
Поделиться на другие сайты

 

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

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

 

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

 

[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. 

Ссылка на сообщение
Поделиться на другие сайты

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

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

 

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

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

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...