Суть самой проблемы в том, что не удается отправить деньги группе через кнопку типа vkpay. Если просто через вложения отправлю, то всё получится.
Через кнопку на компьютере открывается окно оплаты, запрашивается пин-код и далее выводится сообщение "Невозможно совершить операцию. Попробуйте позже." При нажатии на кнопку с моб устройств происходит бесконечная загрузка.
В запросе массив с кнопками выглядит так:
array('keyboard' => json_encode(array(
'one_time' => true,
'buttons' => [array (
[
'action' => array(
'type' => 'vkpay',
'hash' => "action=pay-to-group&amount{$summ}&description=Тема&group_id=2097****9&aid=2097****9",
),
]
),
array(
[
'action' => array(
'type' => 'callback',
'label' => ' Позвать оператора',
'payload' => "{\"button\": \"confirm\"}",
),
'color' => 'secondary',
]
),
array(
[
'action' => array(
'type' => 'callback',
'label' => ' Списать '.$bonus.' бонусов',
'payload' => "{\"button\": \"bonus\", \"ord\": \"".$id."\"}",
),
'color' => 'positive',
]
),
],
), JSON_UNESCAPED_UNICODE))
Что удалось выяснить:
- Если я вставлю hash непосредственно в браузер в форме
https://vk.com/vkpay#{hash}
, то он выведет меня на форму оплаты, которая будет работать
- В форме оплаты, которая открывается по нажатию кнопки, комментарий выглядит так: ?4??4??4??6?. Возможно в кодировке как раз причина того, почему не работает форма. Но как исправить это, не знаю... При других запросах не было таких проблем.
- Так выглядит запрос при открытом через кнопку окне оплаты:
https://vk.com/im?sel=-2097****9&w=app6217559_-0%2523action%253Dpay-to-group%2526amount%253D12%2526description%253D%25253F4%25253F%25253F4%25253F%25253F4%25253F%25253F6%25253F%2526group_id%253D2097****9%2526aid%253D2097****9
Отправляю через PHP SDK ВКонтакте.
Ссылки на документацию API:
Клавиатура
Параметры hash
Прошу помощи. Не могу понять, на каком этапе что-то идёт не так... Вероятно проблема не на стороне VKPay, но и в самом массиве с кнопками всё в порядке, раз открывается при непосредственной вставке через браузер.