razorpay 2.4.0 → 3.2.4

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.
Files changed (185) hide show
  1. checksums.yaml +4 -4
  2. data/.cursorignore +174 -0
  3. data/.github/dependabot.yml +8 -0
  4. data/.github/pull_request_template.md +8 -0
  5. data/.github/workflows/ci.yml +80 -0
  6. data/.github/workflows/ruby.yml +38 -0
  7. data/CHANGELOG.md +85 -1
  8. data/README.md +48 -137
  9. data/documents/Invoice.md +539 -0
  10. data/documents/account.md +449 -0
  11. data/documents/addon.md +191 -0
  12. data/documents/card.md +655 -0
  13. data/documents/customer.md +405 -0
  14. data/documents/dispute.md +301 -0
  15. data/documents/documents.md +65 -0
  16. data/documents/emandate.md +492 -0
  17. data/documents/fund.md +89 -0
  18. data/documents/items.md +208 -0
  19. data/documents/oauth_token.md +142 -0
  20. data/documents/order.md +352 -0
  21. data/documents/papernach.md +738 -0
  22. data/documents/payment.md +1122 -0
  23. data/documents/paymentLink.md +1063 -0
  24. data/documents/paymentVerification.md +79 -0
  25. data/documents/plan.md +184 -0
  26. data/documents/productConfiguration.md +444 -0
  27. data/documents/qrcode.md +439 -0
  28. data/documents/refund.md +325 -0
  29. data/documents/registerEmandate.md +452 -0
  30. data/documents/registerNach.md +653 -0
  31. data/documents/settlement.md +478 -0
  32. data/documents/stakeholder.md +334 -0
  33. data/documents/subscriptions.md +752 -0
  34. data/documents/tokens.md +407 -0
  35. data/documents/transfers.md +821 -0
  36. data/documents/upi.md +545 -0
  37. data/documents/virtualAccount.md +591 -0
  38. data/documents/webhook.md +224 -0
  39. data/lib/razorpay/account.rb +39 -0
  40. data/lib/razorpay/addon.rb +9 -1
  41. data/lib/razorpay/card.rb +4 -0
  42. data/lib/razorpay/constants.rb +7 -2
  43. data/lib/razorpay/customer.rb +31 -0
  44. data/lib/razorpay/dispute.rb +26 -0
  45. data/lib/razorpay/document.rb +19 -0
  46. data/lib/razorpay/fund_account.rb +19 -0
  47. data/lib/razorpay/iin.rb +15 -0
  48. data/lib/razorpay/invoice.rb +8 -0
  49. data/lib/razorpay/item.rb +34 -0
  50. data/lib/razorpay/oauth_token.rb +109 -0
  51. data/lib/razorpay/order.rb +19 -1
  52. data/lib/razorpay/payload_validator.rb +93 -0
  53. data/lib/razorpay/payment.rb +64 -0
  54. data/lib/razorpay/payment_link.rb +36 -0
  55. data/lib/razorpay/payment_method.rb +17 -0
  56. data/lib/razorpay/product.rb +37 -0
  57. data/lib/razorpay/qr_code.rb +34 -0
  58. data/lib/razorpay/refund.rb +4 -0
  59. data/lib/razorpay/request.rb +50 -26
  60. data/lib/razorpay/settlement.rb +39 -0
  61. data/lib/razorpay/stakeholder.rb +39 -0
  62. data/lib/razorpay/subscription.rb +24 -0
  63. data/lib/razorpay/subscription_registration.rb +16 -0
  64. data/lib/razorpay/token.rb +28 -0
  65. data/lib/razorpay/transfer.rb +39 -0
  66. data/lib/razorpay/utility.rb +41 -6
  67. data/lib/razorpay/validation_config.rb +11 -0
  68. data/lib/razorpay/virtual_account.rb +15 -7
  69. data/lib/razorpay/webhook.rb +50 -0
  70. data/lib/razorpay.rb +24 -1
  71. data/razorpay-ruby.gemspec +2 -1
  72. data/test/fixtures/addon_collection.json +60 -0
  73. data/test/fixtures/create_json_payment.json +13 -0
  74. data/test/fixtures/delete_token.json +3 -0
  75. data/test/fixtures/dispute_collection.json +67 -0
  76. data/test/fixtures/dispute_error.json +10 -0
  77. data/test/fixtures/document_error.json +10 -0
  78. data/test/fixtures/downtimes_collection.json +21 -0
  79. data/test/fixtures/empty.json +2 -0
  80. data/test/fixtures/error_customer.json +10 -0
  81. data/test/fixtures/error_eligibility.json +10 -0
  82. data/test/fixtures/error_eligibility_check.json +10 -0
  83. data/test/fixtures/fake_account.json +78 -0
  84. data/test/fixtures/fake_addon.json +3 -3
  85. data/test/fixtures/fake_bank_account.json +9 -0
  86. data/test/fixtures/fake_card_reference.json +5 -0
  87. data/test/fixtures/fake_create_upi_payment.json +3 -0
  88. data/test/fixtures/fake_direct_transfer.json +32 -0
  89. data/test/fixtures/fake_dispute.json +29 -0
  90. data/test/fixtures/fake_document.json +9 -0
  91. data/test/fixtures/fake_downtime.json +14 -0
  92. data/test/fixtures/fake_eligiblity.json +79 -0
  93. data/test/fixtures/fake_fulfillment.json +10 -0
  94. data/test/fixtures/fake_fund_account.json +18 -0
  95. data/test/fixtures/fake_iin_token.json +23 -0
  96. data/test/fixtures/fake_instant_settlement.json +19 -0
  97. data/test/fixtures/fake_item.json +9 -0
  98. data/test/fixtures/fake_oauth_token.json +8 -0
  99. data/test/fixtures/fake_order_transfers.json +88 -0
  100. data/test/fixtures/fake_otp_generate.json +19 -0
  101. data/test/fixtures/fake_otp_resend.json +7 -0
  102. data/test/fixtures/fake_otp_submit.json +5 -0
  103. data/test/fixtures/fake_payment_expanded_details.json +38 -0
  104. data/test/fixtures/fake_payment_expanded_details_card.json +50 -0
  105. data/test/fixtures/fake_payment_link.json +40 -0
  106. data/test/fixtures/fake_pending_update.json +30 -0
  107. data/test/fixtures/fake_product.json +138 -0
  108. data/test/fixtures/fake_qrcode.json +20 -0
  109. data/test/fixtures/fake_qrcode_close.json +22 -0
  110. data/test/fixtures/fake_recurring.json +5 -0
  111. data/test/fixtures/fake_refund.json +1 -1
  112. data/test/fixtures/fake_revoke_token.json +3 -0
  113. data/test/fixtures/fake_rto.json +15 -0
  114. data/test/fixtures/fake_settlement.json +11 -0
  115. data/test/fixtures/fake_settlement_on_demand.json +39 -0
  116. data/test/fixtures/fake_stakeholder.json +29 -0
  117. data/test/fixtures/fake_subscription_pause.json +19 -0
  118. data/test/fixtures/fake_subscription_registration.json +91 -0
  119. data/test/fixtures/fake_subscription_resume.json +19 -0
  120. data/test/fixtures/fake_token.json +31 -0
  121. data/test/fixtures/fake_tokenise_customer.json +40 -0
  122. data/test/fixtures/fake_transfer.json +18 -0
  123. data/test/fixtures/fake_transfer_reverse.json +15 -0
  124. data/test/fixtures/fake_update_payment.json +39 -0
  125. data/test/fixtures/fake_validate_vpa.json +5 -0
  126. data/test/fixtures/fake_virtual_account_allowed.json +46 -0
  127. data/test/fixtures/fake_virtual_account_receiver.json +46 -0
  128. data/test/fixtures/fake_webhook.json +79 -0
  129. data/test/fixtures/fake_webhook_by_account_id.json +22 -0
  130. data/test/fixtures/fetch_tnc.json +11 -0
  131. data/test/fixtures/fund_collection.json +20 -0
  132. data/test/fixtures/item_collection.json +24 -0
  133. data/test/fixtures/order_error.json +10 -0
  134. data/test/fixtures/payment_collection.json +1 -1
  135. data/test/fixtures/payment_error.json +10 -0
  136. data/test/fixtures/payment_link_collection.json +43 -0
  137. data/test/fixtures/payment_link_response.json +3 -0
  138. data/test/fixtures/payment_methods_collection.json +149 -0
  139. data/test/fixtures/qrcode_collection.json +50 -0
  140. data/test/fixtures/qrcode_payments_collection.json +74 -0
  141. data/test/fixtures/reversals_collection.json +22 -0
  142. data/test/fixtures/settlement_collection.json +26 -0
  143. data/test/fixtures/settlement_instant_collection.json +84 -0
  144. data/test/fixtures/settlement_report_collection.json +117 -0
  145. data/test/fixtures/stakeholder_collection.json +35 -0
  146. data/test/fixtures/success.json +3 -0
  147. data/test/fixtures/tokens_collection.json +36 -0
  148. data/test/fixtures/transfer_error.json +10 -0
  149. data/test/fixtures/transfer_settlements_collection.json +38 -0
  150. data/test/fixtures/transfers_collection.json +41 -0
  151. data/test/fixtures/webhook_by_account_collection.json +35 -0
  152. data/test/fixtures/webhook_collection.json +85 -0
  153. data/test/razorpay/test_account.rb +134 -0
  154. data/test/razorpay/test_addon.rb +19 -15
  155. data/test/razorpay/test_card.rb +6 -0
  156. data/test/razorpay/test_customer.rb +132 -3
  157. data/test/razorpay/test_dispute.rb +98 -0
  158. data/test/razorpay/test_document.rb +27 -0
  159. data/test/razorpay/test_fund_account.rb +42 -0
  160. data/test/razorpay/test_iin.rb +23 -0
  161. data/test/razorpay/test_invoice.rb +15 -2
  162. data/test/razorpay/test_item.rb +66 -0
  163. data/test/razorpay/test_oauth_token.rb +105 -0
  164. data/test/razorpay/test_order.rb +66 -1
  165. data/test/razorpay/test_payload_validator.rb +61 -0
  166. data/test/razorpay/test_payment.rb +251 -9
  167. data/test/razorpay/test_payment_link.rb +83 -0
  168. data/test/razorpay/test_plan.rb +2 -2
  169. data/test/razorpay/test_product.rb +67 -0
  170. data/test/razorpay/test_qr_code.rb +63 -0
  171. data/test/razorpay/test_razorpay.rb +19 -2
  172. data/test/razorpay/test_refund.rb +16 -2
  173. data/test/razorpay/test_settlement.rb +76 -0
  174. data/test/razorpay/test_stakeholder.rb +87 -0
  175. data/test/razorpay/test_subscription.rb +72 -9
  176. data/test/razorpay/test_subscription_registration.rb +58 -0
  177. data/test/razorpay/test_token.rb +66 -0
  178. data/test/razorpay/test_transfer.rb +94 -0
  179. data/test/razorpay/test_utility.rb +72 -4
  180. data/test/razorpay/test_virtual_account.rb +64 -17
  181. data/test/razorpay/test_webhook.rb +132 -0
  182. data/test/test_helper.rb +8 -0
  183. metadata +265 -10
  184. data/.travis.yml +0 -22
  185. data/test/razorpay/test_errors.rb +0 -19
