Подключение QIWI P2P оплаты к Вашему проекту

Azazello

Администратор
Администратор

Azazello

Администратор
Статус
Offline
Регистрация
21.11.2015
Сообщения
604
Репутация
664
Трофеи
19
Депозит
0
Недавно столкнулся с необходимостью подключить оплату qiwi p2p, но к своему удивлению не нашел готового решения(Может конечно плохо искал, но не суть).
Если вдруг Вам лень читать официальную документацию, то вот Вам мое решение, которое позволит Вам подключить qiwi p2p к вашему сайту или боту.

https://docs.ispsystem.ru/billmanager/finansy/podklyuchenie-modulej-oplaty/qiwi-p2p - читаем раздел "Настройка на стороне платёжной системы"
В пункте 5 указывает https://вашсайт.ru/qiwi.php (файл мы создадим немного позже).
В пункте 8 записывает публичный и приватный ключ.

Создаем файл config.php с таким содержанием:
PHP:
<?php
/* Тут не обязательно использовать массив, можно обойтись переменными, но в моем случае так было удобней */
function QIWI($a) {
    return [
        'public_key' => 'ВашПубличныйКлюч',
        'secret_key' => 'ВашПривытныйКлюч=',
        'successUrl' => 'https://вашсайт.ru/', // сюда будет перенаправлен клиент в случае успешной оплаты
    ][$a];
}
?>

Создаем файл qiwi.php, он будет обрабатывать уведомления от qiwi.
PHP:
<?php
 
include 'config.php'; // подключаем ранее созданный файл

$secret_key = QIWI('secret_key'); // Секретный ключ, берется из конфига

$sha256_hash_header = $_SERVER['HTTP_X_API_SIGNATURE_SHA256']; // Получаем заголовок

$entity_body = file_get_contents('php://input');  // Декодирую тело входящего запроса
$array_body = json_decode($entity_body, 1);           //  Декодирует строку JSON

$amount_currency = $array_body['bill']['amount']['currency'];
$amount_value = $array_body['bill']['amount']['value'];
$billId = $array_body['bill']['billId'];
$siteId = $array_body['bill']['siteId'];
$status_value = $array_body['bill']['status']['value'];
/* тут могут быть дополнительные параметры по типу почты, телефона и тд, ознакомьтесь с документацией если они Вам нужны */

$invoice_parameters = $amount_currency . '|' . $amount_value . '|' . $billId . '|' . $siteId . '|' . $status_value;
 
$sha256_hash = hash_hmac('sha256', $invoice_parameters, $secret_key);

if ($sha256_hash_header == $sha256_hash && !empty($sha256_hash_header) && $status_value == 'PAID') {
    /* Проверяем подлинность уведомления и статус платежа "Оплачено". В случае успеха выполняем код, который Вы тут напишите :) */
} else {
    http_response_code(404);
    die();
}
?>

Как Выставлять счет? В нужной части Вашего проекты добавляем:

PHP:
<?
include 'config.php';

...

/* amount=100 - сумма платежа 100р.
account='1' - id вашего пользователя, например. Это нужно, что бы после оплаты выдать пользователю то что нужно. Все настраивается в обработчики уведомлений конкретно под Ваш проект.
Так же при выставлении счета возможно указать почту, описание и тд
Если Вам все это нужно - ознакомьтесь с документацией qiwi. */

<a href="https://oplata.qiwi.com/create?publicKey='.QIWI('public_key').'&amount=100&successUrl='.QIWI('successUrl').'&account=1">Оплатить</a>

?>

1622027027971.png

Может, кому-то будет полезным :)
 

▪︎TE4CHER▪︎

Заблокированные
Заблокированные

▪︎TE4CHER▪︎

Заблокированные
Статус
Offline
Регистрация
24.05.2021
Сообщения
77
Репутация
78
Трофеи
3
Обратите внимание, если Вы хотите провести сделку с данным пользователем, на то, что он заблокирован.
Не мой уровень, дорогой.
Но сохранил, спасибо.
 

ShKD

Новичок
Новичок

ShKD

Новичок
Статус
Offline
Регистрация
15.07.2021
Сообщения
1
Репутация
0
Трофеи
0
К h script - у прокатит?
 

amnaka

Новичок
Новичок

amnaka

Новичок
Статус
Offline
Регистрация
14.02.2021
Сообщения
10
Репутация
0
Трофеи
0
Большое спасибо,давно искал, попробую в действии скоро)