You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 107 Next »

Ввод 

Внимание!

Данный способ интеграции является НЕ рекомендуемым, если Вы ранее не интегрировали похожие платежные решения, требующие активации. Рекомендуемый способ интеграции.

При выборе интеграции по API, мы рекомендуем дополнительно провести следующие доработки:

  • Добавить под каждую ПС подсказки в текстовом виде для пояснения пользователю всех шагов оплаты.
  • Добавить визуальное пояснение процесса оплаты - gif-ки с отображением процесса и скриншоты шагов оплаты.
  • Скриншоты и всю необходимую минимально текстовую информацию информацию можно получить напрямую от ТП Paykassma.

Доступ к общему API реализован по секретному ключу. PLUGINAPI_SECRET - строка секретного ключа. Ее необходимо будет добавлять ко всем запросам в виде get-параметра secret.
    Например: https://api.{URL_сервера_Paykassma}/api/v1/deposit-info?secret=pluginapi_secret 

При отправки запроса без использования данных параметров, будет выдаваться ошибка 404 'Не найдено'

Получение доступных ПС

API url
https://api.{URL_server_Paykassma}/api/v1/payment-systems/available

Request method: GET

Format: JSON

Parameters:

Параметр

Тип

Обязательность

Описание

currency_code

string[] (3)

ДА

Массив состоящий из кодов валют. Отобразятся ПС работающие по указанным валютам 

label

string (190)

ДА

Уникальный идентификатор (ID) пользователя, осуществляющего платеж

Request
{
    "currency_code": [ "USD", "INR" ],
    "label": "55"
}


Response Success
{
  "status": "ok",
  "params": {
    "gif_guide": {
      "upi_ib": "http:\/\/api.pay.test\/storage\/guide-image\/upi.mp4?cache=1587635151",
      "phonePe": "http:\/\/api.pay.test\/storage\/guide-image\/phonePe.gif?cache=1589958899",
      "bkash": "http:\/\/api.pay.test\/storage\/guide-image\/bkash.mpg?cache=1611553163"
    },
    "currency_data": [
      {
        "code": "INR",
        "symbol": "₹"
      }
    ],
    "wallets": [
      {
        "type": "paytm",
        "currency_code": "INR",
        "order": 5,
        "logo": "http:\/\/api.pay.test\/storage\/payment_system\/logos\/paytm_default.svg",
        "name": "PayTM"
      },
      {
        "type": "paytm",
        "currency_code": "INR",
        "order": 5,
        "logo": "http:\/\/api.pay.test\/storage\/payment_system\/logos\/paytm_34.svg",
        "name": "paytm",
        "hints": [
          {
            "type": "requisites_hint",
            "text": null
          },
          {
            "type": "payment_hint",
            "text": null
          },
          true
        ],
        "show_limits": true
      }
    ],
      "imps_ib": {
        "INR": {
          "min": "8000",
          "max": "560000"
        }
      },
      "bkash": {
        "BDT": {
          "min": "100",
          "max": "1000000"
        }
      },
      "upi_ib": {
        "INR": {
          "min": "20000",
          "max": "50000"
        }
      },
      "paytm": {
        "INR": {
          "min": "100000",
          "max": "20000000"
        }
      },
      "phone_pe": {
        "INR": {
          "min": "100",
          "max": "800000"
        }
      }
    }
  }
}


Response Fail
{
    "status": "fail"
    "message": "MESSAGE"
}

Создание платежа

В данный момент существуют два типа запросов для создания платежа, в зависимости от необходимости активации платежа при проведении.

Внимание! Для получения полного списка ПС, для которых необходима активация, обратитесь в ТП Paykassma. ТП предоставят полные примеры запросов для доступных в данный момент ПС.

Для ПС, требующих активации платежа

1. Запрос по созданию платежа:

API url
https://api.{{URL_server_Paykassma}/api/v1/transaction/create/{wallet_type}
Пример запроса ПС PayTM
API url
https://api.{URL_server_Paykassma}/api/v1/transaction/create/paytm

Request method: POST

Format: JSON

Parameters:

Параметр

Тип

Обязательность

Описание

currency

string (3)

ДА

Код валюты

label

string (190)

ДА

Уникальный идентификатор пользователя, осуществляющего платеж

