Спрос
Раздел:

05.12.2014

Специалист на Python и PHP

Автор: Маша

Раздел: Разработка сайтов/Веб-программирование

Метки:: Программирование Веб-программирование

 Коллеги,

Есть примеры кода на PHP, выполняющие определенные функции. Необходимо создать аналоги на Python каждого из этих примеров. Сами примеры из payqr.ru/api/, полный справочник API на payqr.ru/api/ecommerce.

Всего 5 примеров по 3 группам. Ниже они на PHP. Озвучивайте пож-ста стоимость и сроки. Оплата в любой удобной вам форме, возможны сделка без риска или договор ГПХ.


1. Обработка header уведомлений PayQR и генерация корректных header своих ответов на эти уведомления

1.1. Один из вариантов проверки в header определенного значения SecretKeyIn (PHP):
<?php
$secretKeyIn = "XXX"; // Ключ системы PayQR для этого магазина, указанный в личном кабинете
if (getallheaders()["PQRSecretKey"] == $secretKeyIn) // Проверить, что запрос от сервера PayQR
{
}
?>

1.2. Один из вариантов заполнения header в ответах определенным значением SecretKeyOut (PHP):
<?php
$secretKeyOut = "YYY"; // Ключ магазина, указанный в личном кабинете
header("PQRSecretKey:" . $secretKeyOut); // Подтвердить, что ответ от магазина
?>

2. Определение типа события уведомлений PayQR

2.1. Один из вариантов выделения события PayQR по значению type (PHP):
<?php
$event = json_decode($HTTP_RAW_POST_DATA); // Получиаем уведомление о событии из тела пришедшего POST запроса
if (isset($event->type) && $event->type == "invoice.order.creating") // Проверяем событие на создание заказа
{
}
?>

Структура объекта события в уведомлении PayQR:
{
"id": "evt_14EccV2eZvKYlo2C2j1B18pF", // Уникальный ID события
"object": "event", // Имя объекта, событие
"created": "2015-08-09T18:31:42.201+04:00", // Дата генерации события
"type": "invoice.order.creating", // Тип события
"data": {
... // Объект, по которому произошло событие
}
}
?>

3. Интерпретация уведомлений PayQR и ответы на эти уведомления

3.1. Один из вариантов десериализации объекта Invoice «Счет на оплату» для принятия уведомлений (PHP):
<?php
$event = json_decode($HTTP_RAW_POST_DATA); // Получиаем уведомление о событии из тела пришедшего POST запроса
if (isset($event->data) && isset($event->data->object) && $event->data->object == "invoice")
{
$invoice = $event->data; // Объект счета на оплату Invoice
}
?>

3.2. Один из вариантов сериализации ответов на уведомления для объекта Invoice «Счет на оплату» (PHP):
<?php
$event = json_decode($HTTP_RAW_POST_DATA); // Получиаем уведомление о событии из тела пришедшего POST запроса
vardamp(json_encode(array(
"id" => $event->id,
"data" => array(
"orderId" => "00000000"
))));
?>

Структура объекта Invoice «Счет на оплату»:
{
"id": "inv_14EeCA2eZvKYlo2C8nDrcXdp", // ИД счета на оплату
"object": "invoice", // Тип объекта, счет на оплату
"livemode": false, // Режим тестирования с автовозвратом платежей или нет
"created": "2015-08-09T18:31:42.201+04:00",
"modified": "2015-08-09T18:33:42.201+04:00",
"payqrNumber": "3213326680056410",
"payqrUserId": "000000000000",
"orderGroup": "3241.8954",
"amount": 19648.44,
"cart": [{ // Корзина покупок
"article": "5675657",
"name": "Товар 1",
"imageUrl": "goods.ru/item1.jpg",
"quantity": 5,
"amount": 19752.25
"}, {
"article": "0",
"name": "PROMO акция",
"imageUrl": "goods.ru/promo.jpg"
}],
"customer": {
"firstName": "Иван",
"lastName": "Иванов",
"phone": "+79111111111",
"email": "test@user.com"
},
"delivery": {
"country": "Россия",
"region": "Москва",
"city": "Москва",
"zip": "115093",
"street": "Дубининская ул.",
"house": "80",
"comment": "У входа в автосалон Хонда"
},
"validityInMinutes": 129600,
"confirmWaitingInMinutes": 4320,
"promo": "TRADE",
"fee": {
"payqrCustomerCommissionPercent": 0.5,
"payqrCustomerCommissionAmount": 100.77
},
"status": "new"
}

Просмотров 154   Рейтинг 154