yandex-money-sdk
v0.1.7
Published
SDK for working with yandex money API
Downloads
85
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_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
After that, user fills Yandex.Money HTML form and user is redirected back to
REDIRECT_URI?code=CODE
.You should immediately exchange
CODE
withACCESS_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
,data
andresponse
. Whereerr
is equal tonull
when status of response is2**
,data
is JSONed response andresponse
is a full server response(you can checkresponse.statusCode
for example).
Running tests
- Clone this repo, install deps and devDeps.
- Create
test/constants.js
usingtest/constants.js.sample
as a template. - Run
npm run test
and check the output.