Request
{
    "currency": "INR",
    "label": "eligendi"
}


Response Success
{
    "status": "ok",
    "params":  {
        "identifier": "6234234234"
                      }
}


Response Fail
{
    "status": "fail"
    "message": "MESSAGE"
}

2. Запрос для активации платежа:

API url
https://api.{URL_server_Paykassma}/api/v1/transaction/activate

Request method: POST

Format: JSON

Parameters:

Параметр

Тип

Обязательность

Описание

currency_code

string (3)

ДА

Код валюты

wallet_type

string (190)

ДА

Значение из списка доступных ПС.
Внимание:
Для получения полного доступного списка, обратитесь в ТП Paykassma.

label

string (190)

ДА

Уникальный идентификатор пользователя, осуществляющего платеж

key1

string (190)

ДА

Код, по которому происходит активация (Transaction_ID), полученный от пользователя

amountnumeric*required ifСумма транзакции

custom_transaction_id

string (190)

НЕТ

Идентификатор транзакции в системе Клиента

Request
{
    "currency_code": "USD",
    "wallet_type": "paytm",
    "label": "55",
    "key1": "123-ABC-456-DEF"
    "custom_transaction_id": "123465477897"
}


Response Success
{
    "status": "ok"
}


Response Fail
{
    "status": "fail"
    "message": "MESSAGE"
}


*При включенном функционале Отложенная автоматическая активация транзакций(Возможные транзакции)
Response possible_transaction_created
{
    "status": "possible_transaction_created",
    "message": "Transaction not found. Possible transaction created"
}

**Для некоторых ПС, так же в запросе необходимо передать поле amount:

Платежная системаcurrency_codewallet_typelabelkey1amountcustom_transaction_id
IMPS IB/UPI IBrequiredrequiredrequiredrequiredrequired-
Paytmrequiredrequiredrequiredrequired--
PhonePerequiredrequiredrequiredrequiredrequired-
bKashrequiredrequiredrequiredrequired--
Nagadrequiredrequiredrequiredrequired--

Для ПС, не требующих активации платежа

Создание платежа:

API url
https://api.{URL_server_Paykassma}/api/v1/payment/create/{payment_system}

Request method: POST

Format: JSON

Parameters:

Параметр

Тип

Обязательность

Описание

language

string (2)

ДА

Язык интерфейса

currency

string (3)

ДА

Код валюты

bank

string (3)

ДА

Банк, через который осуществляется платеж

amount

numeric 

(ограничена max.
депозитом)

ДА

Сумма платежа

label

string (190)

ДА

Уникальный идентификатор пользователя, осуществляющего платеж

redirect_url

url 

ДА

URL страницы для редиректа после платежа

custom_transaction_id

string (190)

НЕТ

Идентификатор транзакции в системе Клиента

Request
{
   "language": "en",
   "currency": "USD",
   "bank": "MBB",
   "amount": "1000",
   "label": "55",
   "redirect_url": "https:\/\/google.com"
   "custom_transaction_id": "123465477897"
}


Response Success
{
    "status": "ok"
}


Response Fail
{
    "status": "fail"
    "message": "MESSAGE"
}

Информация о накоплениях

Для сохранения информации о транзакциях, сумма которых не превышает размер минимального депозита для конкретной платёжной системы, был реализован функционал накоплений. Транзакции пользователя (выборка по параметру label) копятся в системе и не зачисляются на счёт пользователя до тех пор, пока их сумма не достигнет минимального депозита этой платёжной системы. Постбек на сервер клиента отправится только после достижения суммы минимального депозита. До момента отправки postback транзакция не считается зачисленной на счёт. 

В постбеке ввода, можно увидеть поле Stockpiling, в нем указана сконвертированная во все валюты сумма транзакций, участвующих в накоплении (одна и более транзакции). Конвертация осуществляется на основе открытых данных о курсах валют. Все валюты передаются с точностью до сотых долей, криптовалюты имеют 8 знаков в дробной части (стомиллионная точность). Так же в поле transactions передается информация о совершённых транзакциях, участвующих в накоплении (одна и более). Передается в виде массива.

Запрос на предоставление информации о накоплениях определенного пользователя

API url
https://api.{URL_server_Paykassma}/api/v1/deposit-info

