Skip to content

Commit

Permalink
Merge pull request #22 from Mangopay/feature/mandates
Browse files Browse the repository at this point in the history
Mandates Feature
  • Loading branch information
hobailey authored Sep 1, 2016
2 parents 84c7a7c + f73c58e commit 84d67b0
Show file tree
Hide file tree
Showing 9 changed files with 589 additions and 19 deletions.
110 changes: 110 additions & 0 deletions docs/Mandates.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
# Mandates

[MangoPay Mandates API Reference](https://docs.mangopay.com/endpoints/v2.01/mandates)



* * *

### Mandates.create(mandate, callback, options)

Create a new Mandate

**Parameters**

**mandate**: `Object`, Mandate object

**callback**: `function`, Callback function

**options**: `Object`, Request options

**Returns**: `Object`, Promise of the request


### Mandates.getAll(callback, options)

Get all mandates

**Parameters**

**callback**: `function`, Callback function

**options**: `Object`, Request options

**Returns**: `Object`, Request promise


### Mandates.get(mandateId, callback, options)

Get mandate by ID

**Parameters**

**mandateId**: `number`, Mandate identifier

**callback**: `function`, Callback function

**options**: `Object`, Request options

**Returns**: `Object`, Request promise


### Mandates.cancel(mandateId, callback, options)

Cancel a mandate

**Parameters**

**mandateId**: `number`, Mandate identifier

**callback**: `function`, Callback function

**options**: `Object`, Request options

**Returns**: `Object`, Request promise


### Mandates.getMandatesForUser(userId, callback, options)

Gets user's mandates

**Parameters**

**userId**: `number`, User identifier

**callback**: `function`, Callback function

**options**: `Object`, Request options

**Returns**: `Object`, Request promise


### Mandates.getMandatesForBankAccount(userId, bankAccountId, callback, options)

Gets bank account mandates

**Parameters**

**userId**: `number`, User identifier

**bankAccountId**: `number`, Bank Account identifier

**callback**: `function`, Callback function

**options**: `Object`, Request options

**Returns**: `Object`, Request promise



* * *










38 changes: 22 additions & 16 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,17 @@
## All available functions
| Function | Description | Source Code |
| -------- | ----------- | ----------- |
|[Mandates.cancel](Mandates.md) | Cancel a mandate | [../lib/services/Mandates.js](../lib/services/Mandates.js) |
|[Disputes.closeDispute](Disputes.md) | Close dispute | [../lib/services/Disputes.js](../lib/services/Disputes.js) |
|[Disputes.contestDispute](Disputes.md) | Contest dispute | [../lib/services/Disputes.js](../lib/services/Disputes.js) |
|[Hooks.create](Hooks.md) | Create new hook | [../lib/services/Hooks.js](../lib/services/Hooks.js) |
|[PayIns.create](PayIns.md) | Create new pay-in | [../lib/services/PayIns.js](../lib/services/PayIns.js) |
|[CardPreAuthorizations.create](CardPreAuthorizations.md) | Create new pre-authorization | [../lib/services/CardPreAuthorizations.js](../lib/services/CardPreAuthorizations.js) |
|[PayOuts.create](PayOuts.md) | Create new pay-out | [../lib/services/PayOuts.js](../lib/services/PayOuts.js) |
|[Wallets.create](Wallets.md) | Create new wallet | [../lib/services/Wallets.js](../lib/services/Wallets.js) |
|[CardRegistrations.create](CardRegistrations.md) | Create new card registration | [../lib/services/CardRegistrations.js](../lib/services/CardRegistrations.js) |
|[Hooks.create](Hooks.md) | Create new hook | [../lib/services/Hooks.js](../lib/services/Hooks.js) |
|[Transfers.create](Transfers.md) | Create new transfer | [../lib/services/Transfers.js](../lib/services/Transfers.js) |
|[Wallets.create](Wallets.md) | Create new wallet | [../lib/services/Wallets.js](../lib/services/Wallets.js) |
|[Mandates.create](Mandates.md) | Create a new Mandate | [../lib/services/Mandates.js](../lib/services/Mandates.js) |
|[PayOuts.create](PayOuts.md) | Create new pay-out | [../lib/services/PayOuts.js](../lib/services/PayOuts.js) |
|[Users.create](Users.md) | Create a new user | [../lib/services/Users.js](../lib/services/Users.js) |
|[Users.createBankAccount](Users.md) | Create bank account for user | [../lib/services/Users.js](../lib/services/Users.js) |
|[Disputes.createDisputeDocument](Disputes.md) | Creates document for dispute | [../lib/services/Disputes.js](../lib/services/Disputes.js) |
Expand All @@ -40,26 +42,28 @@
|[PayIns.createRefund](PayIns.md) | Create refund for pay-in object | [../lib/services/PayIns.js](../lib/services/PayIns.js) |
|[Transfers.createRefund](Transfers.md) | Create refund for transfer object | [../lib/services/Transfers.js](../lib/services/Transfers.js) |
|[Disputes.createSettlementTransfer](Disputes.md) | Creates settlement transfer | [../lib/services/Disputes.js](../lib/services/Disputes.js) |
|[Responses.get](Responses.md) | Get response from previous call | [../lib/services/Responses.js](../lib/services/Responses.js) |
|[Cards.get](Cards.md) | Get card | [../lib/services/Cards.js](../lib/services/Cards.js) |
|[PayIns.get](PayIns.md) | Get pay-in | [../lib/services/PayIns.js](../lib/services/PayIns.js) |
|[CardPreAuthorizations.get](CardPreAuthorizations.md) | Get pre-authorization object | [../lib/services/CardPreAuthorizations.js](../lib/services/CardPreAuthorizations.js) |
|[Hooks.get](Hooks.md) | Get hook | [../lib/services/Hooks.js](../lib/services/Hooks.js) |
|[Disputes.get](Disputes.md) | Get dispute | [../lib/services/Disputes.js](../lib/services/Disputes.js) |
|[Responses.get](Responses.md) | Get response from previous call | [../lib/services/Responses.js](../lib/services/Responses.js) |
|[Mandates.get](Mandates.md) | Get mandate by ID | [../lib/services/Mandates.js](../lib/services/Mandates.js) |
|[DisputeDocuments.get](DisputeDocuments.md) | Gets dispute's document | [../lib/services/DisputeDocuments.js](../lib/services/DisputeDocuments.js) |
|[Users.get](Users.md) | Get natural or legal user by ID | [../lib/services/Users.js](../lib/services/Users.js) |
|[Wallets.get](Wallets.md) | Get pay-in | [../lib/services/Wallets.js](../lib/services/Wallets.js) |
|[CardPreAuthorizations.get](CardPreAuthorizations.md) | Get pre-authorization object | [../lib/services/CardPreAuthorizations.js](../lib/services/CardPreAuthorizations.js) |
|[Refunds.get](Refunds.md) | Get events | [../lib/services/Refunds.js](../lib/services/Refunds.js) |
|[Hooks.get](Hooks.md) | Get hook | [../lib/services/Hooks.js](../lib/services/Hooks.js) |
|[PayOuts.get](PayOuts.md) | Get payout | [../lib/services/PayOuts.js](../lib/services/PayOuts.js) |
|[KycDocuments.get](KycDocuments.md) | Get KycDocument | [../lib/services/KycDocuments.js](../lib/services/KycDocuments.js) |
|[Users.get](Users.md) | Get natural or legal user by ID | [../lib/services/Users.js](../lib/services/Users.js) |
|[Refunds.get](Refunds.md) | Get events | [../lib/services/Refunds.js](../lib/services/Refunds.js) |
|[CardRegistrations.get](CardRegistrations.md) | Get registration | [../lib/services/CardRegistrations.js](../lib/services/CardRegistrations.js) |
|[Transfers.get](Transfers.md) | Get transfer | [../lib/services/Transfers.js](../lib/services/Transfers.js) |
|[KycDocuments.getAll](KycDocuments.md) | Get all KycDocuments | [../lib/services/KycDocuments.js](../lib/services/KycDocuments.js) |
|[Events.getAll](Events.md) | Get events | [../lib/services/Events.js](../lib/services/Events.js) |
|[Hooks.getAll](Hooks.md) | Get all hooks | [../lib/services/Hooks.js](../lib/services/Hooks.js) |
|[Cards.get](Cards.md) | Get card | [../lib/services/Cards.js](../lib/services/Cards.js) |
|[KycDocuments.get](KycDocuments.md) | Get KycDocument | [../lib/services/KycDocuments.js](../lib/services/KycDocuments.js) |
|[DisputeDocuments.getAll](DisputeDocuments.md) | Gets dispute's documents for client | [../lib/services/DisputeDocuments.js](../lib/services/DisputeDocuments.js) |
|[Users.getAll](Users.md) | Get all users | [../lib/services/Users.js](../lib/services/Users.js) |
|[Disputes.getAll](Disputes.md) | Get all disputes | [../lib/services/Disputes.js](../lib/services/Disputes.js) |
|[KycDocuments.getAll](KycDocuments.md) | Get all KycDocuments | [../lib/services/KycDocuments.js](../lib/services/KycDocuments.js) |
|[Users.getAll](Users.md) | Get all users | [../lib/services/Users.js](../lib/services/Users.js) |
|[Hooks.getAll](Hooks.md) | Get all hooks | [../lib/services/Hooks.js](../lib/services/Hooks.js) |
|[Mandates.getAll](Mandates.md) | Get all mandates | [../lib/services/Mandates.js](../lib/services/Mandates.js) |
|[Events.getAll](Events.md) | Get events | [../lib/services/Events.js](../lib/services/Events.js) |
|[Users.getBankAccount](Users.md) | Get all bank accounts for user | [../lib/services/Users.js](../lib/services/Users.js) |
|[Users.getBankAccounts](Users.md) | Get all bank accounts for user | [../lib/services/Users.js](../lib/services/Users.js) |
|[Users.getCards](Users.md) | Get all cards for user | [../lib/services/Users.js](../lib/services/Users.js) |
Expand All @@ -69,6 +73,8 @@
|[Users.getKycDocument](Users.md) | Get KYC document | [../lib/services/Users.js](../lib/services/Users.js) |
|[Users.getKycDocuments](Users.md) | Get all KYC documents for user | [../lib/services/Users.js](../lib/services/Users.js) |
|[Users.getLegal](Users.md) | Get legal user by ID | [../lib/services/Users.js](../lib/services/Users.js) |
|[Mandates.getMandatesForBankAccount](Mandates.md) | Gets bank account mandates | [../lib/services/Mandates.js](../lib/services/Mandates.js) |
|[Mandates.getMandatesForUser](Mandates.md) | Gets user's mandates | [../lib/services/Mandates.js](../lib/services/Mandates.js) |
|[Users.getNatural](Users.md) | Get natural user by ID | [../lib/services/Users.js](../lib/services/Users.js) |
|[Disputes.getRepudiation](Disputes.md) | Gets repudiation | [../lib/services/Disputes.js](../lib/services/Disputes.js) |
|[Disputes.getSettlementTransfer](Disputes.md) | Gets settlement transfer | [../lib/services/Disputes.js](../lib/services/Disputes.js) |
Expand All @@ -77,12 +83,12 @@
|[Disputes.getTransactions](Disputes.md) | Gets dispute's transactions | [../lib/services/Disputes.js](../lib/services/Disputes.js) |
|[Users.getWallets](Users.md) | Get all wallets accounts for user | [../lib/services/Users.js](../lib/services/Users.js) |
|[Disputes.resubmitDispute](Disputes.md) | This method is used to resubmit a Dispute if it is reopened requiring more docs | [../lib/services/Disputes.js](../lib/services/Disputes.js) |
|[Disputes.update](Disputes.md) | Update dispute's tag | [../lib/services/Disputes.js](../lib/services/Disputes.js) |
|[CardRegistrations.update](CardRegistrations.md) | Update card registration | [../lib/services/CardRegistrations.js](../lib/services/CardRegistrations.js) |
|[Disputes.update](Disputes.md) | Update dispute's tag | [../lib/services/Disputes.js](../lib/services/Disputes.js) |
|[CardPreAuthorizations.update](CardPreAuthorizations.md) | Update pre-authorization object | [../lib/services/CardPreAuthorizations.js](../lib/services/CardPreAuthorizations.js) |
|[Cards.update](Cards.md) | Update card | [../lib/services/Cards.js](../lib/services/Cards.js) |
|[Hooks.update](Hooks.md) | Save hook | [../lib/services/Hooks.js](../lib/services/Hooks.js) |
|[Users.update](Users.md) | Save user | [../lib/services/Users.js](../lib/services/Users.js) |
|[Wallets.update](Wallets.md) | Update wallet | [../lib/services/Wallets.js](../lib/services/Wallets.js) |
|[Cards.update](Cards.md) | Update card | [../lib/services/Cards.js](../lib/services/Cards.js) |
|[Disputes.updateDisputeDocument](Disputes.md) | Update dispute document | [../lib/services/Disputes.js](../lib/services/Disputes.js) |
|[Users.updateKycDocument](Users.md) | Save KYC document | [../lib/services/Users.js](../lib/services/Users.js) |
3 changes: 2 additions & 1 deletion lib/Model.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
var _ = require('underscore');

function Model(data) {
_.extend(this, data);
var nonNullDefaults = _.omit(this.defaults, _.isEmpty);
_.extend(this, nonNullDefaults, data);
this.initialize(data);
}

Expand Down
10 changes: 9 additions & 1 deletion lib/apiMethods.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ module.exports = {
"payins_preauthorized-direct_create" : [ "/${apiVersion}/${clientId}/payins/preauthorized/direct/", "POST" ],
"payins_bankwire-direct_create" : [ "/${apiVersion}/${clientId}/payins/bankwire/direct/", "POST" ],
"payins_directdebit-web_create" : [ "/${apiVersion}/${clientId}/payins/directdebit/web", "POST" ],
"payins_directdebit-direct_create" : [ "/${apiVersion}/${clientId}/payins/directdebit/direct", "POST" ],
"payins_get" : [ "/${apiVersion}/${clientId}/payins/${id}", "GET" ],
"payins_createrefunds" : [ "/${apiVersion}/${clientId}/payins/${id}/refunds", "POST" ],

Expand Down Expand Up @@ -95,5 +96,12 @@ module.exports = {
"disputes_repudiation_get" : [ "/${apiVersion}/${clientId}/repudiations/${id}", "GET"],

"disputes_repudiation_create_settlement" : [ "/${apiVersion}/${clientId}/repudiations/${id}/settlementtransfer", "POST"],
"disputes_repudiation_get_settlement" : [ "/${apiVersion}/${clientId}/settlements/${id}", "GET"]
"disputes_repudiation_get_settlement" : [ "/${apiVersion}/${clientId}/settlements/${id}", "GET"],

"mandates_directdebit-web_create" : ["/${apiVersion}/${clientId}/mandates/directdebit/web/", "POST"],
"mandates_get" : ["/${apiVersion}/${clientId}/mandates/${id}", "GET"],
"mandates_cancel" : ["/${apiVersion}/${clientId}/mandates/${id}/cancel", "PUT"],
"mandates_all" : ["/${apiVersion}/${clientId}/mandates", "GET"],
"mandates_get_for_user" : ["/${apiVersion}/${clientId}/users/{$id}/mandates", "GET"],
"mandates_get_for_bank_account" : ["/${apiVersion}/${clientId}/users/{$id}/bankaccounts/${bankAccountId}/mandates", "GET"]
};
65 changes: 65 additions & 0 deletions lib/models/Mandate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
var _ = require('underscore');
var Model = require('../Model');

var Mandate = Model.extend({
defaults: {
/**
* When the item was created
*/
CreationDate: null,
/**
* Custom data that you can add to this item
*/
Tag: null,
/**
* An ID of a Bank Account
*/
BankAccountId: null,
/**
* The object owner's UserId
*/
UserId: null,
/**
* The URL to redirect to after payment (whether successful or not)
*/
ReturnURL: null,
/**
* The URL to redirect to user to for them to proceed with the payment
*/
RedirectURL: null,
/**
* The URL to download the mandate
*/
DocumentURL: null,
/**
* The language to use for the mandate confirmation page - needs to be the ISO code of the language
*/
Culture: null,
/**
* The type of mandate, but will only be completed once the mandate has been submitted
*/
Scheme: null,
/**
* The status of the mandate
*/
Status: null,
/**
* The result code
*/
ResultCode: null,
/**
* A verbal explanation of the ResultCode
*/
ResultMessage: null,
/**
* The execution type for creating the mandate
*/
ExecutionType: 'WEB',
/**
* The type of Mandate, defaults to DIRECT_DEBIT
*/
MandateType: 'DIRECT_DEBIT'
}
});

module.exports = Mandate;
6 changes: 6 additions & 0 deletions lib/models/MandateStatus.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
Created: 'CREATED',
Submitted: 'SUBMITTED',
Active: 'ACTIVE',
Failed: 'FAILED'
};
Loading

0 comments on commit 84d67b0

Please sign in to comment.