README
NodeJS Yandex.Money API SDK
Requirements
- requests == 2.9.x
Links
Getting started
Installation
Simply run npm install yandex-money-sdk
Payments from the Yandex.Money wallet
Using Yandex.Money API requires following steps
Obtain token URL and redirect user's browser to Yandex.Money service. Note:
client_id,redirect_uri,client_secretare 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 urlAfter that, user fills Yandex.Money HTML form and user is redirected back to
REDIRECT_URI?code=CODE.You should immediately exchange
CODEwithACCESS_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);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
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 });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; });Process the request with process-payment.
externalPayment.process({"request_id": requestId}, function (err, data) { if(err) { // process error } // process data });
Side notes
- Each API function recieves a callback in args
err,dataandresponse. Whereerris equal tonullwhen status of response is2**,datais JSONed response andresponseis a full server response(you can checkresponse.statusCodefor example).
Running tests
- Clone this repo, install deps and devDeps.
- Create
test/constants.jsusingtest/constants.js.sampleas a template. - Run
npm run testand check the output.
