Skip to content
This repository was archived by the owner on Dec 29, 2022. It is now read-only.

izatop/cloudpayments

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CloudPayments

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с API ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠ³ΠΎ сСрвиса CloudPayments.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ написан Π½Π° языкС TypeScript ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ описаниС всСх доступных интСрфСйсов. ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΠΎ стандарту es7. ВСрсия ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Node.js 6 ΠΈ Π²Ρ‹ΡˆΠ΅.

Install

Для установки ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стандартный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ NPM:

npm i -S cloudpayments

Usage

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

import {ClientService} from 'cloudpayments';

const client = new ClientService({/* options */});

// бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ° прилоТСния ...

ClientService

ΠžΠ±Ρ‰ΠΈΠΉ интСрфСйс для доступа ΠΊ API Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ СдинствСнный Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ClientOptions.

Methods

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

ClientOptions

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΌΡƒ сСрвису.

Option Type Description
endpoint string АдрСс сСрвСра API, ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ https://api.cloudpayments.ru
privateKey string Π’Π°Ρˆ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡
publicId string Π’Π°Ρˆ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡
org.taxationSystem TaxationSystem БистСма налогооблаТСния
org.inn number ИНН

ClientApi

ДоступныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ клиСнтского 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

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ 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));
});

Methods

Method Arguments Return Description
createReceipt ReceiptTypes, Receipt Response<{}> ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅Ρ‚ запрос Π½Π° созданиС Ρ‡Π΅ΠΊΠ°

Receipt

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Receipt

Handlers

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ 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));
    }
});

Response

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ интСрфСйс для всСх Ρ‚ΠΈΠΏΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ².

Field Type Description
Success boolean УспСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
Message string Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅

License

MIT

About

Node.js Client for CloudPayments API

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5