paymaya-integration
Version:
PayMaya payment system integration for Node.js applications
93 lines (83 loc) • 2.66 kB
JavaScript
/**
* PayMaya Vault operations (Card Storage)
*/
class Vault {
constructor(client) {
this.client = client;
}
/**
* Creates a new customer
* @param {Object} customerData Customer information
* @returns {Promise<Object>}
*/
async createCustomer(customerData) {
return this.client.secretRequest('POST', '/payments/v1/customers', customerData);
}
/**
* Updates customer information
* @param {String} customerId Customer ID
* @param {Object} customerData Updated customer information
* @returns {Promise<Object>}
*/
async updateCustomer(customerId, customerData) {
return this.client.secretRequest('PUT', `/payments/v1/customers/${customerId}`, customerData);
}
/**
* Gets customer information
* @param {String} customerId Customer ID
* @returns {Promise<Object>}
*/
async getCustomer(customerId) {
return this.client.secretRequest('GET', `/payments/v1/customers/${customerId}`);
}
/**
* Deletes a customer record
* @param {String} customerId Customer ID
* @returns {Promise<Object>}
*/
async deleteCustomer(customerId) {
return this.client.secretRequest('DELETE', `/payments/v1/customers/${customerId}`);
}
/**
* Adds a new card
* @param {String} customerId Customer ID
* @param {Object} cardData Card information
* @returns {Promise<Object>}
*/
async createCard(customerId, cardData) {
return this.client.secretRequest('POST', `/payments/v1/customers/${customerId}/cards`, cardData);
}
/**
* Gets saved card details
* @param {String} customerId Customer ID
* @param {String} cardId Card ID
* @returns {Promise<Object>}
*/
async getCard(customerId, cardId) {
return this.client.secretRequest('GET', `/payments/v1/customers/${customerId}/cards/${cardId}`);
}
/**
* Deletes a saved card
* @param {String} customerId Customer ID
* @param {String} cardId Card ID
* @returns {Promise<Object>}
*/
async deleteCard(customerId, cardId) {
return this.client.secretRequest('DELETE', `/payments/v1/customers/${customerId}/cards/${cardId}`);
}
/**
* Makes a payment with a saved card
* @param {String} customerId Customer ID
* @param {String} cardId Card ID
* @param {Object} paymentData Payment information
* @returns {Promise<Object>}
*/
async createPayment(customerId, cardId, paymentData) {
return this.client.secretRequest(
'POST',
`/payments/v1/customers/${customerId}/cards/${cardId}/payments`,
paymentData
);
}
}
module.exports = Vault;