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="https://prmoney.com/oauth/token">https://prmoney.com/oauth/token</a>';
            $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 - Код страны банка, выпустившего карту: ru - Российский банк, world - иностранный. По умолчанию world, если параметр пуст или не передан.

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

7. После успешного или проваленного платежа на прописанный вами Redirect URI будет отправлен POST запрос содержащий данные о платеже в виде json объекта в параметре payment. В объекте будут присутствовать следующие свойства

Пример обработки параметра такого запроса:

    $post = json_decode($_POST["payment"]);
    $order_id = $post->order_id;<span></span>