Request method: GET

Format: JSON

Parameters:

Параметр

Тип

Обязательность

Описание

label

string (190) 

ДА

Уникальный идентификатор пользователя, осуществляющего платеж

wallet_type

url 

ДА

Значение из списка доступных ПС.
Внимание:
Для получения полного доступного списка, обратитесь в ТП Paykassma.

currency

string (3)

ДА

Код валюты

code

string (190) 
или
“null”

НЕТ

Название ручной платёжной системы.
Заполняется при
wallet_type = manual

Request
{
   "label": "55",
   "wallet_type": "paytm",
   "currency": "UDS"
}


Response Success
{
    "status": "ok"
    "stockpiling_sum": 0,
    "lacks_sum": 0,
    "minimum_deposit": 148
}


Response Fail
{
    "status": "fail"
    "message": "MESSAGE"
}

< Вернуться на главную

Хеширование адресов для редиректа

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

API url
https://api.{URL_server_Paykassma}/payment-plugin/hash-url 

Request method: POST

Format: JSON

Parameters:

Параметр

Тип

Обязательность

Описание

success_urlsarrayДАСписок адресов для редиректа при успешной оплате. 

orderinteger*ДАНомер адреса для редиректа в списке.

urlstring*ДААдрес для редиректа пользователя при успешной оплате. 
fail_urlsarrayДАСписок адресов для редиректа при неуспешной оплате. 

orderinteger*ДАНомер адреса для редиректа в списке.

urlstring*ДААдрес для редиректа пользователя при неуспешной оплате. 

*Один из массивов success_urls или fail_urls может быть пустым.

Request
{
    "success_urls": [
        {
            "order": 2,
            "url": "https://test.com/success2.jpg"
        },
        {
            "order": 1,
            "url": "https://test.com/success1.jpg"
        }
    ],
    "fail_urls": [
        {
            "order": 1,
            "url": "https://test.com/fail1.jpg"
        },
        {
            "order": 2,
            "url": "https://test.com/fail2.jpg"
        }
    ]
}
Response Success
{
    "status": "ok",
    "urls": {
        "success_url": [
            {
                "order": 1,
                "url": "a93558ba9e4f04eef3b1f759ae4281305776559ce86ae2af5f6e6498d84b99be"
            },
            {
                "order": 2,
                "url": "7c51f9d6b35a80a8fcce9cf3f4f0ae56b818c2e375a8b3297cb3fafb41a921eb"
            }
        ],
        "fail_url": [
            {
                "order": 1,
                "url": "8b99db57e0bda63400b0e852d7fe73d8c6da52b8e32894987a8bd00bcadf8c66"
            },
            {
                "order": 2,
                "url": "e72ed31e2f3814563a3bc446f6a59f43c946c3a4339c7b2f5c29d12e8066b37c"
            }
        ]
    }
}
Response Fail
{
    "status": "fail"
    "message": "MESSAGE"
}


Полученные хеши адресов необходимо указать в соответствующих параметрах кода виджета.

Внимание!

Время жизни хеша - 1 день. По истечении срока при необходимости запросить хеш для адреса повторно. 

< Вернуться на главную

Вывод

Актуальный тип запросов для подключения выводов:

Для вывода денежных средств пользователем через доступные для Клиента платежные системы, необходимо:

  1. Единоразово передать ТП Paykassma URL-сервера, куда будут отправляться постбеки со статусом вывода.
  2. Отправить запросы на вывод (POST) по URL адресу, без использования "secret=pluginapi_secret " :
API url
https://api.{URL_server_Paykassma}/v2/withdrawal/create

Request method:
POST

Format:
JSON

Внимание: При передаче данных не должно быть пробелов в начале и конце параметров в JSON файле

Каждый запрос на вывод подписывается signature, она формируется следующим образом:

Алгоритм формирования signature

  1. Инициализируется свой приватный ключ.
  2. Формируется массив с данными, которые будут захэшированы. Массив может быть многомерным.
  3. Элементы массива сортируются по ключу при помощи функции ksort()
  4. Элементы массива рекурсивно конкатенируются друг с другом через строку ":".
  5. Далее выделяется md5 hash полученной строки.
  6. Конкатенируется приватный ключ с hash строкой.
  7. Далее выделяется sha1 hash с полученной строки.

