🔥Создание заказа запросом (Рекомендуем)

Почему рекомендуем создавать заказ именно отправляя запрос на сервер? В связи с зачастившими блокировками домена мы выделяем новый домен под форму оплаты. Чтобы не менять его каждый раз в продакшене, мы решили сделать данный метод который будет возвращать Вам всегда актуальный URL для оплаты!

Данные для запроса такие-же как и в переходе на форму. Все сделали для удобства перехода и меньшей мороки в коде.

Запрос

POST https://aaio.so/merchant/get_pay_url

Заголовки

Accept: application/json * Content-Type: application/x-www-form-urlencoded *

Определения * - обязательные заголовки. Без них Вы не сможете получить корректный ответ.

Параметры

nametypedescription

merchant_id *

uuid

ID Вашего магазина

amount *

double

Сумма к оплате в валюте магазина (Если в сумме есть копейки, то отправляйте их с разделителем "." Пример: 100.18)

order_id *

string min: 1 max: 64

Идентификатор заказа в Вашей системе. Значение параметра может содержать только буквы, цифры и символы : , -, _, [, ] ,|.

sign *

string

currency *

string

Валюта заказа. Доступные значения: RUB, UAH, EUR, USD

method

string

Кодовое название платежной системы (см. способы оплаты). Предлагаемый способ оплаты. Клиент сможет изменить его в процессе оплаты

desc

string min: 1 max: 512

Описание заказа (показывается клиенту при оплате)

email

string

E-Mail клиента

lang

string

Язык интерфейса. Доступные значения: ru, en. По умолчанию: ru

referral

string

Код реферала. Добавим во все ссылки на форме оплаты что ведут на сайт Aaio (логотип и прочее) код реферала. Если покупатель перейдет по ней, то код будет хранится у покупателя в файлах Cookie. Если в течении 30 дней покупатель зарегистрируется в сервисе с данным кодом - он будет считаться Вашим рефералом

us_key

string min: 1 max: 2056

Так же Вы можете передавать свои параметры, которые наш сервер вернет на Ваш URL оповещения. Ключи параметров должны начинаться с us_ и содержать только латинские символы и цифры. Максимальная длина - 15. Значения параметров могут содержать только буквы, цифры и символы -, _, [, ], + ,=,|. Например:

us_name=ivanov&us_login=ivanov1971

Обратите внимание! Параметры передаются в формате application/x-www-form-urlencoded

Примеры ответа

Формат ответа application/json

{
	"type": "success",
	"url": "https://......" // URL для оплаты
}

Готовые примеры запроса

<?php
$merchant_id = ''; // ID Вашего магазина
$amount = 10.54; // Сумма к оплате
$currency = 'RUB'; // Валюта заказа
$secret = ''; // Секретный ключ №1 из настроек магазина
$order_id = 'php_curl_example'; // Идентификатор заказа в Вашей системе
$sign = hash('sha256', implode(':', [$merchant_id, $amount, $currency, $secret, $order_id]));
$desc = 'Order Payment'; // Описание заказа
$lang = 'ru'; // Язык формы

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://aaio.so/merchant/get_pay_url');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
    'merchant_id' => $merchant_id,
    'amount' => $amount,
    'currency' => $currency,
    'order_id' => $order_id,
    'sign' => $sign,
    'desc' => $desc,
    'lang' => $lang
]));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); // Таймаут подключения к нашему серверу
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // Таймаут обработки запроса

$result = curl_exec($ch); // Ответ
$http_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE); // Код ответа

if (curl_errno($ch)) {
	die('Connect error:' . curl_error($ch)); // Вывод ошибки соединения
}
curl_close($ch);

if(!in_array($http_code, [200, 400, 401])) {
	die('Response code: ' . $http_code); // Вывод неизвестного кода ответа
}

$decoded = json_decode($result, true); // Парсинг результа. На выходе получаем массив данных

if(json_last_error() !== JSON_ERROR_NONE) {
	die('Не удалось пропарсить ответ');
}

if($decoded['type'] == 'success') {
	print_r($decoded); // Вывод результата
} else {
	die('Ошибка: ' . $decoded['message']); // Вывод ошибки
}

Last updated