1+ const { Cashfree, CardChannelEnum, AppProviderEnum } = require ( "cashfree-pg" ) ;
2+ const { test, expect } = require ( "@jest/globals" ) ;
3+
4+ const cashfree = new Cashfree (
5+ Cashfree . SANDBOX ,
6+ process . env . CLIENT_ID ,
7+ process . env . SECRET_KEY
8+ ) ;
9+
10+ const orderAmount = 1 ;
11+ const xApiVersion = "2025-01-01" ;
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 , xApiVersion ) ;
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 , xApiVersion ) ;
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 : "25" ,
68+ card_cvv : "123"
69+ }
70+ }
71+ } ;
72+
73+ const response = await cashfree . PGPayOrder ( request , xApiVersion ) ;
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 : "25" ,
90+ card_cvv : ""
91+ }
92+ }
93+ } ;
94+
95+ await expect ( cashfree . PGPayOrder ( request , xApiVersion ) ) . 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 , xApiVersion ) ;
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 , xApiVersion ) ) . 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 , xApiVersion ) ) . 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 , xApiVersion ) ) . 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 , xApiVersion ) ;
205+ console . log ( "Response:" , response . data ) ;
206+ expect ( response . data . channel ) . toBe ( "link" ) ;
207+ expect ( response . data . payment_method ) . toBe ( "netbanking" ) ;
208+ expect ( Number ( response . data . payment_amount ) ) . toBeGreaterThanOrEqual ( orderAmount ) ;
209+ } ) ;
210+
211+ test ( "Order Pay Card Payment Test" , async ( ) => {
212+ const { sessionId } = await createOrderAndReturnSessionId ( ) ;
213+ const request = {
214+ payment_session_id : sessionId ,
215+ payment_method : {
216+ card : {
217+ channel : CardChannelEnum . LINK ,
218+ card_number : "4838305610460100" ,
219+ card_holder_name : "Tushar Gupta" ,
220+ card_expiry_mm : "06" ,
221+ card_expiry_yy : "25" ,
222+ card_cvv : "123" ,
223+ } ,
224+ } ,
225+ } ;
226+
227+ const response = await cashfree . PGPayOrder ( request , xApiVersion ) ;
228+ expect ( response . data . channel ) . toBe ( "link" ) ;
229+ expect ( response . data . payment_method ) . toBe ( "card" ) ;
230+ expect ( Number ( response . data . payment_amount ) ) . toBeGreaterThanOrEqual ( orderAmount ) ;
231+ } ) ;
232+
233+ test ( "Order Pay Card Payment with Empty CVV Test" , async ( ) => {
234+ const { sessionId } = await createOrderAndReturnSessionId ( ) ;
235+ const request = {
236+ payment_session_id : sessionId ,
237+ payment_method : {
238+ card : {
239+ channel : CardChannelEnum . LINK ,
240+ card_number : "4838305610460100" ,
241+ card_holder_name : "Tushar Gupta" ,
242+ card_expiry_mm : "06" ,
243+ card_expiry_yy : "25" ,
244+ card_cvv : "" ,
245+ } ,
246+ } ,
247+ } ;
248+
249+ try {
250+ await cashfree . PGPayOrder ( request , xApiVersion ) ;
251+ throw new Error ( "Expected error but request passed" ) ;
252+ } catch ( error ) {
253+ expect ( error . response . data . message ) . toBe ( "card_cvv : is missing in the request. Value received: " ) ;
254+ expect ( error . response . data . code ) . toBe ( "card_cvv_missing" ) ;
255+ expect ( error . response . data . type ) . toBe ( "invalid_request_error" ) ;
256+ }
257+ } ) ;
258+
259+ test ( "Order Pay Wallet Test" , async ( ) => {
260+ const { sessionId } = await createOrderAndReturnSessionId ( ) ;
261+ const request = {
262+ payment_session_id : sessionId ,
263+ payment_method : {
264+ app : {
265+ provider : AppProviderEnum . PHONEPE ,
266+ phone : "8474090512" ,
267+ channel : "link" ,
268+ } ,
269+ } ,
270+ } ;
271+
272+ const response = await cashfree . PGPayOrder ( request , xApiVersion ) ;
273+ expect ( response . status ) . toBe ( 200 ) ;
274+ } ) ;
275+
276+ test ( "Get Order Test" , async ( ) => {
277+ const { orderId } = await createOrderAndReturnSessionId ( ) ;
278+ const response = await cashfree . PGFetchOrder ( orderId , xApiVersion ) ;
279+ expect ( response . data . order_currency ) . toBe ( "INR" ) ;
280+ } ) ;
281+
282+ test ( "Get Payments For an Order Test" , async ( ) => {
283+ const { orderId } = await createOrderAndReturnSessionId ( ) ;
284+ const response = await cashfree . PGOrderFetchPayments ( orderId , xApiVersion ) ;
285+ expect ( response . status ) . toBe ( 200 ) ;
286+ } ) ;
0 commit comments