Работа мечты в один клик 💼

💭Мечтаешь работать в Сбере, но не хочешь проходить десять кругов HR-собеседований? Теперь это проще, чем когда-либо!
💡AI-интервью за 15 минут – и ты уже на шаг ближе к своей новой работе.
Как получить оффер?
📌 Зарегистрируйся
📌 Пройди AI-интервью
📌 Получи обратную связь сразу же!
HR больше не тянут время – рекрутеры свяжутся с тобой в течение двух дней! 🚀
Реклама. ПАО СБЕРБАНК, ИНН 7707083893. Erid 2VtzquscAwp
Чтобы не голословить, сразу перейдем к механике работы сервиса. Итак, что это и с чем его едят.
PayKassa – это сервис, который поможет тебе мгновенно принимать платежи в криптовалюте на своем ресурсе, а также производить многочисленные выплаты с использованием множества платежных систем.
Чем крут данный агрегатор?
- Ты сможешь работать с более чем 20 платежными системами, самые известные из которых – Bitcoin, Ethereum, Dash, Litecoin, DogeCoin. Весь перечень можешь посмотреть на странице тарифов.
- С подключением к системе разберется даже ребенок. Создаешь мерчант, копируешь код, и твой сайт готов принимать и рассылать моментальные платежи. В разделе “Разработчикам” находишь PHP-классы для работы с API и SCI, скачиваешь их и радуешься жизни. Все максимально просто.
- Для тех, кто использует готовую CMS, на сайте перечислены готовые CMS-модули оплат, в которых можно указать PayKassa как сервис приема платежей, что упростит процесс подключения.
Настройка сервиса
Вот мы и подобрались к самому интересному.
После регистрации вы можете изменить язык интерфейса на русский. Перейди на вкладку “Мерчанты” и нажми “Добавить мерчант”:

Заполни форму и снова нажми кнопку “Добавить мерчант”:

Обрати внимание, что “URL обработчика” – это адрес для уведомлений об изменении статуса заказа.
После добавления выскочит месседж, сообщающий об успешной регистрации. Если ты перейдешь на вкладку Мерчанты, то увидишь там свой сайт с балансом по каждой из поддерживаемых сервисом платежных систем. В настройках найдешь информацию по доступным операциям с процентами и фиксированной комиссией:

Платежные системы, с которыми не будешь работать, можно просто отключить.
После создания мерчанту будет присвоен ID. Он потребуется для дальнейшей работы. Посмотреть его можно на вкладке “Мерчанты”:

