- 344
- 94
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привтем всем!
Видел эти две темы про автооплату на форуме: Node.JS - Python и решил их переписать на PHP.
Ждал такой же гайд от @Pakulichev, но кажется он не хотел.
Что нам понадобится:
1) SimpleVK
2) bill-payments-php-sdk
3) Прямые руки.
Видео работы скрипта:
Видел эти две темы про автооплату на форуме: Node.JS - Python и решил их переписать на PHP.
Ждал такой же гайд от @Pakulichev, но кажется он не хотел.
Что нам понадобится:
1) SimpleVK
2) bill-payments-php-sdk
3) Прямые руки.
Видео работы скрипта:
Настройка всех нужных вещей:
Начнем с настройки группы, создаем или используем уже существующую группу.
1) Нажимаем на управление:
2) Переходим в раздел "Работа с API":
3) Cоздаем токен и подверждаем необходимое:
4) Переходим в раздел "Callback API", выбираем версию API - 5.126, в строку адрес пишем свой сайт с ботом, и так же сохраняем секретный ключ:
5) Переходим в раздел "Типы событий", делаем как на скрине:
6) Последний пункт, выбираем "Long Poll API", включаем его, выбираем версию API - 5.126, переходим в событий и делаем так же:
7) Включаем сообщение бота и функций ботов в настройках, и так же кнопку начать.
Готово!
1) Нажимаем на управление:
2) Переходим в раздел "Работа с API":
3) Cоздаем токен и подверждаем необходимое:
4) Переходим в раздел "Callback API", выбираем версию API - 5.126, в строку адрес пишем свой сайт с ботом, и так же сохраняем секретный ключ:
5) Переходим в раздел "Типы событий", делаем как на скрине:
6) Последний пункт, выбираем "Long Poll API", включаем его, выбираем версию API - 5.126, переходим в событий и делаем так же:
7) Включаем сообщение бота и функций ботов в настройках, и так же кнопку начать.
Готово!
1) Переходим на сайт qiwi p2p и входим в свой аккаунт.
2) Переходим в раздел "API" и создаём ключ:
3) Обьязатель поставим галочку на URL и пишем туда свой сайт с php скриптом qiwi:
4) Копируем секретный ключ.
5) Переходим в раздел "Форма приема переводов" и копируем "themeCode", если его нету то нажимаем на "настройть":
qiwi тоже готов!
2) Переходим в раздел "API" и создаём ключ:
3) Обьязатель поставим галочку на URL и пишем туда свой сайт с php скриптом qiwi:
4) Копируем секретный ключ.
5) Переходим в раздел "Форма приема переводов" и копируем "themeCode", если его нету то нажимаем на "настройть":
qiwi тоже готов!
Переходим теперь к коду.
Загружаем все нужные либы и классы для работы:
Загружаем все нужные либы и классы для работы:
PHP:
require_once('simplevk-master/autoload.php'); // Для работы с ВК ботом
require("vendor/autoload.php"); // Для qiwi
use DigitalStar\vk_api\VK_api as vk_api; // Основной класс для работы с ботом
Начнем с бота вк:
PHP:
const VK_KEY = "e5cfac8b5ed93c5550000000000000000000000000000000000000000009e0fbd4d0341090ee9f"; // Токен сообщества
const ACCESS_KEY = "31ce192d"; // Тот самый ключ из сообщества
const VERSION = "5.126"; // Версия API VK
$vk = vk_api::create(VK_KEY, VERSION)->setConfirm(ACCESS_KEY); // Авторизация
$btn_1 = $vk->buttonText('Купить', 'green', ['command' => 'btn_1']); // Кнопки для бота
$btn_2 = $vk->buttonText('Информация', 'blue', ['command' => 'btn_2']);
$vk->initVars($peer_id, $message, $payload, $vk_id, $type, $data); // Инициализация переменных. Проще говоря библиотека сама создает нужные переменные
if ($data->type == 'message_new') {
if ($message == 'Начать') { // При нажатие кнопки начать появляются все кнопки, у насс их две
$vk->sendButton($peer_id, "Меню:", [[$btn_1, $btn_2]]);
}
if ($message == 'Информация') {
$vk->sendMessage($peer_id, "Вы нажали на вторую кнопку."); // Вторая кнопка, если будете менять название кнопок в 8 строке, поменяйте тоже на 18 строке
}
if (isset($data->object->payload)) { //получаем payload
$payload = json_decode($data->object->payload, True);
} else {
$payload = null;
}
$payload = $payload['command'];
// Теперь пишем действия с кнопками
if ($payload == 'btn_1') // Первая кнопка, тут не надо ничего менять
$vk->sendMessage($peer_id, "Вы нажали на первую кнопку.");
if ($message == 'Отключить') // Отключение кнопок, на всякий
$vk->sendButton($peer_id, "Кнопки скрыты, снова вызвать их, отправьте Начать, Ваш ID $vk_id", [[]]);
}
Проверяем
Как видим все работает!
Теперь работаем с qiwi.
Чтобы создать счет для оплаты:
Как видим все работает!
Теперь работаем с qiwi.
Чтобы создать счет для оплаты:
PHP:
const SECRET_KEY = ''; // Вставляем сюда секретный ключ который взяли с сайта p2p qiwi
$billPayments = new Qiwi\Api\BillPayments(SECRET_KEY); // Авторизация
$billId = $billPayments->generateId(); // Генерируем billId для работы сервисов qiwi
$lifetime = $billPayments->getLifetimeByDay(0.5); // Cколько будет жить счет для оплаты, по стандарту 24 часа
$customFields = ['themeCode' => 'СЮДА']; // Cюда вставляем тот самый код с раздела "Форма приема переводов"
$fields = [
'amount' => 1, // Сумма
'currency' => 'RUB', // Валюта
'comment' => $vk_id, // Комментарий, $vk_id так как с помощью этого будем делать автопроверку на оплату.
'expirationDateTime' => $lifetime, // Сколько будет жить
'customFields' => $customFields, // Стиль темы
];
$response = $billPayments->createBill($billId, $fields); // Cоздаем счет
$payUrl = $billPayments->getPayUrl($response, "https://vk.com/"); // Ссылка счета
Проверяем.
Всё работает, ссылка генериуется.
Объединяем весь код, и у нас получается готовый бот которые генериует ссылку для оплаты:
Всё работает, ссылка генериуется.
Объединяем весь код, и у нас получается готовый бот которые генериует ссылку для оплаты:
PHP:
<?php
require_once('simplevk-master/autoload.php');
require("vendor/autoload.php");
use DigitalStar\vk_api\VK_api as vk_api; // Основной класс
const VK_KEY = ""; // Токен сообщества
const ACCESS_KEY = ""; // Тот самый ключ из сообщества
const VERSION = "5.126"; // Версия API VK
const SECRET_KEY = ''; // Секретный ключ qiwi
$vk = vk_api::create(VK_KEY, VERSION)->setConfirm(ACCESS_KEY); // Авторизация ВК
$billPayments = new Qiwi\Api\BillPayments(SECRET_KEY); // Авторизация qiwi
$billId = $billPayments->generateId(); // Генерируем billId, для создание счета
$lifetime = $billPayments->getLifetimeByDay(0.5); // Сколько будет жить счет оплаты
$customFields = ['themeCode' => 'стиль сюда']; // Стиль счета
$btn_1 = $vk->buttonText('Купить', 'green', ['command' => 'btn_1']); // Кнопки
$btn_2 = $vk->buttonText('Информация', 'blue', ['command' => 'btn_2']);
$vk->initVars($peer_id, $message, $payload, $vk_id, $type, $data); // Инициализация переменных. Проще говоря библиотека сама создает нужные переменные
if ($data->type == 'message_new') {
if ($message == 'Начать') {
$vk->sendButton($peer_id, "Меню:", [[$btn_1, $btn_2]]);
}
if ($message == 'Информация') { // Вторая кнопка
$vk->sendMessage($peer_id, "Информация о товаре бла бла бла");
}
if (isset($data->object->payload)) { //получаем payload
$payload = json_decode($data->object->payload, True);
} else {
$payload = null;
}
$payload = $payload['command'];
// Теперь пишем действия с кнопками
if ($payload == 'btn_1') // Первая кнопка
$fields = [ // Нужные переменные для создание счета
'amount' => 1, // Сумма
'currency' => 'RUB', // Валюта
'comment' => $vk_id, // В коментарий записываем id ползвителя который покупает
'expirationDateTime' => $lifetime, // Сколько будет жить счет
'customFields' => $customFields, // Стиль
];
$response = $billPayments->createBill($billId, $fields); // Создаем счет
$payUrl = $billPayments->getPayUrl($response, "https://vk.com/"); // Генерируем ссылку оплаты
$vk->sendMessage($peer_id, "Для оплаты можете перейти по ссылке: $payUrl\n"); // Отправляем ссылку
if ($payload == 'btn_2')
if ($message == 'Отключить')
$vk->sendButton($peer_id, "Кнопки скрыты, снова вызвать их, отправьте Начать, Ваш ID $vk_id", [[]]);
}
Бот готов, проверяем:
Как видим все работает.
Мы сделали только часть бота вк и создание ссылки для оплтаты. Теперь проверка оплаты счета.
Для этого создаём отдельный php скрипт на хостинге:
Как видим все работает.
Мы сделали только часть бота вк и создание ссылки для оплтаты. Теперь проверка оплаты счета.
Для этого создаём отдельный php скрипт на хостинге:
PHP:
require("vendor/autoload.php"); // Подключаем либы
require_once('simplevk-master/autoload.php');
use DigitalStar\vk_api\VK_api as vk_api;
const VK_KEY = ""; // Токен ВК
const VERSION = "5.126";
const SECRET_KEY = ''; // Секретный ключ QIWI
$billPayments = new Qiwi\Api\BillPayments(SECRET_KEY); // Авторизация
$vk = vk_api::create(VK_KEY, VERSION);
$data = json_decode(file_get_contents('php://input'), true); // Принимаем запрос от qiwi как json
$status1 = $data['bill']['siteId']; // Пиздим с запроса все нужные параметры, а именно billId, siteId, status, comment, version
$status2 = $data['bill']['billId'];
$status3 = $data['bill']['status']['value'];
$status4 = $data['version'];
$coment = $data['bill']['comment'];
if (!function_exists('getallheaders')){ // Берём с запроса qiwi X-Api-Signature-SHA256(это ключ счета), это нужна для проверки
function getallheaders(){ // чтобы его получить подбираем все HEADERS и ищем нужный
$headers = [];
foreach ($_SERVER as $name => $value){
if (substr($name, 0, 5) == 'HTTP_'){ $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; }
}
return $headers;
}
}
$head = array_change_key_case(getallheaders(), CASE_LOWER);
$validSignatureFromNotificationServer = $head[mb_strtolower('x-api-signature-SHA256')]; // записываем наш ключ в переменную
$notificationData = [ // массив с данными для проверки
'bill' => [
'siteId' => $status1,
'billId' => $status2,
'amount' => ['value' => 1, 'currency' => 'RUB'], // где value' => 1 cтавим нужныую сумму, для меня это рубль
'status' => ['value' => 'PAID']
],
'version' => $status4
];
$secretKey = ''; // сюда секретный ключ qiwi
$check = $billPayments->checkNotificationSignature( // с помощью либы проверяем, и если все правильно оно возвращает истину
$validSignatureFromNotificationServer, $notificationData, $secretKey
);
if ($check == "1") { // а тут как раньше
$vk->sendMessage($coment, "Оплата прошла успешно.");
} else {
echo "-";
}
Ну как вы поняли, мы создаем ссылку и отправляем юзеру, юзер оплачивает счет. Qiwi отправляем увеодомление о оплате в виде json на наш хостинг, а мы оброботываем это и отправляем информацию о оплате юзеру. Все готово!
Теперь не большой гайд как все это устоновить на хостинг и запустить бота:
Теперь не большой гайд как все это устоновить на хостинг и запустить бота:
1) Выбираем хостинг, я выбрал для тестов бесплатный тариф sprinthost'a(НЕ РЕКЛАМА!)
2) Переходим в файловый менеджер и закидываем туда архив который прикреплен в посте.
3) Извлекаем архив прямо в хостинге
4) Нажимаем на bot.php и меням все ключи на свой, и так же это делаем на qiwi.php
5) В вк переходим раздел "Callback API", в поле адрес пишем путь до нашего php скрипта бота, внизу копируем ключ и вставляем в скрипте ACCESS_KEY
6) Нажимаем на подвердить, должно получится как у меня:
7) В киви переходим в раздел "API", и редактирем URL адрес указыаем путь до скрипта qiwi.php
Готово!
2) Переходим в файловый менеджер и закидываем туда архив который прикреплен в посте.
3) Извлекаем архив прямо в хостинге
4) Нажимаем на bot.php и меням все ключи на свой, и так же это делаем на qiwi.php
5) В вк переходим раздел "Callback API", в поле адрес пишем путь до нашего php скрипта бота, внизу копируем ключ и вставляем в скрипте ACCESS_KEY
6) Нажимаем на подвердить, должно получится как у меня:
7) В киви переходим в раздел "API", и редактирем URL адрес указыаем путь до скрипта qiwi.php
Готово!
Я нигде не нашел бота с автооплатой qiwi для вк, и так же другие работы с qiwi p2p php.
Вложения
Последнее редактирование: