Минишоп2 способ оплаты "в кредит" с переходом на сайт банка
Всем доброго времени суток.
а может кто-то подсказать, как сделать для Минишоп2 способ оплаты, при котором после нажатия на кнопку «подтвердить заказ» покупателя бы переадресовывало на такого плана страницу loans.tinkoff.ru/applications/online/08be1ce1-c6d8-4d8e-b482-83947f7b1078
?
а может кто-то подсказать, как сделать для Минишоп2 способ оплаты, при котором после нажатия на кнопку «подтвердить заказ» покупателя бы переадресовывало на такого плана страницу loans.tinkoff.ru/applications/online/08be1ce1-c6d8-4d8e-b482-83947f7b1078
?
Комментарии: 19
для карточки товара есть такая форма от банка:
<form style="margin-top:0px;margin-bottom:10px;text-align:center;" action="https://loans.tinkoff.ru/api/partners/v1/lightweight/create"
method="post">
<input name="shopId" value="cornu" type="hidden"/>
<input name="sum" value="[[+price:stripString=` `:mpy=`1.07`]]" type="hidden" id="price_credit">
<input name="itemName_0" value="[[*pagetitle]]" type="hidden"/>
<input name="itemQuantity_0" value="1" type="hidden"/>
<input name="itemPrice_0" value="[[+price:stripString=` `:mpy=`1.07`]]" type="hidden" id="price_credit_2"/>
<input class="button-credit" type="submit" value="В кредит от [[+price:stripString=` `:mpy=`1.07`:div=`19`:round=`0`]] руб. в месяц" id="price_credit_month"/>
</form>
а как сделать обработчик способа оплаты, который бы отправлял посетителя туда же, куда эта форма при нажатии кнопки «подтвердить заказ»?
т.к. мне периодически задают вопрос решил ли я эту задачу, напишу ответ здесь:
видимо тот вопрос я задал по незнанию ситуации.
заказчику и не нужен был такой способ оплаты.
эта форма сугубо для карточки товара и просто помогает оформить кредит, без привязки к оформлению заказа в Интернет-магазине.
вот здесь cornu.ru/phantom-4-rtk/ сделал кнопку «в кредит» и это то, что надо было заказчику.
видимо тот вопрос я задал по незнанию ситуации.
заказчику и не нужен был такой способ оплаты.
эта форма сугубо для карточки товара и просто помогает оформить кредит, без привязки к оформлению заказа в Интернет-магазине.
вот здесь cornu.ru/phantom-4-rtk/ сделал кнопку «в кредит» и это то, что надо было заказчику.
в итоге эта истрория получила продолжение спустя время)
кнопку в карточке товара (по их иструкции forma.tinkoff.ru/docs/credit/examples/#example-8) удалось добавить без проблем.
вот например здесь cornu.ru/kvadrokopter-mavic-3/
а вот в корзине, точнее на странице оформления заказа не выходит пока.
там надо собрать содержимое корзины в таком виде:
а как без фенома получить там содержание корзины пока ума не приложу.
вдруг кто поможет)
кнопку в карточке товара (по их иструкции forma.tinkoff.ru/docs/credit/examples/#example-8) удалось добавить без проблем.
вот например здесь cornu.ru/kvadrokopter-mavic-3/
а вот в корзине, точнее на странице оформления заказа не выходит пока.
там надо собрать содержимое корзины в таком виде:
items: [{name: 'iphone 11', price: 100000, quantity: 1}, {name: 'Чехол', price: 500, quantity: 1}],
но это ломает феном и приходится всю функцию tinkoff.create(
{
sum: 10000,
items: [{name: 'Apple TV', price: 10000, quantity: 1}],
promoCode: 'default',
shopId: 'SHOP_ID',
showcaseId: 'SHOWCASE_ID',
},
{view: 'newTab'}
)
одевать в тэги {ignore}а как без фенома получить там содержание корзины пока ума не приложу.
вдруг кто поможет)
вообще вот в таком коде
что можно сделать, чтобы цена и количество тоже выводились в массиве?
может не через феном можно как-то?
<script>
function credit() {
tinkoff.create(
{
sum: {$total.cost},
items: [
{foreach $products as $product} { name: '{$product.pagetitle}', price: {$product.price}, quantity: {$product.count} }, {/foreach}
]
,
promoCode: 'default',
shopId: 'cornu',
showcaseId: 'cornu',
},
{ignore} {view: 'newTab'} {/ignore}
)
}
</script>
не работают только цена и количество, название отрабатывает (видимо потому что текст и в кавычках).что можно сделать, чтобы цена и количество тоже выводились в массиве?
может не через феном можно как-то?
ну т.е. вопрос сводится к тому, как переменную (js или php) в json передать видимо)
Кто вас учил смешивать js и html? Что вам мешает вынести js в отдельный файл, делать ajax-запросы на сервер за нужными данными? Что мешает использовать массивы callbacks доступные в minishop2?
ну да, то что Вы предлагаете — это точно проще, ага)
при чем тут html?
я сам в основном учился и уже почти полтора десятка лет довольно успешно этим занимаюсь.
я спросил только как там вывести цену и количество, т.к. феном там не отрабатывает.
при чем тут html?
я сам в основном учился и уже почти полтора десятка лет довольно успешно этим занимаюсь.
я спросил только как там вывести цену и количество, т.к. феном там не отрабатывает.
Я не говорил, что мой вариант проще, я говорил, что Ваш вариант неправильный и костыльный, да к тому же не работает. А если сделать правильно, то всё будет работать. Но раз у вас полтора десятка лет за плечами, я не буду лезть к Вам со своими советами.
Создать свой класс обработки, и отправлять после на кредитную страницу.
В админке прописать новый класс обработки.
core/components/minishop2/custom/payment/tinkoffCredit.class.php
В админке прописать новый класс обработки.
core/components/minishop2/custom/payment/tinkoffCredit.class.php
Роман, спасибо, но нужели только так сложно?
ведь все переменные есть на странице где я запускаю этот скрипт.
а вот как их в json засунуть не знаю.
т.е. name даже просто феномом отрабатывает (это текстовая строка), а вот цифры (totalcost, price, count) никак не понимаю как можно сделать.
ведь все переменные есть на странице где я запускаю этот скрипт.
<script>
var totalcost = "{$total.cost}";
var price = "{$product.price}";
var count = "{$product.count}";
function credit() {
tinkoff.create(
{
sum: totalcost,
items: [
{foreach $products as $product} { name: '{$product.pagetitle}', price: price, quantity: count }, {/foreach}
]
,
promoCode: 'default',
shopId: 'cornu',
showcaseId: 'cornu',
},
{ignore} {view: 'newTab'} {/ignore}
)
}
</script>
вот в таком коде все нужные переменные есть и их можно в алерт например вывести.а вот как их в json засунуть не знаю.
т.е. name даже просто феномом отрабатывает (это текстовая строка), а вот цифры (totalcost, price, count) никак не понимаю как можно сделать.
А где у вас этот скрипт выполняется, на какой странице?
Тут не нужны никакие var, попробуйте:
Тут не нужны никакие var, попробуйте:
{$total_cost}
sum: {$total_cost},
У вас же товары в массиве, а вы выше вызываете {$product.price} понятно ничего работать не будет.{foreach $products as $product} { name: '{$product.pagetitle}', price: {$product.price}, quantity: {$product.count} }, {/foreach}
это выполняется в корзине. (чанк cartOuter)
вот не отрабатывает просто феном, поэтому и не могу понять)
т.е. имя товара — без проблем.
а числа — никак почему-то(
т.е.
вот не отрабатывает просто феном, поэтому и не могу понять)
т.е. имя товара — без проблем.
а числа — никак почему-то(
т.е.
function credit() {
tinkoff.create(
{
sum: {$total.cost},
items: [
{foreach $products as $product} { name: '{$product.pagetitle}', price: {$product.price}, quantity: {$product.count} }, {/foreach}
]
,
promoCode: 'default',
shopId: 'cornu',
showcaseId: 'cornu',
},
{ignore} {view: 'newTab'} {/ignore}
)
}
вот этот код выдает ошибку credit is not defined
Выведите, все что есть в products и будет понятно.
{$products | print_r}
{$products | print_r}
оно там есть, говорю же, это корзина, в алерт эти переменные выводятся без проблем например.
а вот в запросе этом выдают ошибку или уведомление от АПИ банка,
что sum и price должны быть числами.
при этом в карточке товара пот такой код
вот здесь например (кнопка «в кредит» справа)
cornu.ru/kvadrokopter-hubsan-h117s-zino-combo/
а вот в запросе этом выдают ошибку или уведомление от АПИ банка,
что sum и price должны быть числами.
при этом в карточке товара пот такой код
tinkoff.create(
{
items: [{name: '[[*pagetitle]]', price: [[+price:stripString=` `:mpy=`1.07`]], quantity: 1}],
promoCode: 'default',
sum: [[+price:stripString=` `:mpy=`1.07`]],
shopId: 'cornu',
showcaseId: 'cornu',
},
{view: 'modal'}
)
отрабатывает штатно.вот здесь например (кнопка «в кредит» справа)
cornu.ru/kvadrokopter-hubsan-h117s-zino-combo/
{$total.cost | replace: " " : ""}
{$product.price | replace: " " : ""}
огромное спасибо!
Я иногда удивляюсь тому, как люди методом тыка пытаются решать проблемы… Есть Документация Тинкофф
Ознакомившись (даже бегло) становится понятным, что любая оплата будет происходить в 2 запроса… Первый — инициализация платежа в банке, которая возвращает ссылку на форму банка. По опыту взаимодействия могу сказать, что время жизни ссылки регулируется как раз в этом методе. Так же для инициализации платежа нужна уникальная строка для обозначения заказа в вашей базе… Тут уже ясно, что заказ на вашем сайте должен быть уже сформирован и вы должны знать его идентификатор (ID).
Как бы там не было, но стоит так же получать ответ от Банка… Успех или нет… Для этого в лк банка указывается ссылка для нотификаций. По опыту — эту ссылку тоже можно перепределять в методе init (инициализация платежа).
И теперь уже совсем очевидно, что общение с банком в ModX корректнее всего реализовывать на бекенде… Соответственно придерживаясь логики miniShop2…
Так что создавайте класс платежа и не нужно будет костылить на фронтенде. Сложного там нет ничего, если немного почитать документацию и вникнуть…
Ознакомившись (даже бегло) становится понятным, что любая оплата будет происходить в 2 запроса… Первый — инициализация платежа в банке, которая возвращает ссылку на форму банка. По опыту взаимодействия могу сказать, что время жизни ссылки регулируется как раз в этом методе. Так же для инициализации платежа нужна уникальная строка для обозначения заказа в вашей базе… Тут уже ясно, что заказ на вашем сайте должен быть уже сформирован и вы должны знать его идентификатор (ID).
Как бы там не было, но стоит так же получать ответ от Банка… Успех или нет… Для этого в лк банка указывается ссылка для нотификаций. По опыту — эту ссылку тоже можно перепределять в методе init (инициализация платежа).
И теперь уже совсем очевидно, что общение с банком в ModX корректнее всего реализовывать на бекенде… Соответственно придерживаясь логики miniShop2…
Так что создавайте класс платежа и не нужно будет костылить на фронтенде. Сложного там нет ничего, если немного почитать документацию и вникнуть…
блин, ребят, вы чего, что с вами?)
какие тыки? у меня больше десяти лет опыта, честно.
какой бэкенд, какие методы ит.п.?!
всё реализовано банком, вот здесь описано с примерами loans.tinkoff.ru/applications/online/08be1ce1-c6d8-4d8e-b482-83947f7b1078
если в мой вышепоказанный код вставить вместо переменных числа (и произведение price и quantity будет равняться sum), то всё отрабатывает штатно.
а вот переменные там (в том json запросе) не отрабатывают (ни jjavascript ни fenom).
вот только в этом загвоздка и этот вопрос только и пытаюсь решить.
какие тыки? у меня больше десяти лет опыта, честно.
какой бэкенд, какие методы ит.п.?!
всё реализовано банком, вот здесь описано с примерами loans.tinkoff.ru/applications/online/08be1ce1-c6d8-4d8e-b482-83947f7b1078
если в мой вышепоказанный код вставить вместо переменных числа (и произведение price и quantity будет равняться sum), то всё отрабатывает штатно.
а вот переменные там (в том json запросе) не отрабатывают (ни jjavascript ни fenom).
вот только в этом загвоздка и этот вопрос только и пытаюсь решить.
Ну 10 лет сразу видно… То обращаетесь к переменным, которых еще не существует, то утверждаете, что феном не отрабатывает и в виде аргумента указываете ошибку JS в которой сказано, что функция credit не определена… И про логи молчите…
Покажите результат (сгенерированный код) последнего последнего варианта и лог ошибок после генерации кода. Предварительно очистив лог ошибок.
А лучше так:
1) Код
2) Результат
3) Лог
Покажите результат (сгенерированный код) последнего последнего варианта и лог ошибок после генерации кода. Предварительно очистив лог ошибок.
А лучше так:
1) Код
2) Результат
3) Лог
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.