Пример формирования signature на php

Signature
$data = [
    ...
];

$data['signature'] = generateSignature($data); // return fa0ee1e2acf7f898635ec417491381c0a4f9d35c

//send $data like json ...

function generateSignature(array $data) {
    $privateKey = 'yourprivatekey';
	ksort($data);
	$implode = self::multiImplode( ':', $data);
	return sha1($privateKey . md5($implode));
}


function multiImplode($glue, $array): string
    {
        $finArray = [];
    foreach ($array as $val) {
        $finArray[] = is_array($val) ? self::multiImplode($glue, $val) : $val;
    }
    return implode($glue, $finArray);
}


Необходимые параметры для передачи в POST запросе

Наименование

Тип

Обязательность

Описание

withdrawal_idstring(1-36) optional Идентификатор вывода, если параметр не передается, то система генерирует withdrawal_id
payment_systemstring requiredПлатежная система
amount

int


required

Дополнительные требования:

  1. amount >= Величина установленного минимального значения
  2. amount <= Величина установленного максимального значения

Кратность:

Для ПС PayTM: amount кратно "10".

currency_codestring(3) requiredКод валюты
labelstring requiredLabel пользователя, для которого проводится вывод

is_test

booleanrequired

Параметр is_test может принимать одно из двух значений:

  • true - если Вывод тестовый 
  • false - если вывод реальный 
account_numberstring 

*required_if
ПС = bkash,imps_ib,
upi_ib,paytm,....

Номер счета получателя

Маска ввода:

Для ПС PayTM: Цифры(10) (без международного кода +91)

Для ПС UPI IB / IMPS IB: Цифры

account_namestring *required_if
ПС = imps_ib,
upi_ib,....
Имя держателя счета
account_emailstring *required_if
ПС = bkash,...
Е-mail держателя счета
payments_details.payments_methodstring *required_ifСпособ оплаты
payments_details.payments_providerstring optionalПоставщик, который осуществляет электронный платеж, выбранным способом оплаты
bank_details.bank_codestring*required_if

Уникальный идентификатор присваиваемый центральным банком страны

Маска ввода:

Для ПС UPI IB / IMPS IB: IFSC code Буквы(4)Цифры(7). Подробнее: https://en.wikipedia.org/wiki/Indian_Financial_System_Code

bank_details.branch_codestring*required_ifКод филиала (отделения) банка
bank_details.bank_code_in_payments_systemstring*required_if

Код банка в платежной системе, с которой осуществляется обмен данными

account_typestring*required_ifТип аккаунта 
document_typestring*required_ifТип документа
document_idstring*required_ifИдентификатор документа получателя
account_digitstring*required_ifЦифра счета
ibanstring*required_ifIBAN



*В запросе на вывод, имеются поля обязательные только для некоторых платежных систем(required_if), для полного списка обязательных полей для определенной ПС, необходимо обратиться в Техническую поддержку Paykassma.

Обязательные поля для ПС Bkash, PayTm, IMPS IB/UPI IB:

Платежная системаaccount_numberaccount_nameaccount_emailpayments_detailsbank_details
payments_methodpayments_providerbank_codebranch_codebank_code_in_payment_system

Bkash

required-required-----
IMPS IB/UPI IBrequiredrequired---required--
Paytmrequired-------

Request:

Пример тела запроса
{
    'withdrawal_id': '1234567',
    'payment_system': 'paytm',
    'amount' : '1000',  
    'currency_code': 'INR',
    'label': '55',     
    'is_test': 'false',     
    'comment': 'withdrawal',       
    'account_number': '11111111', 
    'signature':'fae51673a8a9c85f724317214bd0bcc665ebc799'
}
Response Success
{
    'status': 'ok'
}
Response Fail
{
    'status': 'fail'
    'message': 'MESSAGE'
}

После обработки вывода, Paykassma пришлет постбек о результате вывода с определенным статусом, подписанной сигнатурой

Статусы выводов

СтатусОписание
PROCESSED (1)Статус для вывода, когда заявка на вывод была успешно обработана
REJECTED (5)Статус для вывода, когда заявка на вывод была отклонена

< Вернуться на главную

Информация о ранее отправленном постбеке