@@ -0,0 +1,407 @@
1
+ ## Tokens
2
+
3
+ ```rb
4
+ require "razorpay"
5
+
6
+ Razorpay.setup('key_id', 'key_secret')
7
+ ```
8
+
9
+ ### Fetch token by payment id
10
+ ```rb
11
+ paymentId = "pay_FHfqtkRzWvxky4"
12
+
13
+ Razorpay::Payment.fetch(paymentId)
14
+ ```
15
+
16
+ **Parameters:**
17
+
18
+ | Name | Type | Description |
19
+ |---------------|-------------|---------------------------------------------|
20
+ | paymentId* | string | The id of the payment to be fetched |
21
+
22
+ **Response:**
23
+ ```json
24
+ {
25
+ "id": "pay_FHfqtkRzWvxky4",
26
+ "entity": "payment",
27
+ "amount": 100,
28
+ "currency": "INR",
29
+ "status": "captured",
30
+ "order_id": "order_FHfnswDdfu96HQ",
31
+ "invoice_id": null,
32
+ "international": false,
33
+ "method": "card",
34
+ "amount_refunded": 0,
35
+ "refund_status": null,
36
+ "captured": true,
37
+ "description": null,
38
+ "card_id": "card_F0zoXUp4IPPGoI",
39
+ "bank": null,
40
+ "wallet": null,
41
+ "vpa": null,
42
+ "email": "gaurav.kumar@example.com",
43
+ "contact": "9999999999",
44
+ "customer_id": "cust_DtHaBuooGHTuyZ",
45
+ "token_id": "token_FHfn3rIiM1Z8nr",
46
+ "notes": {
47
+ "note_key 1": "Beam me up Scotty",
48
+ "note_key 2": "Tea. Earl Gray. Hot."
49
+ },
50
+ "fee": 0,
51
+ "tax": 0,
52
+ "error_code": null,
53
+ "error_description": null,
54
+ "error_source": null,
55
+ "error_step": null,
56
+ "error_reason": null,
57
+ "acquirer_data": {
58
+ "auth_code": "541898"
59
+ },
60
+ "created_at": 1595449871
61
+ }
62
+ ```
63
+
64
+ -------------------------------------------------------------------------------------------------------
65
+
66
+ ### Fetch tokens by customer id
67
+
68
+ ```rb
69
+ customerId = "cust_1Aa00000000004"
70
+
71
+ Razorpay::Customer.fetch(customerId).fetchTokens
72
+ ```
73
+
74
+ **Parameters:**
75
+
76
+ | Name | Type | Description |
77
+ |---------------|-------------|---------------------------------------------|
78
+ | customerId* | string | The id of the customer to be fetched |
79
+
80
+ **Response:**
81
+ ```json
82
+ {
83
+ "entity":"collection",
84
+ "count":1,
85
+ "items":[
86
+ {
87
+ "id":"token_HouA2OQR5Z2jTL",
88
+ "entity":"token",
89
+ "token":"2JPRk664pZHUWG",
90
+ "bank":null,
91
+ "wallet":null,
92
+ "method":"card",
93
+ "card":{
94
+ "entity":"card",
95
+ "name":"Gaurav Kumar",
96
+ "last4":"8950",
97
+ "network":"Visa",
98
+ "type":"credit",
99
+ "issuer":"STCB",
100
+ "international":false,
101
+ "emi":false,
102
+ "sub_type":"consumer",
103
+ "expiry_month":12,
104
+ "expiry_year":2021,
105
+ "flows":{
106
+ "otp":true,
107
+ "recurring":true
108
+ }
109
+ },
110
+ "recurring":true,
111
+ "recurring_details":{
112
+ "status":"confirmed",
113
+ "failure_reason":null
114
+ },
115
+ "auth_type":null,
116
+ "mrn":null,
117
+ "used_at":1629779657,
118
+ "created_at":1629779657,
119
+ "expired_at":1640975399,
120
+ "dcc_enabled":false,
121
+ "billing_address":null
122
+ }
123
+ ]
124
+ }
125
+ ```
126
+ -------------------------------------------------------------------------------------------------------
127
+
128
+ ### Fetch particular token
129
+ ```rb
130
+ customerId = "cust_1Aa00000000004"
131
+
132
+ tokenId = "token_Hxe0skTXLeg9pF"
133
+
134
+ Razorpay::Customer.fetch(customerId).fetchToken(tokenId)
135
+ ```
136
+
137
+ **Parameters:**
138
+
139
+ | Name | Type | Description |
140
+ |---------------|-------------|---------------------------------------------|
141
+ | customerId* | string | The id of the customer to be fetched |
142
+ | tokenId* | string | The id of the token to be fetched |
143
+
144
+ **Response:**
145
+ ```json
146
+ {
147
+ "id": "token_Hxe0skTXLeg9pF",
148
+ "entity": "token",
149
+ "token": "F85BgXnGVwcuqV",
150
+ "bank": null,
151
+ "wallet": null,
152
+ "method": "card",
153
+ "card": {
154
+ "entity": "card",
155
+ "name": "ankit",
156
+ "last4": "5449",
157
+ "network": "MasterCard",
158
+ "type": "credit",
159
+ "issuer": "UTIB",
160
+ "international": false,
161
+ "emi": false,
162
+ "sub_type": "consumer",
163
+ "expiry_month": 12,
164
+ "expiry_year": 2024,
165
+ "flows": {
166
+ "recurring": true
167
+ }
168
+ },
169
+ "recurring": true,
170
+ "auth_type": null,
171
+ "mrn": null,
172
+ "used_at": 1632976165,
173
+ "created_at": 1631687852,
174
+ "expired_at": 1634215992,
175
+ "dcc_enabled": false
176
+ }
177
+ ```
178
+ -------------------------------------------------------------------------------------------------------
179
+
180
+ ### Delete token
181
+
182
+ ```rb
183
+ customerId = "cust_1Aa00000000004"
184
+
185
+ tokenId = "token_Hxe0skTXLeg9pF"
186
+
187
+ Razorpay::Customer.fetch(customerId).deleteToken(tokenId)
188
+ ```
189
+
190
+ **Parameters:**
191
+
192
+ | Name | Type | Description |
193
+ |---------------|-------------|---------------------------------------------|
194
+ | customerId* | string | The id of the customer to be fetched |
195
+ | tokenId* | string | The id of the token to be fetched |
196
+
197
+ **Response:**
198
+ ```json
199
+ {
200
+ "deleted": true
201
+ }
202
+ ```
203
+ -------------------------------------------------------------------------------------------------------
204
+ ### Fetch VPA tokens of a customer id
205
+
206
+ ```rb
207
+ Razorpay::Customer.fetch(customerId).fetchTokens
208
+ ```
209
+
210
+ **Parameters:**
211
+
212
+ | Name | Type | Description |
213
+ |---------------|-------------|---------------------------------------------|
214
+ | customerId* | string | The id of the customer to be fetched |
215
+
216
+ **Response:**
217
+ ```json
218
+ {
219
+ "entity": "collection",
220
+ "count": 1,
221
+ "items": [
222
+ {
223
+ "id": "token_EeroOjvOvorT5L",
224
+ "entity": "token",
225
+ "token": "4ydxm47GQjrIEx",
226
+ "bank": null,
227
+ "wallet": null,
228
+ "method": "card",
229
+ "card": {
230
+ "entity": "card",
231
+ "name": "Gaurav Kumar",
232
+ "last4": "8430",
233
+ "network": "Visa",
234
+ "type": "credit",
235
+ "issuer": "HDFC",
236
+ "international": false,
237
+ "emi": true,
238
+ "expiry_month": 12,
239
+ "expiry_year": 2022,
240
+ "flows": {
241
+ "otp": true,
242
+ "recurring": true
243
+ }
244
+ },
245
+ "vpa": null,
246
+ "recurring": false,
247
+ "auth_type": null,
248
+ "mrn": null,
249
+ "used_at": 1586976724,
250
+ "created_at": 1586976724,
251
+ "expired_at": 1672511399,
252
+ "dcc_enabled": false
253
+ }
254
+ ]
255
+ }
256
+ ```
257
+ -------------------------------------------------------------------------------------------------------
258
+
259
+ ### Create a token
260
+
261
+ ```rb
262
+
263
+ Razorpay::Token.create({
264
+ "customer_id": "cust_1Aa00000000001",
265
+ "method": "card",
266
+ "card": {
267
+ "number": "4111111111111111",
268
+ "cvv": "123",
269
+ "expiry_month": "12",
270
+ "expiry_year": "21",
271
+ "name": "Gaurav Kumar"
272
+ },
273
+ "authentication": {
274
+ "provider": "razorpay",
275
+ "provider_reference_id": "pay_123wkejnsakd",
276
+ "authentication_reference_number": "100222021120200000000742753928"
277
+ },
278
+ "notes": []
279
+ })
280
+ ```
281
+
282
+ **Parameters:**
283
+
284
+ | Name | Type | Description |
285
+ |---------------|-------------|---------------------------------------------|
286
+ | customerId* | string | The id of the customer to be fetched |
287
+ | method* | string | The type of object that needs to be tokenised. Currently, `card` is the only supported value. |
288
+ | card* | object | All keys listed [here](https://razorpay.com/docs/partners/aggregators/partner-auth/token-sharing/#create-token-on-behalf-of-a-sub-merchant) are supported
289
+ |
290
+ | authentication | object | All keys listed [here](https://razorpay.com/docs/partners/aggregators/partner-auth/token-sharing/#create-token-on-behalf-of-a-sub-merchant) are supported |
291
+
292
+ **Response:**
293
+ ```json
294
+ {
295
+ "id": "token_IJmat4GwYATMtx",
296
+ "entity": "token",
297
+ "method": "card",
298
+ "card": {
299
+ "last4": "1111",
300
+ "network": "Visa",
301
+ "type": "credit",
302
+ "issuer": "IDFB",
303
+ "international": false,
304
+ "emi": false,
305
+ "sub_type": "consumer"
306
+ },
307
+ "customer": {
308
+ "id": "cust_1Aa00000000001",
309
+ "entity": "customer",
310
+ "name": "Bob",
311
+ "email": "bob@gmail.com",
312
+ "contact": "9000090000",
313
+ "gstin": null,
314
+ "notes": {
315
+ "notes_key_1": "Tea, Earl Grey, Hot",
316
+ "notes_key_2": "Tea, Earl Grey… decaf."
317
+ },
318
+ "created_at": 1658390470
319
+ },
320
+ "expired_at": 1701368999,
321
+ "customer_id": "cust_1Aa00000000001",
322
+ "compliant_with_tokenisation_guidelines": true,
323
+ "status": "active",
324
+ "notes": []
325
+ }
326
+ ```
327
+ -------------------------------------------------------------------------------------------------------
328
+
329
+ ### Fetch token
330
+ ```rb
331
+ Razorpay::Token.fetch({"id": "token_4lsdksD31GaZ09"});
332
+ ```
333
+
334
+ **Parameters:**
335
+
336
+ | Name | Type | Description |
337
+ |-------------|-------------|---------------------------------------------|
338
+ | id* | string | The unique identifier of a sub-merchant account generated by Razorpay. |
339
+
340
+ **Response:**
341
+ ```json
342
+ {
343
+ "id": "token_4lsdksD31GaZ09",
344
+ "entity": "token",
345
+ "customer_id": "cust_1Aa00000000001",
346
+ "method": "card",
347
+ "card": {
348
+ "last4": "3335",
349
+ "network": "Visa",
350
+ "type": "debit",
351
+ "issuer": "HDFC",
352
+ "international": false,
353
+ "emi": true,
354
+ "sub_type": "consumer",
355
+ "token_iin": "453335"
356
+ },
357
+ "compliant_with_tokenisation_guidelines": true,
358
+ "expired_at": 1748716199,
359
+ "status": "active",
360
+ "status_reason": null,
361
+ "notes": []
362
+ }
363
+ ```
364
+ -------------------------------------------------------------------------------------------------------
365
+ ### Delete a token
366
+ ```rb
367
+ Razorpay::Token.delete({"id": "token_4lsdksD31GaZ09"});
368
+ ```
369
+
370
+ **Parameters:**
371
+
372
+ | Name | Type | Description |
373
+ |-------------|-------------|---------------------------------------------|
374
+ | id* | string | The unique identifier of a sub-merchant account generated by Razorpay. |
375
+
376
+ **Response:**
377
+ ```json
378
+ []
379
+ ```
380
+ -------------------------------------------------------------------------------------------------------
381
+
382
+ ### Process a Payment on another PA/PG with Token
383
+ ```rb
384
+ Razorpay::Token.process_payment_on_alternate_pa_or_pg({"id":"spt_4lsdksD31GaZ09"});
385
+ ```
386
+
387
+ **Parameters:**
388
+
389
+ | Name | Type | Description |
390
+ |-------------|-------------|---------------------------------------------|
391
+ | id* | string | The unique identifier of the token whose details are to be fetched. |
392
+
393
+ **Response:**
394
+ ```json
395
+ {
396
+ "card": {
397
+ "number": "4016981500100002",
398
+ "expiry_month" : "12",
399
+ "expiry_year" : 2021
400
+ }
401
+ }
402
+ ```
403
+ -------------------------------------------------------------------------------------------------------
404
+ **PN: * indicates mandatory fields**
405
+ <br>
406
+ <br>
407
+ **For reference click [here](https://razorpay.com/docs/api/recurring-payments/upi/tokens/)**