@muhammedaksam/sipay-node 1.0.5 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/resources/branded-solution.js +0 -7
- package/dist/esm/resources/branded-solution.js.map +1 -1
- package/dist/esm/resources/cards.js +74 -0
- package/dist/esm/resources/cards.js.map +1 -0
- package/dist/esm/resources/cashout.js +17 -0
- package/dist/esm/resources/cashout.js.map +1 -0
- package/dist/esm/resources/marketplace.js +58 -0
- package/dist/esm/resources/marketplace.js.map +1 -0
- package/dist/esm/resources/payment-completion.js +41 -0
- package/dist/esm/resources/payment-completion.js.map +1 -0
- package/dist/esm/resources/payments.js +34 -1
- package/dist/esm/resources/payments.js.map +1 -1
- package/dist/esm/resources/recurring.js +4 -12
- package/dist/esm/resources/recurring.js.map +1 -1
- package/dist/esm/resources/sub-merchant.js +84 -0
- package/dist/esm/resources/sub-merchant.js.map +1 -0
- package/dist/esm/types/index.js +2 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/status-codes.js +292 -0
- package/dist/esm/types/status-codes.js.map +1 -0
- package/dist/esm/utils/http-client.js +14 -3
- package/dist/esm/utils/http-client.js.map +1 -1
- package/dist/esm/utils/index.js +158 -15
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/status-code-helpers.js +158 -0
- package/dist/esm/utils/status-code-helpers.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -1
- package/dist/index.js.map +1 -1
- package/dist/resources/branded-solution.d.ts +1 -5
- package/dist/resources/branded-solution.d.ts.map +1 -1
- package/dist/resources/branded-solution.js +0 -7
- package/dist/resources/branded-solution.js.map +1 -1
- package/dist/resources/cards.d.ts +76 -0
- package/dist/resources/cards.d.ts.map +1 -0
- package/dist/resources/cards.js +78 -0
- package/dist/resources/cards.js.map +1 -0
- package/dist/resources/cashout.d.ts +28 -0
- package/dist/resources/cashout.d.ts.map +1 -0
- package/dist/resources/cashout.js +21 -0
- package/dist/resources/cashout.js.map +1 -0
- package/dist/resources/commissions.d.ts +2 -2
- package/dist/resources/commissions.d.ts.map +1 -1
- package/dist/resources/marketplace.d.ts +87 -0
- package/dist/resources/marketplace.d.ts.map +1 -0
- package/dist/resources/marketplace.js +62 -0
- package/dist/resources/marketplace.js.map +1 -0
- package/dist/resources/payment-completion.d.ts +21 -0
- package/dist/resources/payment-completion.d.ts.map +1 -0
- package/dist/resources/payment-completion.js +78 -0
- package/dist/resources/payment-completion.js.map +1 -0
- package/dist/resources/payments.d.ts +21 -7
- package/dist/resources/payments.d.ts.map +1 -1
- package/dist/resources/payments.js +34 -1
- package/dist/resources/payments.js.map +1 -1
- package/dist/resources/recurring.d.ts +0 -9
- package/dist/resources/recurring.d.ts.map +1 -1
- package/dist/resources/recurring.js +4 -12
- package/dist/resources/recurring.js.map +1 -1
- package/dist/resources/sub-merchant.d.ts +136 -0
- package/dist/resources/sub-merchant.d.ts.map +1 -0
- package/dist/resources/sub-merchant.js +88 -0
- package/dist/resources/sub-merchant.js.map +1 -0
- package/dist/types/index.d.ts +373 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/status-codes.d.ts +125 -0
- package/dist/types/status-codes.d.ts.map +1 -0
- package/dist/types/status-codes.js +300 -0
- package/dist/types/status-codes.js.map +1 -0
- package/dist/utils/http-client.d.ts.map +1 -1
- package/dist/utils/http-client.js +14 -3
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/index.d.ts +50 -5
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +170 -16
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/status-code-helpers.d.ts +42 -0
- package/dist/utils/status-code-helpers.d.ts.map +1 -0
- package/dist/utils/status-code-helpers.js +164 -0
- package/dist/utils/status-code-helpers.js.map +1 -0
- package/package.json +11 -9
package/dist/esm/index.js
CHANGED
|
@@ -3,6 +3,11 @@ import { Payments } from './resources/payments';
|
|
|
3
3
|
import { Recurring } from './resources/recurring';
|
|
4
4
|
import { BrandedSolution } from './resources/branded-solution';
|
|
5
5
|
import { Commissions } from './resources/commissions';
|
|
6
|
+
import { Cards } from './resources/cards';
|
|
7
|
+
import { PaymentCompletion } from './resources/payment-completion';
|
|
8
|
+
import { Marketplace } from './resources/marketplace';
|
|
9
|
+
import { Cashout } from './resources/cashout';
|
|
10
|
+
import { SubMerchant } from './resources/sub-merchant';
|
|
6
11
|
export class Sipay {
|
|
7
12
|
constructor(config) {
|
|
8
13
|
this.client = new SipayHttpClient(config);
|
|
@@ -11,6 +16,11 @@ export class Sipay {
|
|
|
11
16
|
this.recurring = new Recurring(this.client);
|
|
12
17
|
this.brandedSolution = new BrandedSolution(this.client);
|
|
13
18
|
this.commissions = new Commissions(this.client);
|
|
19
|
+
this.cards = new Cards(this.client);
|
|
20
|
+
this.paymentCompletion = new PaymentCompletion(this.client);
|
|
21
|
+
this.marketplace = new Marketplace(this.client);
|
|
22
|
+
this.cashout = new Cashout(this.client);
|
|
23
|
+
this.subMerchant = new SubMerchant(this.client);
|
|
14
24
|
}
|
|
15
25
|
/**
|
|
16
26
|
* Manually authenticate with Sipay API
|
|
@@ -42,4 +52,10 @@ export { Payments } from './resources/payments';
|
|
|
42
52
|
export { Recurring } from './resources/recurring';
|
|
43
53
|
export { BrandedSolution } from './resources/branded-solution';
|
|
44
54
|
export { Commissions } from './resources/commissions';
|
|
55
|
+
export { Cards } from './resources/cards';
|
|
56
|
+
export { PaymentCompletion } from './resources/payment-completion';
|
|
57
|
+
export { Marketplace } from './resources/marketplace';
|
|
58
|
+
export { Cashout } from './resources/cashout';
|
|
59
|
+
export { SubMerchant } from './resources/sub-merchant';
|
|
60
|
+
export * from './utils';
|
|
45
61
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,OAAO,KAAK;IAahB,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAE1C,uBAAuB;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,iBAAiB;AACjB,eAAe,KAAK,CAAC;AAErB,gBAAgB;AAChB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,cAAc,SAAS,CAAC"}
|
|
@@ -7,12 +7,5 @@ export class BrandedSolution extends SipayResource {
|
|
|
7
7
|
const data = this.addMerchantKey(linkData);
|
|
8
8
|
return this.post('/purchase/link', data, options);
|
|
9
9
|
}
|
|
10
|
-
/**
|
|
11
|
-
* Check the status of a branded payment
|
|
12
|
-
*/
|
|
13
|
-
async checkStatus(statusData, options) {
|
|
14
|
-
const data = this.addMerchantKey(statusData);
|
|
15
|
-
return this.post('/purchase/status', data, options);
|
|
16
|
-
}
|
|
17
10
|
}
|
|
18
11
|
//# sourceMappingURL=branded-solution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branded-solution.js","sourceRoot":"","sources":["../../../src/resources/branded-solution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"branded-solution.js","sourceRoot":"","sources":["../../../src/resources/branded-solution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC,MAAM,OAAO,eAAgB,SAAQ,aAAa;IAChD;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,QAAsD,EACtD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;CAIF"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { SipayResource } from './base';
|
|
2
|
+
import { generateHashKey, generatePaymentHashKey } from '../utils';
|
|
3
|
+
export class Cards extends SipayResource {
|
|
4
|
+
/**
|
|
5
|
+
* Save a credit card for future use
|
|
6
|
+
*/
|
|
7
|
+
async saveCard(cardData, options) {
|
|
8
|
+
const data = this.addMerchantKey(cardData);
|
|
9
|
+
// Generate hash key for save card
|
|
10
|
+
// Hash format: merchant_key|customer_number|card_holder_name|card_number|expiry_month|expiry_year
|
|
11
|
+
const hashParts = [
|
|
12
|
+
data.merchant_key,
|
|
13
|
+
data.customer_number,
|
|
14
|
+
data.cc_holder_name,
|
|
15
|
+
data.cc_no,
|
|
16
|
+
data.expiry_month,
|
|
17
|
+
data.expiry_year,
|
|
18
|
+
];
|
|
19
|
+
data.hash_key = generateHashKey(hashParts, this.client['config'].appSecret);
|
|
20
|
+
return this.post('/api/saveCard', data, options);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get saved card tokens for a customer
|
|
24
|
+
*/
|
|
25
|
+
async getCardTokens(customerData, options) {
|
|
26
|
+
const data = this.addMerchantKey(customerData);
|
|
27
|
+
return this.get('/api/getCardTokens', data, options);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Edit a saved card
|
|
31
|
+
*/
|
|
32
|
+
async editCard(cardData, options) {
|
|
33
|
+
const data = this.addMerchantKey(cardData);
|
|
34
|
+
// Generate hash key for edit card
|
|
35
|
+
// Hash format: merchant_key|customer_number|card_token
|
|
36
|
+
const hashParts = [data.merchant_key, data.customer_number, data.card_token];
|
|
37
|
+
data.hash_key = generateHashKey(hashParts, this.client['config'].appSecret);
|
|
38
|
+
return this.post('/api/editCard', data, options);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Delete a saved card
|
|
42
|
+
*/
|
|
43
|
+
async deleteCard(cardData, options) {
|
|
44
|
+
const data = this.addMerchantKey(cardData);
|
|
45
|
+
// Generate hash key for delete card
|
|
46
|
+
// Hash format: merchant_key|customer_number|card_token
|
|
47
|
+
const hashParts = [data.merchant_key, data.customer_number, data.card_token];
|
|
48
|
+
data.hash_key = generateHashKey(hashParts, this.client['config'].appSecret);
|
|
49
|
+
return this.post('/api/deleteCard', data, options);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Pay using a saved card token (3D Secure)
|
|
53
|
+
*/
|
|
54
|
+
async payByCardToken(paymentData, options) {
|
|
55
|
+
const data = this.addMerchantKey(paymentData);
|
|
56
|
+
// Generate hash key for card token payment
|
|
57
|
+
// Hash format: total|installments_number|currency_code|merchant_key|invoice_id
|
|
58
|
+
const hashKey = generatePaymentHashKey(data.total, data.installments_number || 1, data.currency_code, data.merchant_key, data.invoice_id, this.client['config'].appSecret);
|
|
59
|
+
data.hash_key = hashKey;
|
|
60
|
+
return this.post('/api/payByCardToken', data, options);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Pay using a saved card token (Non-Secure/2D)
|
|
64
|
+
*/
|
|
65
|
+
async payByCardTokenNonSecure(paymentData, options) {
|
|
66
|
+
const data = this.addMerchantKey(paymentData);
|
|
67
|
+
// Generate hash key for non-secure card token payment
|
|
68
|
+
// Hash format: total|installments_number|currency_code|merchant_key|invoice_id
|
|
69
|
+
const hashKey = generatePaymentHashKey(data.total, data.installments_number || 1, data.currency_code, data.merchant_key, data.invoice_id, this.client['config'].appSecret);
|
|
70
|
+
data.hash_key = hashKey;
|
|
71
|
+
return this.post('/api/payByCardTokenNonSecure', data, options);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=cards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cards.js","sourceRoot":"","sources":["../../../src/resources/cards.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SipayResource } from './base';
|
|
2
|
+
export class Cashout extends SipayResource {
|
|
3
|
+
/**
|
|
4
|
+
* Initiate a cashout to bank account
|
|
5
|
+
* Note: This endpoint requires Bearer token authentication and uses a different request structure
|
|
6
|
+
* Hash generation format is not documented in the API spec - requires investigation
|
|
7
|
+
*/
|
|
8
|
+
async toBank(cashoutData, options) {
|
|
9
|
+
const data = this.addMerchantKey(cashoutData);
|
|
10
|
+
// TODO: Implement hash generation for cashout endpoint
|
|
11
|
+
// The API spec shows hash_key is required but doesn't provide hash generation examples
|
|
12
|
+
// Hash format needs to be determined - possibly based on merchant_key + invoice_id + amount
|
|
13
|
+
data.hash_key = 'TODO_IMPLEMENT_CASHOUT_HASH_GENERATION';
|
|
14
|
+
return this.post('/api/cashout/tobank', data, options);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=cashout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cashout.js","sourceRoot":"","sources":["../../../src/resources/cashout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAqBvC,MAAM,OAAO,OAAQ,SAAQ,aAAa;IACxC;;;;OAIG;IACH,KAAK,CAAC,MAAM,CACV,WAAoE,EACpE,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAyB,CAAC;QAEtE,uDAAuD;QACvD,uFAAuF;QACvF,4FAA4F;QAC5F,IAAI,CAAC,QAAQ,GAAG,wCAAwC,CAAC;QAEzD,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;CACF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { SipayResource } from './base';
|
|
2
|
+
import { generatePaymentHashKey } from '../utils';
|
|
3
|
+
export class Marketplace extends SipayResource {
|
|
4
|
+
/**
|
|
5
|
+
* Make a marketplace payment (non-secure/2D)
|
|
6
|
+
*/
|
|
7
|
+
async pay2D(paymentData, options) {
|
|
8
|
+
const data = this.addMerchantKey(paymentData);
|
|
9
|
+
// Generate hash key for marketplace payment
|
|
10
|
+
// Hash format: total|installments_number|currency_code|merchant_key|invoice_id
|
|
11
|
+
const hashKey = generatePaymentHashKey(data.total, data.installments_number || 1, data.currency_code, data.merchant_key, data.invoice_id, this.client['config'].appSecret);
|
|
12
|
+
data.hash_key = hashKey;
|
|
13
|
+
return this.post('/api/marketplace/sale/pay/smart/non-secure', data, options);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Make a marketplace payment with 3D Secure
|
|
17
|
+
*/
|
|
18
|
+
async pay3D(paymentData, options) {
|
|
19
|
+
const data = this.addMerchantKey(paymentData);
|
|
20
|
+
return this.post('/api/marketplace/sale/pay/smart/secure', data, options);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Refund a marketplace payment
|
|
24
|
+
*/
|
|
25
|
+
async refund(refundData, options) {
|
|
26
|
+
const data = this.addMerchantKey(refundData);
|
|
27
|
+
return this.post('/ccpayment/api/marketplace/sale/refund', data, options);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Check status of a marketplace payment
|
|
31
|
+
*/
|
|
32
|
+
async checkStatus(statusData, options) {
|
|
33
|
+
const data = this.addMerchantKey(statusData);
|
|
34
|
+
return this.post('/ccpayment/api/marketplace/sale/check/status', data, options);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get settlements information
|
|
38
|
+
*/
|
|
39
|
+
async getSettlements(settlementsData, options) {
|
|
40
|
+
const data = this.addMerchantKey(settlementsData);
|
|
41
|
+
return this.post('/ccpayment/api/settlements', data, options);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Approve a marketplace transaction
|
|
45
|
+
*/
|
|
46
|
+
async approveTransaction(approveData, options) {
|
|
47
|
+
const data = this.addMerchantKey(approveData);
|
|
48
|
+
return this.post('/ccpayment/api/marketplace/sale/transaction/approve', data, options);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Process payout to sub merchants
|
|
52
|
+
*/
|
|
53
|
+
async payout(payoutData, options) {
|
|
54
|
+
const data = this.addMerchantKey(payoutData);
|
|
55
|
+
return this.post('/ccpayment/api/marketplace/sub-merchant/payout', data, options);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=marketplace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../../src/resources/marketplace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAWvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AA8DlD,MAAM,OAAO,WAAY,SAAQ,aAAa;IAC5C;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,WAAsE,EACtE,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAA2B,CAAC;QAExE,4CAA4C;QAC5C,+EAA+E;QAC/E,MAAM,OAAO,GAAG,sBAAsB,CACpC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,mBAAmB,IAAI,CAAC,EAC7B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAChC,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,OAAO,IAAI,CAAC,IAAI,CAAC,4CAA4C,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,WAAyD,EACzD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,wCAAwC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,UAA0D,EAC1D,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,wCAAwC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,UAA0D,EAC1D,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,8CAA8C,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,eAAyD,EACzD,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,WAA4D,EAC5D,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,qDAAqD,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,UAA0D,EAC1D,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,gDAAgD,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpF,CAAC;CACF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { SipayResource } from './base';
|
|
2
|
+
import * as crypto from 'crypto';
|
|
3
|
+
const { createHash, createCipheriv } = crypto;
|
|
4
|
+
export class PaymentCompletion extends SipayResource {
|
|
5
|
+
/**
|
|
6
|
+
* Complete or cancel a 3D payment transaction
|
|
7
|
+
* This is used for merchant 3D model where payment completion is done by merchant
|
|
8
|
+
*/
|
|
9
|
+
async completePayment(completionData, options) {
|
|
10
|
+
const data = this.addMerchantKey(completionData);
|
|
11
|
+
// Generate hash key using the payment completion format
|
|
12
|
+
// Hash format: merchant_key|invoice_id|order_id|status
|
|
13
|
+
const hashKey = this.generatePaymentCompletionHashKey(this.client['config'].merchantKey, data.invoice_id, data.order_id, data.status, this.client['config'].appSecret);
|
|
14
|
+
data.hash_key = hashKey;
|
|
15
|
+
return this.post('/payment/complete', data, options);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Generate hash key for payment completion (using official method)
|
|
19
|
+
*/
|
|
20
|
+
generatePaymentCompletionHashKey(merchantKey, invoiceId, orderId, status, appSecret) {
|
|
21
|
+
try {
|
|
22
|
+
const data = merchantKey + '|' + invoiceId + '|' + orderId + '|' + status;
|
|
23
|
+
const iv = createHash('sha1').update(String(Math.random())).digest('hex').slice(0, 16);
|
|
24
|
+
const password = createHash('sha1').update(appSecret).digest('hex');
|
|
25
|
+
const salt = createHash('sha1').update(String(Math.random())).digest('hex').slice(0, 4);
|
|
26
|
+
const saltWithPassword = createHash('sha256')
|
|
27
|
+
.update(password + salt)
|
|
28
|
+
.digest('hex')
|
|
29
|
+
.slice(0, 32);
|
|
30
|
+
const cipher = createCipheriv('aes-256-cbc', saltWithPassword, iv);
|
|
31
|
+
let encrypted = cipher.update(data, 'binary', 'base64');
|
|
32
|
+
encrypted += cipher.final('base64');
|
|
33
|
+
const msgBundle = iv + ':' + salt + ':' + encrypted;
|
|
34
|
+
return msgBundle.replace(/\//g, '__');
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
throw new Error(`Payment completion hash key generation failed: ${error}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=payment-completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-completion.js","sourceRoot":"","sources":["../../../src/resources/payment-completion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;AAU9C,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAClD;;;OAGG;IACH,KAAK,CAAC,eAAe,CACnB,cAAyE,EACzE,OAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAA2B,CAAC;QAE3E,wDAAwD;QACxD,uDAAuD;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,gCAAgC,CACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EACjC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAChC,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACK,gCAAgC,CACtC,WAAmB,EACnB,SAAiB,EACjB,OAAe,EACf,MAAc,EACd,SAAiB;QAEjB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,WAAW,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC;YAE1E,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEvF,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEpE,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAExF,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC;iBAC1C,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;iBACvB,MAAM,CAAC,KAAK,CAAC;iBACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEhB,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAEnE,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACxD,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAEpC,MAAM,SAAS,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC;YAEpD,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kDAAkD,KAAK,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { SipayResource } from './base';
|
|
2
|
+
import { generatePaymentHashKey, generateStatusHashKey, generateConfirmPaymentHashKey, } from '../utils';
|
|
2
3
|
export class Payments extends SipayResource {
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
+
* Make a 2D payment (without 3D Secure authentication)
|
|
5
6
|
*/
|
|
6
7
|
async pay2D(paymentData, options) {
|
|
7
8
|
const data = this.addMerchantKey(paymentData);
|
|
9
|
+
// Generate hash key for payment verification
|
|
10
|
+
const hashKey = generatePaymentHashKey(data.total, data.installments_number || 1, data.currency_code, this.client['config'].merchantKey, data.invoice_id, this.client['config'].appSecret);
|
|
11
|
+
data.hash_key = hashKey;
|
|
8
12
|
return this.post('/api/paySmart2D', data, options);
|
|
9
13
|
}
|
|
10
14
|
/**
|
|
@@ -30,8 +34,22 @@ export class Payments extends SipayResource {
|
|
|
30
34
|
*/
|
|
31
35
|
async checkStatus(statusData, options) {
|
|
32
36
|
const data = this.addMerchantKey(statusData);
|
|
37
|
+
// Generate hash key for status check
|
|
38
|
+
const hashKey = generateStatusHashKey(data.invoice_id, this.client['config'].merchantKey, this.client['config'].appSecret);
|
|
39
|
+
data.hash_key = hashKey;
|
|
33
40
|
return this.post('/api/checkstatus', data, options);
|
|
34
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Confirm a pre-authorization payment
|
|
44
|
+
*/
|
|
45
|
+
async confirmPayment(confirmData, options) {
|
|
46
|
+
const data = this.addMerchantKey(confirmData);
|
|
47
|
+
// Generate hash key for payment confirmation
|
|
48
|
+
// Hash format: merchant_key|invoice_id|status
|
|
49
|
+
const hashKey = generateConfirmPaymentHashKey(data.merchant_key, data.invoice_id, data.status, this.client['config'].appSecret);
|
|
50
|
+
data.hash_key = hashKey;
|
|
51
|
+
return this.post('/api/confirmPayment', data, options);
|
|
52
|
+
}
|
|
35
53
|
/**
|
|
36
54
|
* Refund a payment
|
|
37
55
|
*/
|
|
@@ -39,6 +57,21 @@ export class Payments extends SipayResource {
|
|
|
39
57
|
const data = this.addMerchantKey(refundData);
|
|
40
58
|
return this.post('/api/refund', data, options);
|
|
41
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Get merchant active installments
|
|
62
|
+
* Note: This endpoint uses Bearer token authentication
|
|
63
|
+
*/
|
|
64
|
+
async getInstallments(options) {
|
|
65
|
+
// This endpoint doesn't require request body, only headers with Bearer token
|
|
66
|
+
return this.post('/api/installments', {}, options);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get authentication token
|
|
70
|
+
* Used for Bearer token authentication in certain endpoints
|
|
71
|
+
*/
|
|
72
|
+
async getToken(tokenData, options) {
|
|
73
|
+
return this.post('/api/token', tokenData, options);
|
|
74
|
+
}
|
|
42
75
|
/**
|
|
43
76
|
* Legacy 2D payment method (maintains compatibility)
|
|
44
77
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payments.js","sourceRoot":"","sources":["../../../src/resources/payments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"payments.js","sourceRoot":"","sources":["../../../src/resources/payments.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
import { SipayResource } from './base';
|
|
2
|
+
// Note: Recurring payment functionality is handled through the regular payment endpoints
|
|
3
|
+
// by including recurring parameters (recurring_payment_number, recurring_payment_cycle,
|
|
4
|
+
// recurring_payment_interval, recurring_web_hook_key) in the payment request.
|
|
5
|
+
// See the Payment2DRequest and Payment3DRequest interfaces for these parameters.
|
|
2
6
|
export class Recurring extends SipayResource {
|
|
3
|
-
/**
|
|
4
|
-
* Query recurring payment information
|
|
5
|
-
*/
|
|
6
|
-
async query(queryData, options) {
|
|
7
|
-
return this.post('/api/QueryRecurring', queryData, options);
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Process a recurring payment plan
|
|
11
|
-
*/
|
|
12
|
-
async processPlan(planData, options) {
|
|
13
|
-
return this.post('/api/recurring/plan/process', planData, options);
|
|
14
|
-
}
|
|
15
7
|
}
|
|
16
8
|
//# sourceMappingURL=recurring.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recurring.js","sourceRoot":"","sources":["../../../src/resources/recurring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"recurring.js","sourceRoot":"","sources":["../../../src/resources/recurring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,yFAAyF;AACzF,wFAAwF;AACxF,8EAA8E;AAC9E,iFAAiF;AAEjF,MAAM,OAAO,SAAU,SAAQ,aAAa;CAK3C"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { SipayResource } from './base';
|
|
2
|
+
import { generateHashKey } from '../utils';
|
|
3
|
+
export class SubMerchant extends SipayResource {
|
|
4
|
+
/**
|
|
5
|
+
* Add a new standard sub merchant
|
|
6
|
+
*/
|
|
7
|
+
async add(subMerchantData, options) {
|
|
8
|
+
const data = this.addMerchantKey(subMerchantData);
|
|
9
|
+
return this.post('/api/sub-merchant/add', data, options);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Edit a standard sub merchant
|
|
13
|
+
*/
|
|
14
|
+
async edit(editData, options) {
|
|
15
|
+
const data = this.addMerchantKey(editData);
|
|
16
|
+
return this.post('/api/sub-merchant/edit', data, options);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Delete a standard sub merchant
|
|
20
|
+
*/
|
|
21
|
+
async delete(deleteData, options) {
|
|
22
|
+
const data = this.addMerchantKey(deleteData);
|
|
23
|
+
return this.post('/api/sub-merchant/delete', data, options);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* List all standard sub merchants
|
|
27
|
+
*/
|
|
28
|
+
async list(listData, options) {
|
|
29
|
+
const data = this.addMerchantKey(listData || {});
|
|
30
|
+
return this.post('/api/sub-merchant/list', data, options);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Add a new sub merchant PF (Physical Person)
|
|
34
|
+
*/
|
|
35
|
+
async addPF(subMerchantData, options) {
|
|
36
|
+
const data = this.addMerchantKey(subMerchantData);
|
|
37
|
+
return this.post('/api/addSubMerchantPF', data, options);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Delete a sub merchant PF
|
|
41
|
+
*/
|
|
42
|
+
async deletePF(deleteData, options) {
|
|
43
|
+
const data = this.addMerchantKey(deleteData);
|
|
44
|
+
return this.post('/api/deleteSubMerchantPF', data, options);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* View details of a sub merchant PF
|
|
48
|
+
*/
|
|
49
|
+
async viewPF(viewData, options) {
|
|
50
|
+
const data = this.addMerchantKey(viewData);
|
|
51
|
+
return this.post('/api/subMerchantPF/view', data, options);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* List all sub merchants PF
|
|
55
|
+
*/
|
|
56
|
+
async listPF(listData, options) {
|
|
57
|
+
const data = this.addMerchantKey(listData || {});
|
|
58
|
+
return this.post('/api/listSubMerchantPF', data, options);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Make payout to sub merchants
|
|
62
|
+
* Hash format: sub_merchant_id|currency_code|amount for each payout item
|
|
63
|
+
*/
|
|
64
|
+
async payout(payoutData, options) {
|
|
65
|
+
const data = this.addMerchantKey(payoutData);
|
|
66
|
+
// Generate hash key for payout
|
|
67
|
+
// According to the spec: $data = $submerchant.'|'.$currency_code.'|'.$amount;
|
|
68
|
+
// We need to generate hash for the first payout item (or combined if multiple)
|
|
69
|
+
if (data.payout_data && data.payout_data.length > 0) {
|
|
70
|
+
const firstPayout = data.payout_data[0];
|
|
71
|
+
const hashParts = [
|
|
72
|
+
firstPayout.sub_merchant_id,
|
|
73
|
+
firstPayout.currency_code,
|
|
74
|
+
firstPayout.amount,
|
|
75
|
+
];
|
|
76
|
+
data.hash_key = generateHashKey(hashParts, this.client['config'].appSecret);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
throw new Error('Payout data is required');
|
|
80
|
+
}
|
|
81
|
+
return this.post('/ccpayment/api/marketplace/sub-merchant/payout', data, options);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=sub-merchant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-merchant.js","sourceRoot":"","sources":["../../../src/resources/sub-merchant.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/types/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AA+iBA,sBAAsB;AACtB,cAAc,gBAAgB,CAAC"}
|