Запрос на предоставление информации о ранее успешно отправленном постбеке.

PLUGINAPI_SECRET - строка секретного ключа. Ее необходимо будет добавлять ко всем запросам в виде get-параметра secret.

Напримерhttps://api.{URL_сервера_Paykassma}/api/v1/postback?secret=pluginapi_secret 

API url
https://api.{URL_server_Paykassma}/api/v1/postback

Request method: GET

Format: JSON

Parameters:

Параметр

Тип

Обязательность

Описание

type

string 

ДА

Тип постбека.

Возможные значения:

  • deposit
  • withdrawal

transaction_id

string

Обязателен хотя бы один из параметров,

если type = deposit

Номер транзакции

custom_idstringНомер заказа
withdrawal_idstringОбязателен, если type = withdrawalID вывода
Response Success (type=deposit)
   {
    "status": "ok",
    "postback": {
        "transaction_id": "453535345",
        "label": "435",
        "stockpiling": {
            "USD": 4610062.05,
            "INR": 345345345,
            "EUR": 3983190.43,
            "IDR": 65837909699.54,
            "MYR": 19134062.55,
            "VND": 104893839449.17,
            "SGD": 6221984.08,
            "THB": 153749990.51,
            "NGN": 1898193050.29,
            "TRY": 43873352.03,
            "AED": 16933679.93,
            "CAD": 5706403.96,
            "AUD": 6134591.13,
            "BDT": 394891290.79,
            "AFN": 418156964.72,
            "ALL": 488772456.91,
            "AMD": 2202143869.02,
            "AOA": 2752207045.6,
            "ARS": 459519460.28,
            "AWG": 8300416.73,
            "AZN": 7840816.59,
            "BAM": 7789732.49,
            "BBD": 9220124.11,
            "BGN": 7790566.91,
            "BHD": 1737744.45,
            "BIF": 9169348711.83,
            "BMD": 4610062.05,
            "BND": 6216396.68,
            "BOB": 31801277.58,
            "BRL": 26023403.82,
            "BSD": 4610062.05,
            "BTC": 74.54470339,
            "BTN": 345299119.91,
            "BWP": 52763690.74,
            "BYN": 11244314.76,
            "BZD": 9240952.37,
            "CDF": 9143497429.28,
            "CHF": 4208184.5,
            "CLF": 135913.85,
            "CLP": 3750285480.05,
            "CNH": 29495130.91,
            "CNY": 29495177.01,
            "COP": 17331717342.01,
            "CRC": 2939207744.86,
            "CUC": 4610062.05,
            "CUP": 118709097.86,
            "CVE": 436572876.41,
            "CZK": 102052399.68,
            "DJF": 820509207.6,
            "DKK": 29632944.11,
            "DOP": 260174176.58,
            "DZD": 634030335.09,
            "EGP": 72425457.87,
            "ERN": 69153789.03,
            "ETB": 218717216.23,
            "FJD": 9542828.45,
            "FKP": 3369190.09,
            "GBP": 3369190.09,
            "GEL": 14521695.47,
            "GGP": 3369190.09,
            "GHS": 28121143.41,
            "GIP": 3369190.09,
            "GMD": 239723226.75,
            "GNF": 44360498102.61,
            "GTQ": 35672982.87,
            "GYD": 964839822.52,
            "HKD": 35879882.45,
            "HNL": 111443474.11,
            "HRK": 29978196.27,
            "HTG": 452476986.58,
            "HUF": 1435716207.54,
            "ILS": 14476908.71,
            "IMP": 3369190.09,
            "IQD": 6725977357.42,
            "IRR": 194775122390.71,
            "ISK": 598293853.23,
            "JEP": 3369190.09,
            "JMD": 712559367.6,
            "JOD": 3268534,
            "JPY": 526637353.71,
            "KES": 513053805.87,
            "KGS": 390935115.33,
            "KHR": 18835091650.05,
            "KMF": 1942681734.96,
            "KPW": 4149055847.63,
            "KRW": 5430630260.1,
            "KWD": 1391132.33,
            "KYD": 3840638.09,
            "KZT": 1971237418.21,
            "LAK": 47201661108.42,
            "LBP": 6965551762.15,
            "LKR": 930998873.7,
            "LRD": 698424377.97,
            "LSL": 70723847.09,
            "LYD": 21015783.85,
            "MAD": 41858708.81,
            "MDL": 80357078.85,
            "MGA": 18336748035.86,
            "MKD": 245401836.65,
            "MMK": 8326080171.86,
            "MNT": 13147861127.1,
            "MOP": 36946291.23,
            "MRO": 1645791359.96,
            "MRU": 166749005.54,
            "MUR": 198463171.38,
            "MVR": 71225458.72,
            "MWK": 3763215975.72,
            "MXN": 95382589.56,
            "MZN": 294260260.84,
            "NAD": 69704138.24,
            "NIO": 162371876.09,
            "NOK": 38796622.62,
            "NPR": 552477876.37,
            "NZD": 6414537.15,
            "OMR": 1774767.86,
            "PAB": 4610062.05,
            "PEN": 18422162.94,
            "PGK": 16182622.45,
            "PHP": 233052471.57,
            "PKR": 792501444.06,
            "PLN": 18414837.55,
            "PYG": 31817465481.06,
            "QAR": 16780842.55,
            "RON": 19712487.04,
            "RSD": 468340620.4,
            "RUB": 327660160.41,
            "RWF": 4695797248.61,
            "SAR": 17293947.06,
            "SBD": 37028825.17,
            "SCR": 63024218.26,
            "SDG": 2030732334.31,
            "SEK": 39500786.54,
            "SHP": 3369190.09,
            "SLL": 49746487532.16,
            "SOS": 2666103446.02,
            "SRD": 99148604.57,
            "SSP": 600506683.01,
            "STD": 96610491131.87,
            "STN": 98424824.83,
            "SVC": 40330104.44,
            "SYP": 5794559138.65,
            "SZL": 70735399.9,
            "TJS": 51758475.93,
            "TMT": 16158267.5,
            "TND": 12965799.52,
            "TOP": 10312565.9,
            "TTD": 31286296.76,
            "TWD": 128400374.92,
            "TZS": 10616972907.89,
            "UAH": 121246397.65,
            "UGX": 16393718610.02,
            "UYU": 202666561.42,
            "UZS": 49202252751,
            "VEF": 1145543450116.04,
            "VES": 19910627.5,
            "VUV": 512750542.16,
            "WST": 11839063.48,
            "XAF": 2612802535.54,
            "XAG": 192248.81,
            "XAU": 2577.02,
            "XCD": 12458923.2,
            "XDR": 3272982.71,
            "XOF": 2612802535.54,
            "XPD": 2235.88,
            "XPF": 475321217.85,
            "XPT": 4398,
            "YER": 1153668019.52,
            "ZAR": 70640049.99,
            "ZMW": 79757295.95,
            "ZWL": 1484439981.04,
            "ETH": 1054.27509088,
            "LTC": 110641.4892702,
            "DOGE": 16950326.08316667,
            "DASH": 65854.73642603,
            "BCH": 18901.25441699,
            "ZEC": 126163.56820239,
            "ETC": 878106.17959294,
            "XRP": 24711011.35819838,
            "TRX": 45776463.64719361,
            "XLM": 98741900.28788687,
            "WAVES": 172375.10682464
        },
        "stockpiling_id": 1585,
        "transactions": [
            {
                "amount": 345345345,
                "currency_code": "INR",
                "wallet_type": "phone_pe",
                "code": null,
                "transaction_id": "453535345",
                "transaction_type": 0,
                "from": null,
                "created_datetime": "2021-10-21 13:34:12",
                "activated_datetime": "2021-11-01 14:16:51",
                "custom_id": null
            }
        ]
    }
}
Response Success (type=withdrawal)
{
    "status": "ok",
    "postback": {
        "withdrawal_id": "2298635",
        "status": 1,
        "comment": "test",
        "payment_system": "paytm",
        "amount": 500,
        "currency_code": "INR",
        "label": "55",
        "account_number": "5422222225",
        "account_name": "5645646",
        "account_email": null,
        "payments_details": {
            "payments_provider": null
        },
        "bank_details": {
            "bank_code": null,
            "branch_code": null
        }
    }
}
Response Fail
{
    "status": "fail"
    "message": "MESSAGE"
}


< Вернуться на главную


Оглавление: