API

API интеграция с PrMoney.

1. Регистрация нового пользователя

2. Авторизация

3. Добавления платежного аккаунта, в котором привязываются необходимые платежные методы.

4. После создания аккаунта в настройках - генерируются для него
client_id и client_secret

5. Для отправки покупателя на страницу PrMoney с выбором способов оплаты вначале будет необходимо получить access_token. Токен выдается через OAuth2 протокол при grant_type=client_credentials.

Для этого на адрес https://prmoney.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://prmoney.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="">https://prmoney.com/oauth/token</a>"><a href="<a href=" https:="" prmoney.com="" oauth="" token"="">https://prmoney.com/oauth/token</a>"><a href="<a href=" https:="" prmoney.com="" oauth="" token"="">https://prmoney.com/oauth/token</a>">https://prmoney.com/oauth/token">https://prmoney.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. Располагая token происходит отправка запроса на PrMoney для отображения страницы с доступными методами оплаты.

Для этого необходимо отправить GET запрос на адрес:

https://prmoney.com/payment/method/index/

Запрос обязательно должен содержать переменные access_token (который получили на предыдущем шаге) и amount - сумма для оплаты (для отделения десятых и сотых служит - точка, к примеру amount=8.44).

Также запрос может содержать следующие переменные:
order_id - целое число - идентификатор заказа в магазине
user_id - целое число - идентификатор пользователя в магазине
description - краткое описание назначения платежа (максимум 512 символов)
success_url - ссылка на страницу с успешной оплатой
fail_url - ссылка на страницу с безуспешной оплатой
currency - код валюты в стандарте ISO 4217, если код не передан по умолчанию будет считаться, что счет выставлен в Долларах.
new_card (не обязательный) - признак карты из whitelist: y - новая карта, n - карта из whitelist.
country (не обязательный)- Код страны банка, выпустившего карту: например "GB", "RU", "UA", "IT" и др.
client_email (не обязательный)- email плательщика.

Коды валют в ISO 4217 для Доллара США - 840, для российского Рубля - 643, для Евро - 978, для украинской Гривны - 980.

7. После успешного или проваленного платежа на прописанный вами Callback 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;