yandex-money-sdk
DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/yandex-money-sdk package

0.1.7 • Public • Published

Build Status Coverage Status

NodeJS Yandex.Money API SDK

Requirements

  1. requests == 2.9.x

Links

  1. Yandex.Money API page: Ru, En

Getting started

Installation

Simply run npm install yandex-money-sdk

Payments from the Yandex.Money wallet

Using Yandex.Money API requires following steps

  1. Obtain token URL and redirect user's browser to Yandex.Money service. Note: client_id, redirect_uri, client_secret are constants that you get, when register app in Yandex.Money API.

    var yandexMoney = require("yandex-money-sdk");
    // scope is array(e.g. scope = ['account-info', 'operation-history'])
    url = yandexMoney.Wallet.buildObtainTokenUrl(clientId, redirectURI, scope);
    // redirect user to url
  2. After that, user fills Yandex.Money HTML form and user is redirected back to REDIRECT_URI?code=CODE.

  3. You should immediately exchange CODE with ACCESS_TOKEN.

    function tokenComplete(err, data) {
        if(err) {
            // process error
        }
        var access_token = data.access_token;
        // save it to DB, config, etc..
    }
    yandexMoney.Wallet.getAccessToken(clientId, code, redirectURI, clientSecret,
        tokenComplete);
  4. Now you can use Yandex.Money API.

    var api = new yandexMoney.Wallet(access_token);
     
    // get account info
    api.accountInfo(function infoComplete(err, data) {
        if(err) {
            // process error
        }
        // process data
        var balance = data.balance;
        var user_account = data.account;
        // etc..
    });
     
    // fetch last 3 records of operation history
    api.operationHistory({ records: 3 }, function operationHisComplete(err, data) {
        if(err) {
            // process error
        }
        // process data
        var opertaions = data.operations;
        var first_title = operations[0].title;
        // etc..
    });
     
    //make request payment and process it
    var options = {
        "pattern_id": "p2p",
        "to": "410011161616877",
        "amount_due": "0.02",
        "comment": "test payment comment from yandex-money-nodejs",
        "message": "test payment message from yandex-money-nodejs",
        "label": "testPayment",
        "test_payment": true,
        "test_result": "success"
    };
    api.requestPayment(options, function requestComplete(err, data) {
        if(err) {
            // process error
        }
        if(data.status !== "success") {
            // process failure
        }
        var request_id = data.request_id;
     
        api.processPayment({
            "request_id": request_id
            }, processComplete);
    });
     
    function processComplete(err, data) {
        if(err) {
            // process error
        }
        // process status
    }

Payments from bank cards without authorization

  1. Fetch instantce-id(ussually only once for every client. You can store result in DB).

    yandexMoney.ExternalPayment.getInstanceId(clientId,
            function getInstanceComplete(err, data) {
        if(err) {
            // process error
        }
        var instanceId = data.instance_id;
        // save it to DB
     
    });
  2. Make request payment

    var externalPayment = new yandexMoney.ExternalPayment(instanceId)
     
    var options = {
        // pattern_id, etc..
    };
     
    externalPayment.request(options, function requestComplete(err, data) {
        if(err) {
            // process error
        }
        var requestId = data.request_id;
    });
  3. Process the request with process-payment.

    externalPayment.process({"request_id": requestId}, function (err, data) {
        if(err) {
            // process error
        }
        // process data
    });

Side notes

  1. Each API function recieves a callback in args err, data and response. Where err is equal to null when status of response is 2**, data is JSONed response and response is a full server response(you can check response.statusCode for example).

Running tests

  1. Clone this repo, install deps and devDeps.
  2. Create test/constants.js using test/constants.js.sample as a template.
  3. Run npm run test and check the output.

Dependents (0)

Package Sidebar

Install

npm i yandex-money-sdk

Weekly Downloads

26

Version

0.1.7

License

MIT

Last publish

Collaborators

  • romanvt
  • mrkashlakov
  • yalovek
  • i.lomtev