cashfree-pg 5.0.3 → 5.0.8-node

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/docs/Webhook.md CHANGED
@@ -12,7 +12,7 @@ Verify Webhook Signatures ([Docs](https://docs.cashfree.com/reference/pg-webhook
12
12
  ```javascript
13
13
  app.post('/webhook', function (req, res) {
14
14
  try {
15
- const response = Cashfree.PGVerifyWebhookSignature(req.headers["x-webhook-signature"], req.rawBody, req.headers["x-webhook-timestamp"]))
15
+ const response = Cashfree.PGVerifyWebhookSignature(req.headers["x-webhook-signature"], req.rawBody, req.headers["x-webhook-timestamp"]);
16
16
  console.log(response.object)
17
17
  } catch (err) {
18
18
  console.log(err.message)
package/jest.config.js CHANGED
@@ -2,4 +2,5 @@ module.exports = {
2
2
  preset: "ts-jest",
3
3
  testEnvironment: "node",
4
4
  coverageReporters: ["lcov"],
5
+ testPathIgnorePatterns: [".*\\.test\\.ts$"], // ignore TypeScript tests
5
6
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cashfree-pg",
3
- "version": "5.0.3",
3
+ "version": "5.0.8-node",
4
4
  "description": "Cashfree client for cashfree-pg",
5
5
  "author": "Cashfree Payments",
6
6
  "repository": {
@@ -22,10 +22,10 @@
22
22
  "scripts": {
23
23
  "build": "tsc && tsc -p tsconfig.esm.json",
24
24
  "prepare": "npm run build",
25
- "test": "jest --coverage && coveralls < coverage/lcov.info"
25
+ "test": "jest"
26
26
  },
27
27
  "dependencies": {
28
- "axios": "1.7.7",
28
+ "axios": "1.8.4",
29
29
  "@sentry/node": "^7.73.0"
30
30
  },
31
31
  "devDependencies": {
@@ -36,6 +36,7 @@
36
36
  "@types/sinon": "^17.0.1",
37
37
  "chai": "^4.3.10",
38
38
  "jest": "^29.7.0",
39
+ "dotenv": "16.5.0",
39
40
  "mocha-junit-reporter": "^2.2.1",
40
41
  "sinon": "^17.0.1",
41
42
  "ts-jest": "^29.1.1",
@@ -0,0 +1,285 @@
1
+ require('dotenv').config();
2
+ const { Cashfree, CardChannelEnum, AppProviderEnum, CFEnvironment } = require("cashfree-pg");
3
+ const { test, expect } = require("@jest/globals");
4
+
5
+ const cashfree = new Cashfree(
6
+ CFEnvironment.SANDBOX,
7
+ process.env.XCLIENTIDSANDBOX,
8
+ process.env.XCLIENTSECRETSANDBOX
9
+ );
10
+
11
+ const orderAmount = 1;
12
+ async function createOrderAndReturnSessionId() {
13
+ const orderId = "order_" + Math.floor(Math.random() * 100000000);
14
+ const request = {
15
+ order_amount: orderAmount,
16
+ order_currency: "INR",
17
+ order_id: orderId,
18
+ customer_details: {
19
+ customer_id: "testCustomer",
20
+ customer_phone: "9999999999",
21
+ customer_email: "test@cashfree.com"
22
+ },
23
+ order_meta: {
24
+ return_url:
25
+ "https://www.cashfree.com/devstudio/preview/pg/web/checkout?order_id={order_id}"
26
+ }
27
+ };
28
+
29
+ const response = await cashfree.PGCreateOrder(request);
30
+ expect(response.data.payment_session_id).toBeDefined();
31
+ return { sessionId: response.data.payment_session_id, orderId: orderId };
32
+ }
33
+
34
+ test("Create Order", async () => {
35
+ const { sessionId } = await createOrderAndReturnSessionId();
36
+ expect(sessionId).toBeDefined();
37
+ });
38
+
39
+ test("Pay Netbanking", async () => {
40
+ const { sessionId } = await createOrderAndReturnSessionId();
41
+ const request = {
42
+ payment_session_id: sessionId,
43
+ payment_method: {
44
+ netbanking: {
45
+ netbanking_bank_code: 3087,
46
+ channel: "link"
47
+ }
48
+ }
49
+ };
50
+
51
+ const response = await cashfree.PGPayOrder(request);
52
+ expect(response.data.channel).toBe("link");
53
+ expect(response.data.payment_method).toBe("netbanking");
54
+ expect(Number(response.data.payment_amount)).toBeGreaterThanOrEqual(orderAmount);
55
+ });
56
+
57
+ test("Pay Card", async () => {
58
+ const { sessionId } = await createOrderAndReturnSessionId();
59
+ const request = {
60
+ payment_session_id: sessionId,
61
+ payment_method: {
62
+ card: {
63
+ channel: CardChannelEnum.LINK,
64
+ card_number: "4838305610460100",
65
+ card_holder_name: "Tushar Gupta",
66
+ card_expiry_mm: "06",
67
+ card_expiry_yy: "30",
68
+ card_cvv: "123"
69
+ }
70
+ }
71
+ };
72
+
73
+ const response = await cashfree.PGPayOrder(request);
74
+ expect(response.data.channel).toBe("link");
75
+ expect(response.data.payment_method).toBe("card");
76
+ expect(Number(response.data.payment_amount)).toBeGreaterThanOrEqual(orderAmount);
77
+ });
78
+
79
+ test("Pay Card with Empty CVV", async () => {
80
+ const { sessionId } = await createOrderAndReturnSessionId();
81
+ const request = {
82
+ payment_session_id: sessionId,
83
+ payment_method: {
84
+ card: {
85
+ channel: CardChannelEnum.LINK,
86
+ card_number: "4838305610460100",
87
+ card_holder_name: "Tushar Gupta",
88
+ card_expiry_mm: "06",
89
+ card_expiry_yy: "30",
90
+ card_cvv: ""
91
+ }
92
+ }
93
+ };
94
+
95
+ await expect(cashfree.PGPayOrder(request)).rejects.toMatchObject({
96
+ response: {
97
+ data: {
98
+ code: "card_cvv_missing",
99
+ type: "invalid_request_error",
100
+ message: expect.stringContaining("card_cvv")
101
+ }
102
+ }
103
+ });
104
+ });
105
+
106
+ test("Pay Wallet - PhonePe", async () => {
107
+ const { sessionId } = await createOrderAndReturnSessionId();
108
+ const request = {
109
+ payment_session_id: sessionId,
110
+ payment_method: {
111
+ app: {
112
+ provider: AppProviderEnum.PHONEPE,
113
+ phone: "8474090512",
114
+ channel: "link"
115
+ }
116
+ }
117
+ };
118
+
119
+ const response = await cashfree.PGPayOrder(request);
120
+ expect(response.status).toBe(200);
121
+ });
122
+
123
+ test("Invalid Currency", async () => {
124
+ const request = {
125
+ order_amount: orderAmount,
126
+ order_currency: "INjR",
127
+ customer_details: {
128
+ customer_id: "iij",
129
+ customer_name: "abcd",
130
+ customer_email: "success@eligibility.com",
131
+ customer_phone: "9999999999"
132
+ }
133
+ };
134
+
135
+ await expect(cashfree.PGCreateOrder(request)).rejects.toMatchObject({
136
+ response: {
137
+ data: {
138
+ code: "order_currency_invalid",
139
+ type: "invalid_request_error",
140
+ message: expect.stringContaining("order_currency")
141
+ }
142
+ }
143
+ });
144
+ });
145
+
146
+ test("Invalid Amount", async () => {
147
+ const request = {
148
+ order_amount: -100,
149
+ order_currency: "INR",
150
+ customer_details: {
151
+ customer_id: "iij",
152
+ customer_name: "abcd",
153
+ customer_email: "success@eligibility.com",
154
+ customer_phone: "9999999999"
155
+ }
156
+ };
157
+
158
+ await expect(cashfree.PGCreateOrder(request)).rejects.toMatchObject({
159
+ response: {
160
+ data: {
161
+ code: "order_amount_invalid",
162
+ type: "invalid_request_error",
163
+ message: expect.stringContaining("Invalid amount")
164
+ }
165
+ }
166
+ });
167
+ });
168
+
169
+ test("Empty Customer Phone", async () => {
170
+ const request = {
171
+ order_amount: orderAmount,
172
+ order_currency: "INR",
173
+ customer_details: {
174
+ customer_id: "iij",
175
+ customer_name: "abcd",
176
+ customer_email: "success@eligibility.com",
177
+ customer_phone: ""
178
+ }
179
+ };
180
+
181
+ await expect(cashfree.PGCreateOrder(request)).rejects.toMatchObject({
182
+ response: {
183
+ data: {
184
+ code: "customer_details.customer_phone_missing",
185
+ type: "invalid_request_error",
186
+ message: expect.stringContaining("customer_phone")
187
+ }
188
+ }
189
+ });
190
+ });
191
+
192
+ test("Order Pay Net Banking Test", async () => {
193
+ const { sessionId } = await createOrderAndReturnSessionId();
194
+ const request = {
195
+ payment_session_id: sessionId,
196
+ payment_method: {
197
+ netbanking: {
198
+ netbanking_bank_code: 3087,
199
+ channel: "link",
200
+ },
201
+ },
202
+ };
203
+
204
+ const response = await cashfree.PGPayOrder(request);
205
+ expect(response.data.channel).toBe("link");
206
+ expect(response.data.payment_method).toBe("netbanking");
207
+ expect(Number(response.data.payment_amount)).toBeGreaterThanOrEqual(orderAmount);
208
+ });
209
+
210
+ test("Order Pay Card Payment Test", async () => {
211
+ const { sessionId } = await createOrderAndReturnSessionId();
212
+ const request = {
213
+ payment_session_id: sessionId,
214
+ payment_method: {
215
+ card: {
216
+ channel: CardChannelEnum.LINK,
217
+ card_number: "4838305610460100",
218
+ card_holder_name: "Tushar Gupta",
219
+ card_expiry_mm: "06",
220
+ card_expiry_yy: "30",
221
+ card_cvv: "123",
222
+ },
223
+ },
224
+ };
225
+
226
+ const response = await cashfree.PGPayOrder(request);
227
+ expect(response.data.channel).toBe("link");
228
+ expect(response.data.payment_method).toBe("card");
229
+ expect(Number(response.data.payment_amount)).toBeGreaterThanOrEqual(orderAmount);
230
+ });
231
+
232
+ test("Order Pay Card Payment with Empty CVV Test", async () => {
233
+ const { sessionId } = await createOrderAndReturnSessionId();
234
+ const request = {
235
+ payment_session_id: sessionId,
236
+ payment_method: {
237
+ card: {
238
+ channel: CardChannelEnum.LINK,
239
+ card_number: "4838305610460100",
240
+ card_holder_name: "Tushar Gupta",
241
+ card_expiry_mm: "06",
242
+ card_expiry_yy: "30",
243
+ card_cvv: "",
244
+ },
245
+ },
246
+ };
247
+
248
+ try {
249
+ await cashfree.PGPayOrder(request);
250
+ throw new Error("Expected error but request passed");
251
+ } catch (error) {
252
+ expect(error.response.data.message).toBe("card_cvv : is missing in the request. Value received: ");
253
+ expect(error.response.data.code).toBe("card_cvv_missing");
254
+ expect(error.response.data.type).toBe("invalid_request_error");
255
+ }
256
+ });
257
+
258
+ test("Order Pay Wallet Test", async () => {
259
+ const { sessionId } = await createOrderAndReturnSessionId();
260
+ const request = {
261
+ payment_session_id: sessionId,
262
+ payment_method: {
263
+ app: {
264
+ provider: AppProviderEnum.PHONEPE,
265
+ phone: "8474090512",
266
+ channel: "link",
267
+ },
268
+ },
269
+ };
270
+
271
+ const response = await cashfree.PGPayOrder(request);
272
+ expect(response.status).toBe(200);
273
+ });
274
+
275
+ test("Get Order Test", async () => {
276
+ const { orderId } = await createOrderAndReturnSessionId();
277
+ const response = await cashfree.PGFetchOrder(orderId);
278
+ expect(response.data.order_currency).toBe("INR");
279
+ });
280
+
281
+ test("Get Payments For an Order Test", async () => {
282
+ const { orderId } = await createOrderAndReturnSessionId();
283
+ const response = await cashfree.PGOrderFetchPayments(orderId);
284
+ expect(response.status).toBe(200);
285
+ });