Интеграция
С PHP проблем не будет. Как мы уже упоминали ранее, ты можешь использовать готовые PHP классы для получения адреса, выставления счета, проверки оплаты и моментальных выплат. Но даже в случае с другим языком никаких трудностей возникнуть не должно.
А вот чтобы работать с этим на других языках, понадобится использовать обертку. Как? Смотри дальше.
Python:
import httplib
import urllib
import json
class PayKassa:
sci_domain = 'paykassa.pro'
sci_path = '/sci/0.4/index.php'
def __init__(self, sci_id, sci_key, domain, test):
self.sci_id = sci_id
self.sci_key = sci_key
self.domain = domain
self.test = test and 'true' or 'false'
def sci_create_order(self, amount, currency, order_id, comment, system):
return self.make_request({
'func': 'sci_create_order',
'amount': amount,
'currency': currency,
'order_id': order_id,
'comment': comment,
'system': system
})
def sci_confirm_order(self, private_hash):
return self.make_request({ 'func': 'sci_confirm_order', 'private_hash': private_hash })
def make_request(self, params):
fields = {'sci_id': self.sci_id, 'sci_key': self.sci_key, 'domain': self.domain, 'test': self.test}.copy()
fields.update(params)
encoded_fields = urllib.urlencode(fields)
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
conn = httplib.HTTPSConnection(self.sci_domain)
conn.request('POST', self.sci_path, encoded_fields, headers)
response = conn.getresponse()
return json.loads(response.read())
Используем:
paykassa = PayKassa(0, '123', 'mydomain.com', False)
result = paykassa.sci_create_order(0.001, 'BTC', 1, 'Order number 1', 11)
if result['error']:
print(result['message'])
else:
print(result['data']['url'])
Node.js:
var https = require('https');
var querystring = require('querystring');
function mergeArray(array1,array2) {
for(item in array1) {
array2[item] = array1[item];
}
return array2;
}
function PayKassaApi(sci_id, sci_key, domain, test) {
this.sci_id = sci_id;
this.sci_key = sci_key;
this.domain = domain;
this.test = test || false;
};
PayKassaApi.methods = [
'sci_create_order',
'sci_confirm_order'
]
PayKassaApi.prototype.sendRequest = function(method, params, callback) {
if (PayKassaApi.methods.indexOf(method) === -1) {
throw new Error('wrong method name ' + method)
};
if (callback == null) {
callback = params;
};
var data = {
method: method,
sci_id: this.sci_id,
sci_key: this.sci_key,
domain: this.domain,
test: this.test
}
data = mergeArray(params, data)
var body = querystring.stringify(data);
var options = {
host: 'paykassa.pro',
port: 443,
path: '/sci/0.4/index.php',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
};
var request = https.request(options, function (response) {
var result = '';
response.setEncoding('utf8');
response.on('data', function (chunk) {
result += chunk;
});
response.on('end', function () {
try {
callback(JSON.parse(result));
} catch (e) {
console.error(e);
callback(result);
}
});
});
request.write(body)
request.end()
};
for (var i = 0; i < PayKassaApi.methods.length; i++) {
PayKassaApi.prototype[PayKassaApi.methods[i]] = function (method) {
return function (params, callback) {
this.sendRequest(method, params, callback)
}
}(PayKassaApi.methods[i])
}
module.exports = PayKassaApi
Используем:
var PayKassa = require("./paykassa")
var paykassa = new Api({ sci_id: 0, sci_key: '123', domain: 'mydomain.com', test: true })
paykassa.sci_create_order({
amount: 0.01,
currency: 'BTC',
order_id: 1,
comment: 'test order №1',
system: 1
}, function (res) {
if (res.error) {
throw new Error(res.message)
} else {
console.log(res.data.url)
}
})
Ruby:
require 'net/http'
class Paykassa
BASE_SCI_URI = URI('https://paykassa.pro/sci/0.4/index.php')
def initialize(auth = Rails.application.secrets[:paykassa])
@_auth = auth
end
def create_order(amount:, currency:, order_id:, comment:, system:)
make_request(
func: :sci_create_order,
amount: amount,
currency: currency,
order_id: order_id,
comment: comment,
system: system
)
end
def confirm_order(private_hash)
make_request(func: :sci_confirm_order, private_hash: private_hash)
end
private
def make_request(data)
res = Net::HTTP.post_form(BASE_SCI_URI, data.merge(@_auth))
JSON.parse(res.body).deep_symbolize_keys
end
end
Используем:
paykassa = Paykassa.new
result = paykassa.create_order(
amount: 0.01,
currency: 'BTC',
order_id: 1,
comment: "Payment №1",
system: 11
)
raise StandardError.new(result[:message]) if result[:error]
url = result[:data][:url]
Коллаут – стандартный POST запрос multipart/form-data.
Параметры для работы с запросом:
- domain — домен магазина
- sci_key — секретный ключ магазина (указывается при его создании)
- currency — валюта
- amount — сумма (используется указанная валюта)
- comment — комментарий к заказу
- order_id — Id заказа
- system — Id выбранной платежной системы
- sci_id — Id созданного магазина (смотри выше)
- test — тестовый режим
Проверка
Как только платеж совершен, сервис PayKassa обращается к “URL обработчика”. Как ты помнишь, туда приходят уведомления об изменении статуса заказа. Обращение будет содержать Id заказа. Чтобы получить статус, сделай запрос с использованием этого Id:
curl https://paykassa.pro/sci/0.4/index.php -d 'func=sci_confirm_order&private_hash=PRIVATE_HASH&sci_id=SCI_ID&sci_key=SCI_KEY&domain=DOMAIN&test=true' -H 'Content-type: application/x-www-form-urlencoded'
Как это выглядит в уже приведенных языках программирования?
Python:
paykassa = PayKassa(0, '123', 'mydomain.com', False)
result = paykassa.confirm_order(request.POST['private_hash'])
if result['error']:
print(result['message'])
else:
print(result['data']['order_id'])
print(result['data']['amount'])
Node.js:
var PayKassa = require("./paykassa")
var paykassa = new Api({ sci_id: 0, sci_key: '123', domain: 'habratest.ngrok.io', test: true })
paykassa.sci_confirm_order({
private_hash: req.body.private_hash
}, function (res) {
if (res.error) {
throw new Error(res.message)
} else {
console.log(res.data.order_id)
console.log(res.data.amount)
}
})
Ruby:
paykassa = Paykassa.new
private_hash = params[:private_hash]
result = paykassa.confirm_order(private_hash)
raise StandardError.new(result[:message]) if result[:error]
order_id = res[:data][:order_id]
amount = res[:data][:amount]
Сама интеграция довольно проста. Все, что тебе нужно, – это следовать приведенным инструкциям.
Комментарии
Проблема с подключением PayKassa. Выставление счетов сделали, а проверка платежа не получается. Поможете? sergeyantonov_ya.ru
А какую информацию можно получить по id заказа? Интересует будет ли там например eth пдрес покупателя
мгновеннопринимать платежи в криптовалюте на своем ресурсе, а также производить многочисленные выплаты с использованием множества (?) платежных систем.Что не так? Ниже представлен скрин с перечнем платежных систем. И их немало.
Вы ввод от вывода отличаете?
Пардон, вы именно о выплатах. Но суть не меняется: http://prntscr.com/pd6xyz