123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /* Copyright 2015-2016 PayPal, Inc. */
- "use strict";
- var generate = require('../generate');
- var api = require('../api');
- /**
- * The billing agreements allows merchants to have users agree to be billed
- * for billing plans
- * @return {Object} billing agreement functions
- */
- function billingAgreement() {
- var baseURL = '/v1/payments/billing-agreements/';
- var operations = ['create', 'get', 'update', 'cancel'];
- /**
- * Search for transactions within a billing agreement
- * @param {String} id Identifier of the agreement resource for which to list transactions.
- * @param {String} start_date YYYY-MM-DD start date of range of transactions to list
- * @param {String} end_date YYYY-MM-DD end date of range of transactions to list
- * @param {Object|Function} config Configuration parameters e.g. client_id, client_secret override or callback
- * @param {Function} cb
- * @return {Object} agreement transaction list, array of agreement transaction objects
- */
- function searchTransactions(id, start_date, end_date, config, cb) {
- var date_range = {
- "start_date": start_date,
- "end_date": end_date
- };
- api.executeHttp('GET', baseURL + id + '/transactions', date_range, config, cb);
- }
- /**
- * Bill outstanding balance of an agreement
- * @param {String} id Identifier of the agreement resource for which to bill balance
- * @param {Object} data Agreement state descriptor, fields include note and amount which has two attributes, value and currency
- * @param {Object|Function} config Configuration parameters e.g. client_id, client_secret override or callback
- * @param {Function} cb
- * @return {} Returns the HTTP status of 204 if the call is successful
- */
- function billBalance(id, data, config, cb) {
- api.executeHttp('POST', baseURL + id + '/bill-balance', data, config, cb);
- }
- /**
- * Set the outstanding amount of an agreement
- * @param {String} id Identifier of the agreement resource for which to set balance
- * @param {Object} data Two attributes currency e.g. "USD" and value e.g. "100"
- * @param {Object|Function} config Configuration parameters e.g. client_id, client_secret override or callback
- * @param {Function} cb
- * @return {} Returns the HTTP status of 204 if the call is successful
- */
- function setBalance(id, data, config, cb) {
- api.executeHttp('POST', baseURL + id + '/set-balance', data, config, cb);
- }
- var ret = {
- baseURL: baseURL,
- /**
- * Execute an agreement after the buyer approves it
- * @param {String} token Payment Token of format EC-XXXXXX, appended to return url as a parameter after buyer approves agreement
- * @param {Object|Function} data Empty object or callback. Optional, will be removed in next major release.
- * @param {Object|Function} config Configuration parameters e.g. client_id, client_secret override or callback
- * @param {Function} cb
- * @return {Object} agreement object
- */
- execute: function execute(token, data, config, cb) {
- //support case where neither data nor config is provided
- if (typeof data === "function" && arguments.length === 2) {
- cb = data;
- data = {};
- }
- api.executeHttp('POST', this.baseURL + token + '/agreement-execute', data, config, cb);
- },
- /**
- * Changes agreement state to suspended, can be reactivated unlike cancelling agreement
- * @param {String} id Identifier of the agreement resource for which to suspend
- * @param {Object} data Add note attribute, reason for changing state of agreement
- * @param {Object|Function} config Configuration parameters e.g. client_id, client_secret override or callback
- * @param {Function} cb
- * @return {} Returns the HTTP status of 204 if the call is successful
- */
- suspend: function suspend(id, data, config, cb) {
- api.executeHttp('POST', this.baseURL + id + '/suspend', data, config, cb);
- },
- /**
- * Reactivate a suspended agreement
- * @param {String} id Identifier of the agreement resource for which to reactivate
- * @param {Object} data Add note attribute, reason for changing state of agreement
- * @param {Object|Function} config Configuration parameters e.g. client_id, client_secret override or callback
- * @param {Function} cb
- * @return {} Returns the HTTP status of 204 if the call is successful
- */
- reactivate: function reactivate(id, data, config, cb) {
- api.executeHttp('POST', this.baseURL + id + '/re-activate', data, config, cb);
- },
- billBalance: billBalance,
- setBalance: setBalance,
- searchTransactions: searchTransactions,
- //entries below are deprecated but provided for compatibility with 0.* versions
- bill_balance: billBalance,
- set_balance: setBalance,
- search_transactions: searchTransactions
- };
- ret = generate.mixin(ret, operations);
- return ret;
- }
- module.exports = billingAgreement;
|