API интеграция с Megatron Pay.
1. Регистрация нового пользователя
2. Авторизация
3. Добавления платежного аккаунта, в котором привязываются необходимые платежные методы.
4. После создания аккаунта в настройках - генерируются для него
client_id и client_secret
5. Для отправки покупателя на страницу Megatron Pay с выбором способов оплаты вначале будет необходимо получить access_token. Токен выдается через OAuth2 протокол при grant_type=client_credentials.
Для этого на адрес
https://megatronpay.com/oauth/token необходимо отправить POST запрос содержащий следующие переменные
client_id=ваш client_id
client_secret=ваш client_secret
grant_type=client_credentials
В заголовок запроса необходимо добавить заголовок Accept: application/json.
Пример кода получения token (предполагается, что в массиве $config должны быть выданные client_id и client_secret, а также url https://megatronpay.com:
function curl_post($url, array $post = NULL, array $options = array()) { $defaults = array( CURLOPT_POST => 1, CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 4, CURLOPT_POSTFIELDS => http_build_query($post) ); $ch = curl_init(); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json')); curl_setopt_array($ch, ($options + $defaults)); if( ! $result = curl_exec($ch)) { trigger_error(curl_error($ch)); } curl_close($ch); return $result; } $url = $config['apiUrl'].'/oauth/token'; $vars = [ 'client_id'=>$config['client_id'], 'client_secret'=>$config['client_secret'], 'grant_type'=>'client_credentials' ]; $result = curl_post($url, $vars); $response = json_decode($result); $token = $response->access_token;
Пример №2:
$headers = array('Accept: application/json'); $params = ["grant_type" => "client_credentials", "client_id" => "NWBjrzoLzu7z3FKpXzNUXt6qTXpZi3JccVIGGGGG", "client_secret" => "FFGKw6q5BjuYf7TxSlPv7ou7sPRJknOSaVvLIW47"]; $link = '<a href="<a href=" <a=""></a><a href="<a href=" <a="">https://megatronpay.com/oauth/token</a>"><a href="<a href=" <a="" https:="" megatronpay.com="" oauth="" token"="">https://megatronpay.com/oauth/token</a>">https://megatronpay.com/oauth/token">https://megatronpay.com/oauth/token">https://megatronpay.com/oauth/token">https://megatronpay.com/oauth/token">https://megatronpay.com/oauth/token">https://megatronpay.com/oauth/token"><a href="<a href=" https:="" megatronpay.com="" oauth="" token"="">https://megatronpay.com/oauth/token</a>"><a href="<a href=" https:="" megatronpay.com="" oauth="" token"="">https://megatronpay.com/oauth/token</a>"><a href="<a href=" https:="" megatronpay.com="" oauth="" token"="">https://megatronpay.com/oauth/token</a>">https://megatronpay.com/oauth/token">https://megatronpay.com/oauth/token'; $curl = curl_init($link); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params)); $json = curl_exec($curl); curl_close($curl); $data = json_decode($json, true); $token = $data['access_token']; var_dump($token);
6. Теперь, используя полученный токен - Вам нужно перенаправить плательщика на форму оплаты по адрес:
https://megatronpay.com/payment/method/index/
Запрос обязательно должен содержать переменные access_token (который получили на предыдущем шаге) и amount - сумма для оплаты (для отделения десятых и сотых служит - точка, к примеру amount=8.44).
Пример запроса, по которому нужно перенаправить клиента:
https://megatronpay.com/payment/method/index/?access_token=<ПОЛУЧЕННЫЙ ТОКЕН>&amount=10.00¤cy=643
Также запрос может содержать следующие переменные:
order_id - целое число - идентификатор заказа в магазине
user_id - целое число - идентификатор пользователя в магазине
description - краткое описание назначения платежа (максимум 512 символов)
success_url - ссылка на страницу с успешной оплатой
fail_url - ссылка на страницу с безуспешной оплатой
currency - код валюты в стандарте ISO 4217, если код не передан по умолчанию будет считаться, что счет выставлен в Долларах.
new_card - признак карты из whitelist: y - новая карта, n - карта из whitelist.
country - Код страны банка, выпустившего карту: ru - Российский банк, world - иностранный. По умолчанию world, если параметр пуст или не передан.
Коды валют в
ISO 4217 для Доллара США - 840, для российского Рубля - 643, для Евро - 978, для украинской Гривны - 980.
7. После успешного или проваленного платежа на прописанный вами Redirect URI будет отправлен POST запрос содержащий данные о платеже в виде json объекта в параметре payment. В объекте будут присутствовать следующие свойства
- order_id - идентификатор заказа в вашей системе
- status - статус платежа (success или fail)
- amount - запрошенная вами сума платежа
- amount_fee - к-во денег снятое системой за проведенный платеж
- actual_amount - к-во денег поступившее на ваш баланс в системе
- client_id - идентификатор вашего аккаунта
- description - описание, которое вносили в запросе
- card - маска номера карты первые и последние цифры номера карты клиента в формате 44444|2222
- comment - комментарий к платежу, если например платеж был с ошибкой, то может быть указана причина ошибки
- signature - токен, который генерируется путём обьеденения amount, client_id и client_secret
//Пример генерации signature:
$signature = base64_encode(sha1($amount ."|". $client_id ."|". $client_secret));
Пример обработки параметров Колбека:
$post = json_decode($_POST["payment"]); $order_id = $post->order_id;