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.

    Install

    npm i yandex-money-sdk

    DownloadsWeekly Downloads

    19

    Version

    0.1.7

    License

    MIT

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar