@muhammedaksam/sipay-node
Version:
Node.js TypeScript SDK for Sipay payment gateway
74 lines • 3.26 kB
JavaScript
import { SipayResource } from './base';
import { generateHashKey, generatePaymentHashKey } from '../utils';
export class Cards extends SipayResource {
/**
* Save a credit card for future use
*/
async saveCard(cardData, options) {
const data = this.addMerchantKey(cardData);
// Generate hash key for save card
// Hash format: merchant_key|customer_number|card_holder_name|card_number|expiry_month|expiry_year
const hashParts = [
data.merchant_key,
data.customer_number,
data.cc_holder_name,
data.cc_no,
data.expiry_month,
data.expiry_year,
];
data.hash_key = generateHashKey(hashParts, this.client['config'].appSecret);
return this.post('/api/saveCard', data, options);
}
/**
* Get saved card tokens for a customer
*/
async getCardTokens(customerData, options) {
const data = this.addMerchantKey(customerData);
return this.get('/api/getCardTokens', data, options);
}
/**
* Edit a saved card
*/
async editCard(cardData, options) {
const data = this.addMerchantKey(cardData);
// Generate hash key for edit card
// Hash format: merchant_key|customer_number|card_token
const hashParts = [data.merchant_key, data.customer_number, data.card_token];
data.hash_key = generateHashKey(hashParts, this.client['config'].appSecret);
return this.post('/api/editCard', data, options);
}
/**
* Delete a saved card
*/
async deleteCard(cardData, options) {
const data = this.addMerchantKey(cardData);
// Generate hash key for delete card
// Hash format: merchant_key|customer_number|card_token
const hashParts = [data.merchant_key, data.customer_number, data.card_token];
data.hash_key = generateHashKey(hashParts, this.client['config'].appSecret);
return this.post('/api/deleteCard', data, options);
}
/**
* Pay using a saved card token (3D Secure)
*/
async payByCardToken(paymentData, options) {
const data = this.addMerchantKey(paymentData);
// Generate hash key for card token payment
// Hash format: total|installments_number|currency_code|merchant_key|invoice_id
const hashKey = generatePaymentHashKey(data.total, data.installments_number || 1, data.currency_code, data.merchant_key, data.invoice_id, this.client['config'].appSecret);
data.hash_key = hashKey;
return this.post('/api/payByCardToken', data, options);
}
/**
* Pay using a saved card token (Non-Secure/2D)
*/
async payByCardTokenNonSecure(paymentData, options) {
const data = this.addMerchantKey(paymentData);
// Generate hash key for non-secure card token payment
// Hash format: total|installments_number|currency_code|merchant_key|invoice_id
const hashKey = generatePaymentHashKey(data.total, data.installments_number || 1, data.currency_code, data.merchant_key, data.invoice_id, this.client['config'].appSecret);
data.hash_key = hashKey;
return this.post('/api/payByCardTokenNonSecure', data, options);
}
}
//# sourceMappingURL=cards.js.map