diff --git a/yandex-money-sdk/yandex-money-sdk-tests.ts b/yandex-money-sdk/yandex-money-sdk-tests.ts new file mode 100644 index 000000000..9641fdf48 --- /dev/null +++ b/yandex-money-sdk/yandex-money-sdk-tests.ts @@ -0,0 +1,124 @@ +/// + +import * as ymsdk from 'yandex-money-sdk'; + +let wallet: ymsdk.Wallet; +let externalPayment: ymsdk.ExternalPayment; + +{ + let clientId: string; + let redirectURI: string; + let scope: string[]; + let result: string; + + result = ymsdk.Wallet.buildObtainTokenUrl(clientId, redirectURI, scope); +} + +{ + let clientId: string; + let code: string; + let redirectURI: string; + let clientSecret: string; + let callback: ymsdk.ResponseCallback; + + ymsdk.Wallet.getAccessToken(clientId, code, redirectURI, clientSecret, callback); +} + +{ + let token: string; + let revoke_all: any; + let callback: ymsdk.ResponseCallback; + + ymsdk.Wallet.revokeToken(token, revoke_all, callback); +} + +{ + let accessToken: string; + let result: ymsdk.Wallet; + + result = new ymsdk.Wallet(accessToken); +} + +{ + let params: YandexMoneySDK.Wallet.SendAuthenticatedRequestParams; + let callback: ymsdk.ResponseCallback; + + wallet.sendAuthenticatedRequest(params, callback) +} + +{ + let callback: ymsdk.ResponseCallback; + + wallet.accountInfo(callback); +} + +{ + let options: YandexMoneySDK.Wallet.OperationHistoryOptions; + let callback: ymsdk.ResponseCallback; + + wallet.operationHistory(options, callback); +} + +{ + let operation_id: string; + let callback: ymsdk.ResponseCallback; + + wallet.operationDetails(operation_id, callback); +} + +{ + let options: YandexMoneySDK.Wallet.RequestPaymentOptions; + let callback: ymsdk.ResponseCallback; + + wallet.requestPayment(options, callback); +} + +{ + let options: YandexMoneySDK.Wallet.ProcessPaymentOptions; + let callback: ymsdk.ResponseCallback; + + wallet.processPayment(options, callback); +} + +{ + let operation_id: string; + let protectionCode: string; + let callback: ymsdk.ResponseCallback; + + wallet.incomingTransferAccept(operation_id, protectionCode, callback); +} + +{ + let operation_id: string; + let callback: ymsdk.ResponseCallback; + + wallet.incomingTransferReject(operation_id, callback); +} + +{ + let clientId: string; + let callback: ymsdk.ResponseCallback; + + ymsdk.ExternalPayment.getInstanceId(clientId, callback); +} + +{ + let instanceId: string; + let result: ymsdk.ExternalPayment; + + result = new ymsdk.ExternalPayment(instanceId); +} + +{ + let options: YandexMoneySDK.ExternalPayment.RequestOptions; + let callback: ymsdk.ResponseCallback; + + externalPayment.request(options, callback); +} + +{ + let options: YandexMoneySDK.ExternalPayment.ProcessOptions; + let callback: ymsdk.ResponseCallback; + + externalPayment.process(options, callback); +} diff --git a/yandex-money-sdk/yandex-money-sdk.d.ts b/yandex-money-sdk/yandex-money-sdk.d.ts new file mode 100644 index 000000000..0fda60f2f --- /dev/null +++ b/yandex-money-sdk/yandex-money-sdk.d.ts @@ -0,0 +1,308 @@ +// Type definitions for NodeJS Yandex.Money API SDK +// Project: https://github.com/yandex-money/yandex-money-sdk-nodejs +// Definitions by: Ilya Mochalov +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare namespace YandexMoneySDK { + namespace Wallet { + interface GetAccessTokenResult { + access_token?: string; + error?: string; + } + + interface SendAuthenticatedRequestParams { + headers?: any; + data?: any; + url: string; + } + + interface AccountInfoResult { + account: string; + balance: number; + currency: string; + account_status: string; + account_type: string; + avatar?: { + url: string; + ts: string; + }; + balance_details?: { + total: number; + available: number; + deposition_pending?: number; + blocked?: number; + debt?: number; + hold?: number; + } + cards_linked?: { + pan_fragment?: string; + type?: string; + }[]; + } + + interface OperationHistoryOptions { + type: string; + label: string; + from?: string|Date; + till?: string|Date; + start_record?: string; + records?: number; + details?: boolean; + } + + interface OperationHistoryResult { + error?: string; + next_record?: string; + operations?: { + operation_id: string; + status: string; + datetime: string; + title: string; + pattern_id?: string; + direction: string; + amount: number; + label?: string; + type?: string; + }[]; + } + + interface OperationDetailsResult { + error?: string; + operation_id?: string; + status?: string; + pattern_id?: string; + direction?: string; + amount?: number; + amount_due?: number; + fee?: number; + datetime?: string; + title?: string; + sender?: string; + recipient?: string; + recipient_type?: string; + message?: string; + comment?: string; + codepro?: boolean; + protection_code?: string; + expires?: string; + answer_datetime?: string; + label?: string; + details?: string; + type?: string; + digital_goods?: { + article: { + merchantArticleId: string; + serial: string; + secret: string; + }[]; + bonus: { + serial: string; + secret: string; + }[]; + }; + } + + interface RequestPaymentOptions { + pattern_id: string; + to?: string; + amount?: number; + amount_due?: number; + comment?: string; + message?: string; + label?: string; + codepro?: boolean; + hold_for_pickup?: boolean; + expire_period?: number; + 'phone-number'?: string; + [key: string]: any + + test_payment?: boolean; + test_card?: string; + test_result?: string; + } + + interface RequestPaymentResult { + status: string; + error?: string; + money_source?: { + wallet?: { + allowed: boolean; + }; + cards?: { + allowed: boolean; + csc_required: boolean; + items: { + id: string; + pan_fragment: string; + type: string; + }[]; + }; + }; + request_id?: string; + contract_amount?: number; + balance?: number; + recipient_account_status?: string; + recipient_account_type?: string; + protection_code?: string; + account_unblock_uri?: string; + ext_action_uri?: string; + } + + interface ProcessPaymentOptions { + request_id: string; + money_source?: string; + csc?: string; + ext_auth_success_uri?: string; + ext_auth_fail_uri?: string; + + test_payment?: boolean; + test_card?: string; + test_result?: string; + } + + interface ProcessPaymentResult { + status: string; + error?: string; + payment_id?: string; + balance?: number; + invoice_id?: string; + payer?: string; + payee?: string; + credit_amount?: number; + account_unblock_uri?: string; + hold_for_pickup_link?: string; + acs_uri?: string; + acs_params?: { + MD: string; + PaReq: string; + [key: string]: any + }; + next_retry?: number; + digital_goods?: { + article: { + merchantArticleId: string; + serial: string; + secret: string; + }[]; + bonus: { + serial: string; + secret: string; + }[]; + }; + } + + interface IncomingTransferAcceptResult { + status: string; + error?: string; + protection_code_attempts_available?: number; + ext_action_uri?: string; + } + + interface IncomingTransferRejectResult { + status: string; + error?: string; + } + } + + namespace ExternalPayment { + interface GetInstanceIdResult { + status: string; + error?: string; + instance_id?: string; + } + + interface RequestOptions { + pattern_id: string; + // instance_id: string; // the method always overwrites this value + to?: string; + amount?: number; + amount_due?: number; + message?: string; + [key: string]: any; + } + + interface RequestResult { + status: string; + error?: string; + request_id?: string; + contract_amount?: number; + title?: string; + } + + interface ProcessOptions { + request_id: string; + // instance_id: string; // the method always overwrites this value + ext_auth_success_uri: string; + ext_auth_fail_uri: string; + request_token?: boolean; + money_source_token?: string; + csc?: string; + } + + interface ProcessResult { + status: string; + error?: string; + acs_uri?: string; + acs_params?: { + MD: string; + PaReq: string; + [key: string]: any + }; + money_source?: { + type: string; + payment_card_type: string; + pan_fragment?: string; + money_source_token?: string; + }; + next_retry?: number; + invoice_id?: string; + } + } +} + +declare module "yandex-money-sdk" { + import * as http from 'http'; + + export interface ResponseCallback { + (err: any, body: TBody, response: http.IncomingMessage): any; + } + + export interface WalletStatic { + new (accessToken: string): Wallet; + buildObtainTokenUrl(clientId: string, redirectURI: string, scope: string[]): string; + getAccessToken(clientId: string, code: string, redirectURI: string, clientSecret: string, callback: ResponseCallback): void; + revokeToken(token: string, revoke_all: any, callback: ResponseCallback): void; // revoke_all missing in documentation + } + + export interface Wallet { + sendAuthenticatedRequest(params: YandexMoneySDK.Wallet.SendAuthenticatedRequestParams, callback: ResponseCallback): void; + accountInfo(callback: ResponseCallback): void; + operationHistory(options: YandexMoneySDK.Wallet.OperationHistoryOptions, callback: ResponseCallback): void; + operationDetails(operation_id: string, callback: ResponseCallback): void; + requestPayment(options: YandexMoneySDK.Wallet.RequestPaymentOptions, callback: ResponseCallback): void; + processPayment(options: YandexMoneySDK.Wallet.ProcessPaymentOptions, callback: ResponseCallback): void; + incomingTransferAccept(operation_id: string, protectionCode: string, callback: ResponseCallback): void; + incomingTransferReject(operation_id: string, callback: ResponseCallback): void; + } + + export interface ExternalPaymentStatic { + new (instanceId: string): ExternalPayment; + getInstanceId(clientId: string, callback: ResponseCallback): void; + } + + export interface ExternalPayment { + request(options: YandexMoneySDK.ExternalPayment.RequestOptions, callback: ResponseCallback): void; + process(options: YandexMoneySDK.ExternalPayment.ProcessOptions, callback: ResponseCallback): void; + } + + export interface Config { + MONEY_URL: string; + SP_MONEY_URL: string; + } + + export var Wallet: WalletStatic; + export var ExternalPayment: ExternalPaymentStatic; + export var Config: Config; +}