ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ API ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° CloudPayments.
ΠΡΠΎΠ΅ΠΊΡ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ TypeScript ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΡ es7. ΠΠ΅ΡΡΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Node.js 6 ΠΈ Π²ΡΡΠ΅.
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ NPM:
npm i -S cloudpayments
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
import {ClientService} from 'cloudpayments';
const client = new ClientService({/* options */});
// Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ...ΠΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ API Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ,
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ClientOptions.
| Method | Options | Return | Description |
|---|---|---|---|
getClientApi |
ClientApi |
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ClientApi Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ API |
|
getReceiptApi |
ReceiptApi |
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ReceiptApi Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ API ΠΊΠ°ΡΡΡ |
|
getNotificationHandlers |
NotificationHandlers |
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ClientHandlers Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ |
|
createClientApi |
ClientOptions |
ClientApi |
Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ClientApi |
createReceiptApi |
ClientOptions |
ReceiptApi |
Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ReceiptApi |
createNotificationHandlers |
ClientOptions |
NotificationHandlers |
Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° NotificationHandlers |
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΡ.
| Option | Type | Description |
|---|---|---|
endpoint |
string |
ΠΠ΄ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° API, ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ https://api.cloudpayments.ru |
privateKey |
string |
ΠΠ°Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ |
publicId |
string |
ΠΠ°Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ |
org.taxationSystem |
TaxationSystem |
Π‘ΠΈΡΡΠ΅ΠΌΠ° Π½Π°Π»ΠΎΠ³ΠΎΠΎΠ±Π»Π°ΠΆΠ΅Π½ΠΈΡ |
org.inn |
number |
ΠΠΠ |
ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ API:
| ΠΠ΅ΡΠΎΠ΄ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ |
|---|---|---|
| chargeCryptogramPayment | ΠΠΏΠ»Π°ΡΠ° ΠΏΠΎ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ | https://developers.cloudpayments.ru/#oplata-po-kriptogramme |
| authorizeCryptogramPayment | ΠΠΏΠ»Π°ΡΠ° ΠΏΠΎ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ (ΠΏΡΠ΅Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ) | https://developers.cloudpayments.ru/#oplata-po-kriptogramme |
| chargeTokenPayment | ΠΠΏΠ»Π°ΡΠ° ΠΏΠΎ ΡΠΎΠΊΠ΅Π½Ρ | https://developers.cloudpayments.ru/#oplata-po-tokenu-rekarring |
| authorizeTokenPayment | ΠΠΏΠ»Π°ΡΠ° ΠΏΠΎ ΡΠΎΠΊΠ΅Π½Ρ (ΠΏΡΠ΅Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ) | https://developers.cloudpayments.ru/#oplata-po-tokenu-rekarring |
| confirm3DSPayment | ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° 3-D Secure | https://developers.cloudpayments.ru/#obrabotka-3-d-secure |
| confirmPayment | ΠΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ»Π°ΡΡ | https://developers.cloudpayments.ru/#podtverzhdenie-oplaty |
| refundPayment | ΠΠΎΠ·Π²ΡΠ°Ρ Π΄Π΅Π½Π΅Π³ | https://developers.cloudpayments.ru/#vozvrat-deneg |
| voidPayment | ΠΡΠΌΠ΅Π½Π° ΠΎΠΏΠ»Π°ΡΡ | https://developers.cloudpayments.ru/#otmena-oplaty |
| getPayment | ΠΡΠΎΡΠΌΠΎΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ | https://developers.cloudpayments.ru/#prosmotr-tranzaktsii |
| findPaymentByInvoiceId | ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ°ΡΡΡΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ° | https://developers.cloudpayments.ru/#proverka-statusa-platezha |
| getPaymentsList | ΠΡΠ³ΡΡΠ·ΠΊΠ° ΡΠΏΠΈΡΠΊΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ | https://developers.cloudpayments.ru/#vygruzka-spiska-tranzaktsiy |
| createOrder | Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ° Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΎ ΠΏΠΎΡΡΠ΅ | https://developers.cloudpayments.ru/#sozdanie-scheta-dlya-otpravki-po-pochte |
| createSubscription | Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π½Π° ΡΠ΅ΠΊΡΡΡΠ΅Π½ΡΠ½ΡΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆΠΈ | https://developers.cloudpayments.ru/#sozdanie-podpiski-na-rekurrentnye-platezhi |
| updateSubscription | ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π½Π° ΡΠ΅ΠΊΡΡΡΠ΅Π½ΡΠ½ΡΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆΠΈ | https://developers.cloudpayments.ru/#izmenenie-podpiski-na-rekurrentnye-platezhi |
| cancelSubscription | ΠΡΠΌΠ΅Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π½Π° ΡΠ΅ΠΊΡΡΡΠ΅Π½ΡΠ½ΡΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆΠΈ | https://developers.cloudpayments.ru/#izmenenie-podpiski-na-rekurrentnye-platezhi |
| getSubscription | ΠΠ°ΠΏΡΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ΅ | https://developers.cloudpayments.ru/#zapros-informatsii-o-podpiske |
| getSubscriptionsList | ΠΠΎΠΈΡΠΊ ΠΏΠΎΠ΄ΠΏΠΈΡΠΎΠΊ | https://developers.cloudpayments.ru/#poisk-podpisok |
| chargeCryptogramPayout | ΠΡΠΏΠ»Π°ΡΠ° ΠΏΠΎ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ | https://developers.cloudpayments.ru/#vyplata-po-kriptogramme |
| chargeTokenPayout | ΠΡΠΏΠ»Π°ΡΠ° ΠΏΠΎ ΡΠΎΠΊΠ΅Π½Ρ | https://developers.cloudpayments.ru/#vyplata-po-tokenu |
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ReceiptApi ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ API ΠΊΠ°ΡΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
import {createServer} from 'http';
import {ClientService, TaxationSystem, VAT, ResponseCodes, ReceiptTypes} from 'cloudpayments';
const client = new ClientService({
privateKey: 'private key',
publicId: 'public id',
org: {
taxationSystem: TaxationSystem.GENERAL,
inn: 123456789
}
});
const handlers = client.getNotificationHandlers();
const receiptApi = client.getReceiptApi();
const server = createServer(async (req, res) => {
const response = await handlers.handlePayRequest(req, async (request) => {
// ΠΡΠΎΠ²Π΅ΡΡΠΌ Π·Π°ΠΏΡΠΎΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅Π½Ρ Π·Π°ΠΊΠ°Π·Π°
if (request.Amount > 0) {
return ResponseCodes.INVALID_AMOUNT;
}
// ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΠ°
const response = await receiptApi.createReceipt(
{
Type: ReceiptTypes.Income,
invoiceId: request.InvoiceId,
accountId: request.AccountId,
},
{
// Π΅ΡΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π°Π»ΠΎΠ³ΠΎΠΎΠ±Π»Π°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π½Π°,
// Π±Π΅ΡΠ΅ΡΡΡ ΠΈΠ· Π½Π°ΡΡΡΠΎΠ΅ΠΊ ClientOptions
taxationSystem: TaxationSystem.GENERAL,
inn: 123456789,
email: 'mail@example.com',
phone: '+7123456789',
Items: [
{
label: 'ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠ° ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°',
quantity: 2,
price: 1200,
amount: 2400,
vat: VAT.VAT18,
ean13: '1234456363',
}
]
}
);
// ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΠΎ Π·Π°ΠΏΡΠΎΡ Π²ΡΡΠ°Π» Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ,
// ΠΈΠ½Π°ΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
// ΠΡΠ»ΠΈ Π²ΡΠ΅ ΠΏΡΠΎΡΠ»ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ 0
return ResponseCodes.SUCCESS;
});
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(response));
});| Method | Arguments | Return | Description |
|---|---|---|---|
createReceipt |
ReceiptTypes, Receipt |
Response<{}> |
ΠΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΠ° |
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ Receipt
Π Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ cloudpayments Π²ΡΡΡΠΎΠ΅Π½ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎ ΠΏΠ»Π°ΡΠ΅ΠΆΠ°Ρ
(ΡΠΌΠΎΡΡΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ).
Π‘ΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ:
| ΠΠ΅ΡΠΎΠ΄ | ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ° | Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|---|
handleCheckRequest |
CheckNotification | https://developers.cloudpayments.ru/#check |
handlePayRequest |
PayNotification | https://developers.cloudpayments.ru/#pay |
handleFailRequest |
FailNotification | https://developers.cloudpayments.ru/#fail |
handleRecurrentRequest |
RecurrentNotification | https://developers.cloudpayments.ru/#recurrent |
handleRefundRequest |
RefundNotification | https://developers.cloudpayments.ru/#refund |
handleReceiptRequest |
ReceiptNotification | https://developers.cloudpayments.ru/#receipt |
handleConfirmRequest |
ConfirmNotification | https://developers.cloudpayments.ru/#confirm |
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
import {createServer} from 'http';
import {ClientService, TaxationSystem, ResponseCodes} from 'cloudpayments';
const client = new ClientService({
privateKey: 'private key',
publicId: 'public id',
org: {
taxationSystem: TaxationSystem.GENERAL,
inn: 123456789
}
});
const handlers = client.getNotificationHandlers();
const server = createServer(async (req, res) => {
if (req.url == '/cloudpayments/fail') {
const response = await handlers.handleFailRequest(req, async (request) => {
// ΠΠ΅Π»Π°Π΅ΠΌ ΡΡΠΎ-ΡΠΎ Ρ ΠΈΠ½ΡΠΎΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠΌ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅
return ResponseCodes.SUCCESS;
});
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(response));
}
});ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² ΠΎΡΠ²Π΅ΡΠΎΠ².
| Field | Type | Description |
|---|---|---|
Success |
boolean |
Π£ΡΠΏΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ |
Message |
string |
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ |
MIT