Платежный API VKCoin

v 0.0.1

Получаем ключ

Платежный API VKCoin, image #1

Перейдите по ссылке vk.com/coin#create_merchant.

Если такого окна не появилось, то сбросьте кеш приложения или попробуйте с компьютера.

Ключ показывается только один раз, сохраните его в надежном месте.

Ссылка на оплату

Ссылка на оплату состоит из трех частей:

  1. Ваш id (19039187)

2. Сумма перевода в тысячных долях (1000)

3. Payload – любое число от -2000000000 до 2000000000, вернется вам в списке транзаций

Далее их надо объединить в такую ссылку: vk.com/coin#x19039187_1000_ 2000000000

Это и будет ссылка на оплату для пользователя (обратите внимание, что самому себе переводы запрещены). По умолчанию пользователь не может изменить сумму перевода. Если это требуется, сделайте ссылку вида

vk.com/coin#x19039187_1000_2000000000_1 — свободная сумма

vk.com/coin#x19039187_1000_2000000000 — фиксированная сумма

Получение списка транзакций

Платежный API VKCoin, image #2
curl -X POST \
https://coin-without-bugs.vkforms.ru/merchant/tx/ \
-H 'Content-Type: application/json' \
-d '{
"merchantId":19039187,
"key":"aZPK=GpLy&EW634Om7onn2ZdP]Wk0FGyI,bCjShuI1fKtP",
"tx":[1]
}'

В ключе tx можно указать массив id транзакций, если указать [1], то вернуться 1000 последних транзакций со ссылок на оплату. [2] — 100 последних транзакций на текущий аккаунт.

Если указать в параметре lastTx номер последней транзакции то будут возвращены только транзакции после указанной (но не более 1000 и 100 соотвественно).

Перевод

Платежный API VKCoin, image #3
curl -X POST \
https://coin-without-bugs.vkforms.ru/merchant/send/ \
-H 'Content-Type: application/json' \
-d '{
"merchantId":19039187,
"key":"aZPK=GpLy&EW634O7&onn2dPWk0FyI,=CjShu1f",
"toId":2050,
"amount":15
}'

Если передать дополнительный параметр markAsMerchant, то перевод в истории будет помечен как от магазина. При этом будет использовано название магазина а не имя вашего аккаунта.

Получение баланса

Платежный API VKCoin, image #4
curl -X POST \
https://coin-without-bugs.vkforms.ru/merchant/score/ \
-H 'Content-Type: application/json' \
-d '{
"merchantId":19039187,
"key":"aZPK=GpLy&EW634Om7&on............",
"userIds":[2050,54986442]
}'

В userIds можно передать до 100 id пользователей.

Баланс возвращается в тысячных долях. Например:

если в апи вернулся баланс 1000 — это 1 коин

если в апи вернулся баланс 1 — это 0.001 коин

Лимиты

Запрещено делать одновременно два перевода (метод send). Иначе вы получите ошибку ANOTHER_TRANSACTION_IN_PROGRESS_AT_SAME_TIME

Обращения к методу получения транзакций не лимитированы, мы рекомендуем обращаться не чаще 1 раза в секунду.

422, merchantid or key or tx is not valid

Такую ошибку можно получить если не передавать заголовок запроса

Content-Type: application/json

Callback API

Платежный API VKCoin, image #5
curl -X POST \
https://coin-without-bugs.vkforms.ru/merchant/set/ \
-H 'Content-Type: application/json' \
-d '{
"callback": "http://my-super-host.com/callback/",
"merchantId":1,
"key":"<KEY>"
}'

На указанный адрес будут отправляться уведомления о новых переводах совершенных только по сец. ссылкам. Чтобы удалить адрес передайте в параметре callback значение null. Вызывать этот метод можно 1 раз в 15 секунд.

POST запрос, Content-Type application/json. В теле поста структура транзакции как приведено ниже.

{ id: 2627951,
amount: 10,
payload: 10,
created_at: 1555612247,
from_id: 19039187,
to_id: 101,
key: '5bb8fcefd43242773e34eb485f377463' }

Ключ key служит для проверки данных он рассчитывается как md5

id;from_id;amount;payload;merchantKey

Ванном примере
2627951;19039187;10;10;<KEY>

Ваш сервер должен ответить текстом OK и 200 статусом. В противном случае будет вторая попытка сделать запрос через ~5 сек.

Чтобы посмотреть логи неудавшихся запросов, передайте параметр status = 1

Платежный API VKCoin, image #6
curl -X POST \
https://coin-without-bugs.vkforms.ru/merchant/set/ \
-H 'Content-Type: application/json' \
-d '{
"status": 1,
"merchantId":101,
"key":"<KEY>"
}'

Название магазина

curl -X POST \
https://coin-without-bugs.vkforms.ru/merchant/set/ \
-H 'Content-Type: application/json' \
-d '{
"name": "My shop 19",
"merchantId":101,
"key":"<KEY>"
}'

Обратите внимание что название может быть закешированно на срок до 5 часов. Сбросить кеш никак нельзя. Вызывать этот метод можно 1 раз в 15 секунд.

Готовые библиотеки

PHP

https://github.com/slmatthew/vk-coin-php

https://github.com/digitalstars/vk_api

NodeJS

https://github.com/fakemancat/vkcoinapi

Python

https://github.com/crinny/vkcoin

27000 views·289 shares