razorpay 2.4.1 → 3.0.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.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +8 -0
  3. data/.github/workflows/ruby.yml +38 -0
  4. data/CHANGELOG.md +19 -0
  5. data/README.md +29 -140
  6. data/documents/Invoice.md +531 -0
  7. data/documents/addon.md +169 -0
  8. data/documents/card.md +611 -0
  9. data/documents/customer.md +161 -0
  10. data/documents/emandate.md +484 -0
  11. data/documents/fund.md +87 -0
  12. data/documents/items.md +184 -0
  13. data/documents/order.md +230 -0
  14. data/documents/papernach.md +718 -0
  15. data/documents/payment.md +636 -0
  16. data/documents/paymentLink.md +1045 -0
  17. data/documents/paymentVerification.md +79 -0
  18. data/documents/plan.md +184 -0
  19. data/documents/qrcode.md +441 -0
  20. data/documents/refund.md +324 -0
  21. data/documents/registerEmandate.md +445 -0
  22. data/documents/registerNach.md +661 -0
  23. data/documents/settlement.md +477 -0
  24. data/documents/subscriptions.md +750 -0
  25. data/documents/tokens.md +208 -0
  26. data/documents/transfers.md +684 -0
  27. data/documents/upi.md +548 -0
  28. data/documents/virtualAccount.md +586 -0
  29. data/lib/razorpay/addon.rb +4 -0
  30. data/lib/razorpay/constants.rb +1 -1
  31. data/lib/razorpay/customer.rb +15 -0
  32. data/lib/razorpay/fund_account.rb +19 -0
  33. data/lib/razorpay/invoice.rb +8 -0
  34. data/lib/razorpay/item.rb +34 -0
  35. data/lib/razorpay/order.rb +10 -0
  36. data/lib/razorpay/payment.rb +52 -0
  37. data/lib/razorpay/payment_link.rb +36 -0
  38. data/lib/razorpay/qr_code.rb +34 -0
  39. data/lib/razorpay/refund.rb +4 -0
  40. data/lib/razorpay/request.rb +13 -6
  41. data/lib/razorpay/settlement.rb +39 -0
  42. data/lib/razorpay/subscription.rb +24 -0
  43. data/lib/razorpay/subscription_registration.rb +16 -0
  44. data/lib/razorpay/transfer.rb +35 -0
  45. data/lib/razorpay/utility.rb +7 -2
  46. data/lib/razorpay/virtual_account.rb +14 -6
  47. data/lib/razorpay.rb +7 -0
  48. data/test/fixtures/addon_collection.json +60 -0
  49. data/test/fixtures/create_json_payment.json +13 -0
  50. data/test/fixtures/delete_token.json +3 -0
  51. data/test/fixtures/downtimes_collection.json +21 -0
  52. data/test/fixtures/empty.json +2 -0
  53. data/test/fixtures/fake_addon.json +3 -3
  54. data/test/fixtures/fake_direct_transfer.json +32 -0
  55. data/test/fixtures/fake_downtime.json +14 -0
  56. data/test/fixtures/fake_fund_account.json +18 -0
  57. data/test/fixtures/fake_instant_settlement.json +19 -0
  58. data/test/fixtures/fake_item.json +9 -0
  59. data/test/fixtures/fake_order_transfers.json +88 -0
  60. data/test/fixtures/fake_otp_generate.json +19 -0
  61. data/test/fixtures/fake_otp_resend.json +7 -0
  62. data/test/fixtures/fake_otp_submit.json +5 -0
  63. data/test/fixtures/fake_payment_link.json +40 -0
  64. data/test/fixtures/fake_pending_update.json +30 -0
  65. data/test/fixtures/fake_qrcode.json +20 -0
  66. data/test/fixtures/fake_qrcode_close.json +22 -0
  67. data/test/fixtures/fake_recurring.json +5 -0
  68. data/test/fixtures/fake_refund.json +1 -1
  69. data/test/fixtures/fake_settlement.json +11 -0
  70. data/test/fixtures/fake_settlement_on_demand.json +39 -0
  71. data/test/fixtures/fake_subscription_pause.json +19 -0
  72. data/test/fixtures/fake_subscription_registration.json +91 -0
  73. data/test/fixtures/fake_subscription_resume.json +19 -0
  74. data/test/fixtures/fake_token.json +31 -0
  75. data/test/fixtures/fake_transfer.json +18 -0
  76. data/test/fixtures/fake_transfer_reverse.json +15 -0
  77. data/test/fixtures/fake_update_payment.json +39 -0
  78. data/test/fixtures/fake_virtual_account_allowed.json +46 -0
  79. data/test/fixtures/fake_virtual_account_receiver.json +46 -0
  80. data/test/fixtures/fund_collection.json +20 -0
  81. data/test/fixtures/item_collection.json +24 -0
  82. data/test/fixtures/payment_collection.json +1 -1
  83. data/test/fixtures/payment_link_collection.json +43 -0
  84. data/test/fixtures/payment_link_response.json +3 -0
  85. data/test/fixtures/qrcode_collection.json +50 -0
  86. data/test/fixtures/qrcode_payments_collection.json +74 -0
  87. data/test/fixtures/settlement_collection.json +26 -0
  88. data/test/fixtures/settlement_instant_collection.json +84 -0
  89. data/test/fixtures/settlement_report_collection.json +117 -0
  90. data/test/fixtures/success.json +3 -0
  91. data/test/fixtures/tokens_collection.json +36 -0
  92. data/test/fixtures/transfer_settlements_collection.json +38 -0
  93. data/test/fixtures/transfers_collection.json +41 -0
  94. data/test/razorpay/test_addon.rb +15 -15
  95. data/test/razorpay/test_customer.rb +27 -3
  96. data/test/razorpay/test_fund_account.rb +42 -0
  97. data/test/razorpay/test_invoice.rb +15 -2
  98. data/test/razorpay/test_item.rb +66 -0
  99. data/test/razorpay/test_order.rb +24 -1
  100. data/test/razorpay/test_payment.rb +184 -8
  101. data/test/razorpay/test_payment_link.rb +83 -0
  102. data/test/razorpay/test_plan.rb +2 -2
  103. data/test/razorpay/test_qr_code.rb +63 -0
  104. data/test/razorpay/test_refund.rb +16 -2
  105. data/test/razorpay/test_settlement.rb +76 -0
  106. data/test/razorpay/test_subscription.rb +72 -9
  107. data/test/razorpay/test_subscription_registration.rb +58 -0
  108. data/test/razorpay/test_transfer.rb +77 -0
  109. data/test/razorpay/test_utility.rb +32 -0
  110. data/test/razorpay/test_virtual_account.rb +64 -17
  111. data/test/test_helper.rb +6 -0
  112. metadata +138 -9
  113. data/.travis.yml +0 -22
  114. data/test/razorpay/test_errors.rb +0 -19
@@ -0,0 +1,24 @@
1
+ {
2
+ "entity": "collection",
3
+ "count": 1,
4
+ "items": [
5
+ {
6
+ "id": "item_J7lZCyxMVeEtYB",
7
+ "active": true,
8
+ "name": "Test item",
9
+ "description": null,
10
+ "amount": 1000,
11
+ "unit_amount": 1000,
12
+ "currency": "INR",
13
+ "type": "invoice",
14
+ "unit": null,
15
+ "tax_inclusive": false,
16
+ "hsn_code": null,
17
+ "sac_code": null,
18
+ "tax_rate": null,
19
+ "tax_id": null,
20
+ "tax_group_id": null,
21
+ "created_at": 1647434940
22
+ }
23
+ ]
24
+ }
@@ -29,4 +29,4 @@
29
29
  "created_at": 1400826750
30
30
  }
31
31
  ]
32
- }
32
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "entity": "collection",
3
+ "count": 3,
4
+ "items": [
5
+ {
6
+ "accept_partial": false,
7
+ "entity": "payment_link",
8
+ "amount": 100,
9
+ "amount_paid": 0,
10
+ "cancelled_at": 0,
11
+ "created_at": 1602523443,
12
+ "currency": "INR",
13
+ "customer": {
14
+ "contact": "9999999999",
15
+ "email": "gaurav.kumar@razorpay.com",
16
+ "name": "Gaurav Kumar"
17
+ },
18
+ "description": "Payment for policy no #23456",
19
+ "expire_by": 0,
20
+ "expired_at": 0,
21
+ "first_min_partial_amount": 0,
22
+ "id": "plink_Fo4T7Ht271epg3",
23
+ "notes": {
24
+ "policy_name": "Jeevan Bima"
25
+ },
26
+ "notify": {
27
+ "email": false,
28
+ "sms": true
29
+ },
30
+ "payments": [],
31
+ "reference_id": "#41956",
32
+ "reminder_enable": true,
33
+ "reminders": {
34
+ "status": "in_progress"
35
+ },
36
+ "short_url": "https://rzp.io/i/LXnmFr3a",
37
+ "status": "created",
38
+ "updated_at": 1602523443,
39
+ "upi_link": true,
40
+ "user_id": ""
41
+ }
42
+ ]
43
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "success": true
3
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "entity": "collection",
3
+ "count": 2,
4
+ "items": [
5
+ {
6
+ "id": "qr_HO2jGkWReVBMNu",
7
+ "entity": "qr_code",
8
+ "created_at": 1623914648,
9
+ "name": "Store_1",
10
+ "usage": "single_use",
11
+ "type": "upi_qr",
12
+ "image_url": "https://rzp.io/i/w2CEwYmkAu",
13
+ "payment_amount": 300,
14
+ "status": "active",
15
+ "description": "For Store 1",
16
+ "fixed_amount": true,
17
+ "payments_amount_received": 0,
18
+ "payments_count_received": 0,
19
+ "notes": {
20
+ "purpose": "Test UPI QR code notes"
21
+ },
22
+ "customer_id": "cust_HKsR5se84c5LTO",
23
+ "close_by": 1681615838,
24
+ "closed_at": null,
25
+ "close_reason": null
26
+ },
27
+ {
28
+ "id": "qr_HO2e0813YlchUn",
29
+ "entity": "qr_code",
30
+ "created_at": 1623914349,
31
+ "name": "Acme Groceries",
32
+ "usage": "multiple_use",
33
+ "type": "upi_qr",
34
+ "image_url": "https://rzp.io/i/X6QM7LL",
35
+ "payment_amount": null,
36
+ "status": "closed",
37
+ "description": "Buy fresh groceries",
38
+ "fixed_amount": false,
39
+ "payments_amount_received": 200,
40
+ "payments_count_received": 1,
41
+ "notes": {
42
+ "Branch": "Bangalore - Rajaji Nagar"
43
+ },
44
+ "customer_id": "cust_HKsR5se84c5LTO",
45
+ "close_by": 1625077799,
46
+ "closed_at": 1623914515,
47
+ "close_reason": "on_demand"
48
+ }
49
+ ]
50
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "entity": "collection",
3
+ "count": 2,
4
+ "items": [
5
+ {
6
+ "id": "pay_HMtDKn3TnF4D8x",
7
+ "entity": "payment",
8
+ "amount": 500,
9
+ "currency": "INR",
10
+ "status": "captured",
11
+ "order_id": null,
12
+ "invoice_id": null,
13
+ "international": false,
14
+ "method": "upi",
15
+ "amount_refunded": 0,
16
+ "refund_status": null,
17
+ "captured": true,
18
+ "description": "QRv2 Payment",
19
+ "card_id": null,
20
+ "bank": null,
21
+ "wallet": null,
22
+ "vpa": "gauri.kumari@okhdfcbank",
23
+ "email": "gauri.kumari@example.com",
24
+ "contact": "+919999999999",
25
+ "customer_id": "cust_HKsR5se84c5LTO",
26
+ "notes": [],
27
+ "fee": 0,
28
+ "tax": 0,
29
+ "error_code": null,
30
+ "error_description": null,
31
+ "error_source": null,
32
+ "error_step": null,
33
+ "error_reason": null,
34
+ "acquirer_data": {
35
+ "rrn": "116514257019"
36
+ },
37
+ "created_at": 1623662800
38
+ },
39
+ {
40
+ "id": "pay_HMsr242ZnaLumA",
41
+ "entity": "payment",
42
+ "amount": 1000,
43
+ "currency": "INR",
44
+ "status": "refunded",
45
+ "order_id": null,
46
+ "invoice_id": null,
47
+ "international": false,
48
+ "method": "upi",
49
+ "amount_refunded": 1000,
50
+ "refund_status": "full",
51
+ "captured": true,
52
+ "description": "QRv2 Payment",
53
+ "card_id": null,
54
+ "bank": null,
55
+ "wallet": null,
56
+ "vpa": "gauri.kumari@okhdfcbank",
57
+ "email": "gauri.kumari@example.com",
58
+ "contact": "+919999999999",
59
+ "customer_id": "cust_HKsR5se84c5LTO",
60
+ "notes": [],
61
+ "fee": 0,
62
+ "tax": 0,
63
+ "error_code": null,
64
+ "error_description": null,
65
+ "error_source": null,
66
+ "error_step": null,
67
+ "error_reason": null,
68
+ "acquirer_data": {
69
+ "rrn": "116514090501"
70
+ },
71
+ "created_at": 1623661533
72
+ }
73
+ ]
74
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "entity": "collection",
3
+ "count": 2,
4
+ "items": [
5
+ {
6
+ "id": "setl_DGlQ1Rj8os78Ec",
7
+ "entity": "settlement",
8
+ "amount": 9973635,
9
+ "status": "processed",
10
+ "fees": 471699,
11
+ "tax": 42070,
12
+ "utr": "1568176960vxp0rj",
13
+ "created_at": 1568176960
14
+ },
15
+ {
16
+ "id": "setl_4xbSwsPABDJ8oK",
17
+ "entity": "settlement",
18
+ "amount": 50000,
19
+ "status": "processed",
20
+ "fees": 123,
21
+ "tax": 12,
22
+ "utr": "RZRP173069230702",
23
+ "created_at": 1509622306
24
+ }
25
+ ]
26
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "entity": "collection",
3
+ "count": 2,
4
+ "items": [
5
+ {
6
+ "id": "setlod_FNj7g2YS5J67Rz",
7
+ "entity": "settlement.ondemand",
8
+ "amount_requested": 200000,
9
+ "amount_settled": 199410,
10
+ "amount_pending": 0,
11
+ "amount_reversed": 0,
12
+ "fees": 590,
13
+ "tax": 90,
14
+ "currency": "INR",
15
+ "settle_full_balance": false,
16
+ "status": "processed",
17
+ "description": "Need this to make vendor payments.",
18
+ "notes": {
19
+ "notes_key_1": "Tea, Earl Grey, Hot",
20
+ "notes_key_2": "Tea, Earl Grey… decaf."
21
+ },
22
+ "created_at": 1596771429,
23
+ "ondemand_payouts": {
24
+ "entity": "collection",
25
+ "count": 1,
26
+ "items": [
27
+ {
28
+ "id": "setlodp_FNj7g2cbvw8ueO",
29
+ "entity": "settlement.ondemand_payout",
30
+ "initiated_at": 1596771430,
31
+ "processed_at": 1596778752,
32
+ "reversed_at": null,
33
+ "amount": 200000,
34
+ "amount_settled": 199410,
35
+ "fees": 590,
36
+ "tax": 90,
37
+ "utr": "022011173948",
38
+ "status": "processed",
39
+ "created_at": 1596771429
40
+ }
41
+ ]
42
+ }
43
+ },
44
+ {
45
+ "id": "setlod_FJOp0jOWlalIvt",
46
+ "entity": "settlement.ondemand",
47
+ "amount_requested": 300000,
48
+ "amount_settled": 299114,
49
+ "amount_pending": 0,
50
+ "amount_reversed": 0,
51
+ "fees": 886,
52
+ "tax": 136,
53
+ "currency": "INR",
54
+ "settle_full_balance": false,
55
+ "status": "processed",
56
+ "description": "Need this to buy stock.",
57
+ "notes": {
58
+ "notes_key_1": "Tea, Earl Grey, Hot",
59
+ "notes_key_2": "Tea, Earl Grey… decaf."
60
+ },
61
+ "created_at": 1595826576,
62
+ "ondemand_payouts": {
63
+ "entity": "collection",
64
+ "count": 1,
65
+ "items": [
66
+ {
67
+ "id": "setlodp_FJOp0jTqoZdGen",
68
+ "entity": "settlement.ondemand_payout",
69
+ "initiated_at": 1595826577,
70
+ "processed_at": 1595826588,
71
+ "reversed_at": null,
72
+ "amount": 300000,
73
+ "amount_settled": 299114,
74
+ "fees": 886,
75
+ "tax": 136,
76
+ "utr": "020910199316",
77
+ "status": "processed",
78
+ "created_at": 1595826576
79
+ }
80
+ ]
81
+ }
82
+ }
83
+ ]
84
+ }
@@ -0,0 +1,117 @@
1
+ {
2
+ "entity": "collection",
3
+ "count": 4,
4
+ "items": [
5
+ {
6
+ "entity_id": "pay_DEXrnipqTmWVGE",
7
+ "type": "payment",
8
+ "debit": 0,
9
+ "credit": 97100,
10
+ "amount": 100000,
11
+ "currency": "INR",
12
+ "fee": 2900,
13
+ "tax": 0,
14
+ "on_hold": false,
15
+ "settled": true,
16
+ "created_at": 1567692556,
17
+ "settled_at": 1568176960,
18
+ "settlement_id": "setl_DGlQ1Rj8os78Ec",
19
+ "posted_at": null,
20
+ "credit_type": "default",
21
+ "description": "Recurring Payment via Subscription",
22
+ "notes": "{}",
23
+ "payment_id": null,
24
+ "settlement_utr": "1568176960vxp0rj",
25
+ "order_id": "order_DEXrnRiR3SNDHA",
26
+ "order_receipt": null,
27
+ "method": "card",
28
+ "card_network": "MasterCard",
29
+ "card_issuer": "KARB",
30
+ "card_type": "credit",
31
+ "dispute_id": null
32
+ },
33
+ {
34
+ "entity_id": "rfnd_DGRcGzZSLyEdg1",
35
+ "type": "refund",
36
+ "debit": 242500,
37
+ "credit": 0,
38
+ "amount": 242500,
39
+ "currency": "INR",
40
+ "fee": 0,
41
+ "tax": 0,
42
+ "on_hold": false,
43
+ "settled": true,
44
+ "created_at": 1568107224,
45
+ "settled_at": 1568176960,
46
+ "settlement_id": "setl_DGlQ1Rj8os78Ec",
47
+ "posted_at": null,
48
+ "credit_type": "default",
49
+ "description": null,
50
+ "notes": "{}",
51
+ "payment_id": "pay_DEXq1pACSqFxtS",
52
+ "settlement_utr": "1568176960vxp0rj",
53
+ "order_id": "order_DEXpmZgffXNvuI",
54
+ "order_receipt": null,
55
+ "method": "card",
56
+ "card_network": "MasterCard",
57
+ "card_issuer": "KARB",
58
+ "card_type": "credit",
59
+ "dispute_id": null
60
+ },
61
+ {
62
+ "entity_id": "trf_DEUoCEtdsJgvl7",
63
+ "type": "transfer",
64
+ "debit": 100296,
65
+ "credit": 0,
66
+ "amount": 100000,
67
+ "currency": "INR",
68
+ "fee": 296,
69
+ "tax": 46,
70
+ "on_hold": false,
71
+ "settled": true,
72
+ "created_at": 1567681786,
73
+ "settled_at": 1568176960,
74
+ "settlement_id": "setl_DGlQ1Rj8os78Ec",
75
+ "posted_at": null,
76
+ "credit_type": "default",
77
+ "description": null,
78
+ "notes": null,
79
+ "payment_id": "pay_DEApNNTR6xmqJy",
80
+ "settlement_utr": "1568176960vxp0rj",
81
+ "order_id": null,
82
+ "order_receipt": null,
83
+ "method": null,
84
+ "card_network": null,
85
+ "card_issuer": null,
86
+ "card_type": null,
87
+ "dispute_id": null
88
+ },
89
+ {
90
+ "entity_id": "adj_EhcHONhX4ChgNC",
91
+ "type": "adjustment",
92
+ "debit": 0,
93
+ "credit": 1012,
94
+ "amount": 1012,
95
+ "currency": "INR",
96
+ "fee": 0,
97
+ "tax": 0,
98
+ "on_hold": false,
99
+ "settled": true,
100
+ "created_at": 1567681786,
101
+ "settled_at": 1568176960,
102
+ "settlement_id": "setl_DGlQ1Rj8os78Ec",
103
+ "posted_at": null,
104
+ "description": "test reason",
105
+ "notes": null,
106
+ "payment_id": null,
107
+ "settlement_utr": null,
108
+ "order_id": null,
109
+ "order_receipt": null,
110
+ "method": null,
111
+ "card_network": null,
112
+ "card_issuer": null,
113
+ "card_type": null,
114
+ "dispute_id": null
115
+ }
116
+ ]
117
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "success": true
3
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "entity": "collection",
3
+ "count": 1,
4
+ "items": [
5
+ {
6
+ "id": "token_Ip8u7q7FA77Q30",
7
+ "entity": "token",
8
+ "token": "BZpWWtYHnSJfoi",
9
+ "bank": "HDFC",
10
+ "wallet": null,
11
+ "method": "emandate",
12
+ "vpa": null,
13
+ "recurring": true,
14
+ "recurring_details": {
15
+ "status": "confirmed",
16
+ "failure_reason": null
17
+ },
18
+ "auth_type": "debitcard",
19
+ "mrn": null,
20
+ "used_at": 1647012394,
21
+ "created_at": 1643368664,
22
+ "bank_details": {
23
+ "beneficiary_name": "Gaurav Kumar",
24
+ "account_number": "11214311215411",
25
+ "ifsc": "HDFC0001233",
26
+ "account_type": "savings"
27
+ },
28
+ "max_amount": 50000,
29
+ "expired_at": 2147483647,
30
+ "notes": [
31
+
32
+ ],
33
+ "dcc_enabled": false
34
+ }
35
+ ]
36
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "entity":"collection",
3
+ "count":1,
4
+ "items":[
5
+ {
6
+ "id":"trf_DGSTeXzBkEVh48",
7
+ "entity":"transfer",
8
+ "transfer_status":"processed",
9
+ "settlement_status":null,
10
+ "source":"pay_DGSRhvMbOqeCe7",
11
+ "recipient":"acc_CMaomTz4o0FOFz",
12
+ "amount":500,
13
+ "currency":"INR",
14
+ "amount_reversed":0,
15
+ "notes":[
16
+
17
+ ],
18
+ "fees":2,
19
+ "tax":0,
20
+ "on_hold":false,
21
+ "on_hold_until":null,
22
+ "recipient_settlement_id":"setl_DHYJ3dRPqQkAgV",
23
+ "created_at":1568110256,
24
+ "linked_account_notes":[
25
+
26
+ ],
27
+ "processed_at":1568110297,
28
+ "error":{
29
+ "code":null,
30
+ "description":null,
31
+ "field":null,
32
+ "source":null,
33
+ "step":null,
34
+ "reason":null
35
+ }
36
+ }
37
+ ]
38
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "entity": "collection",
3
+ "count": 1,
4
+ "items": [
5
+ {
6
+ "id": "trf_J0FrZYPql4riDx",
7
+ "entity": "transfer",
8
+ "status": "processed",
9
+ "source": "pay_I6i1edcUUytu9p",
10
+ "recipient": "acc_I0QRP7PpvaHhpB",
11
+ "amount": 100,
12
+ "currency": "INR",
13
+ "amount_reversed": 0,
14
+ "fees": 1,
15
+ "tax": 0,
16
+ "notes": {
17
+ "name": "Saurav Kumar",
18
+ "roll_no": "IEC2011026"
19
+ },
20
+ "linked_account_notes": [
21
+ "roll_no"
22
+ ],
23
+ "on_hold": true,
24
+ "on_hold_until": null,
25
+ "settlement_status": "on_hold",
26
+ "recipient_settlement_id": null,
27
+ "created_at": 1645794911,
28
+ "processed_at": 1645794911,
29
+ "error": {
30
+ "code": null,
31
+ "description": null,
32
+ "reason": null,
33
+ "field": null,
34
+ "step": null,
35
+ "id": "trf_J0FrZYPql4riDx",
36
+ "source": null,
37
+ "metadata": null
38
+ }
39
+ }
40
+ ]
41
+ }
@@ -6,8 +6,8 @@ module Razorpay
6
6
  class Item < Razorpay::Entity; end
7
7
 
8
8
  def setup
9
- @subscription_id = 'fake_subscription_id'
10
- @addon_id = 'fake_addon_id'
9
+ @subscription_id = 'sub_00000000000001'
10
+ @addon_id = 'ao_IrSY3UIqDRx7df'
11
11
 
12
12
  # Any request that ends with addons/addon_id
13
13
  stub_get(%r{addons\/#{Regexp.quote(@addon_id)}$}, 'fake_addon')
@@ -22,12 +22,19 @@ module Razorpay
22
22
  assert_instance_of Razorpay::Addon, addon, 'Addon not an instance of Addon class'
23
23
  assert_equal @addon_id, addon.id, 'Addon IDs do not match'
24
24
  assert_equal 1, addon.quantity, 'Addon quantity is accessible'
25
- assert_equal 'fake_subscription_id', addon.subscription_id, 'Addon subscription_id is accessible'
25
+ assert_equal @subscription_id, addon.subscription_id, 'Addon subscription_id is accessible'
26
26
  assert_nil addon.invoice_id, 'Addon invoice_id is accessible'
27
27
 
28
28
  assert_addon_item_details(addon)
29
29
  end
30
30
 
31
+ def test_fetch_all_addon
32
+ stub_get(/addons$/, 'addon_collection')
33
+ addons = Razorpay::Addon.all
34
+ assert_instance_of Razorpay::Collection, addons, 'Addons should be an array'
35
+ refute_empty addons.items, 'Addon should be more than one'
36
+ end
37
+
31
38
  def test_add_addons_to_subscription
32
39
  addon_attrs = {
33
40
  item: {
@@ -37,14 +44,14 @@ module Razorpay
37
44
  quantity: 1
38
45
  }
39
46
 
40
- stub_post(%r{subscriptions\/#{@subscription_id}\/addons$}, 'fake_addon', create_addon_stub_url_params)
47
+ stub_post(%r{subscriptions\/#{@subscription_id}\/addons$}, 'fake_addon', addon_attrs.to_json)
41
48
 
42
- addon = Razorpay::Addon.create(@subscription_id, addon_attrs)
49
+ addon = Razorpay::Addon.create(@subscription_id, addon_attrs.to_json)
43
50
  assert_instance_of Razorpay::Addon, addon, 'Addon not an instance of Addon class'
44
51
 
45
- assert_equal 'fake_addon_id', addon.id, 'Addon IDs do not match'
52
+ assert_equal @addon_id, addon.id, 'Addon IDs do not match'
46
53
  assert_equal 1, addon.quantity, 'Addon quantity is accessible'
47
- assert_equal 'fake_subscription_id', addon.subscription_id, 'Addon subscription_id is accessible'
54
+ assert_equal @subscription_id, addon.subscription_id, 'Addon subscription_id is accessible'
48
55
  assert_nil addon.invoice_id, 'Addon invoice_id is accessible'
49
56
 
50
57
  assert_addon_item_details(addon)
@@ -55,18 +62,11 @@ module Razorpay
55
62
  def assert_addon_item_details(addon)
56
63
  addon_item = Item.new(addon.item)
57
64
 
58
- assert_equal 'fake_item_id', addon_item.id, 'Addon Item id is accessible'
65
+ assert_equal 'item_00000000000001', addon_item.id, 'Addon Item id is accessible'
59
66
  assert_equal 'fake_item_name', addon_item.name, 'Addon Item name is accessible'
60
67
  assert_equal 'fake_item_description', addon_item.description, 'Addon Item description is accessible'
61
68
  assert_equal 'INR', addon_item.currency, 'Addon Item currency is accessible'
62
69
  assert_equal 500, addon_item.amount, 'Addon Item amount is accessible'
63
70
  end
64
-
65
- def create_addon_stub_url_params
66
- %w(
67
- item[name]=fake_addon_name&item[currency]=INR&item[amount]=5000&
68
- item[description]=fake_addon_description&quantity=1
69
- ).join
70
- end
71
71
  end
72
72
  end
@@ -5,10 +5,9 @@ module Razorpay
5
5
  class RazorpayCustomerTest < Minitest::Test
6
6
  def setup
7
7
  @customer_id = 'cust_6vRXClWqnLhV14'
8
-
8
+ @token_id = "token_FHfn3rIiM1Z8nr"
9
9
  # Any request that ends with customers/customer_id
10
10
  stub_get(%r{customers/#{@customer_id}$}, 'fake_customer')
11
- stub_get(/customers$/, 'customer_collection')
12
11
  end
13
12
 
14
13
  def test_customer_should_be_defined
@@ -32,14 +31,39 @@ module Razorpay
32
31
  end
33
32
 
34
33
  def test_fetch_all_customers
34
+ stub_get(/customers$/, 'customer_collection')
35
35
  customers = Razorpay::Customer.all
36
36
  assert_instance_of Razorpay::Collection, customers
37
37
  end
38
38
 
39
39
  def test_fetch_specific_customer
40
+ stub_get(%r{customers/#{@customer_id}$}, 'fake_customer')
40
41
  customer = Razorpay::Customer.fetch(@customer_id)
41
42
  assert_instance_of Razorpay::Customer, customer
42
- assert_equal customer.id, @customer_id
43
+ assert_equal "test@razorpay.com", customer.email
44
+ end
45
+
46
+ # def test_customer_fetch_tokens
47
+ # stub_get(%r{customers/#{@customer_id}$}, 'fake_customer')
48
+ # stub_get(%r{customers/cust_6vRXClWqnLhV14/tokens$}, 'tokens_collection')
49
+ # tokens = Razorpay::Customer.fetch(@customer_id).fetchTokens
50
+ # assert_instance_of Razorpay::Collection, tokens, 'Tokens should be an array'
51
+ # refute_empty tokens.items, 'tokens should be more than one'
52
+ # end
53
+
54
+ def test_customer_fetch_token
55
+ stub_get(%r{customers/#{@customer_id}$}, 'fake_customer')
56
+ stub_get(%r{customers/cust_6vRXClWqnLhV14/tokens/token_FHfn3rIiM1Z8nr$}, 'fake_token')
57
+ token = Razorpay::Customer.fetch(@customer_id).fetchToken("token_FHfn3rIiM1Z8nr")
58
+ assert_instance_of Razorpay::Entity, token, 'Token not an instance of Razorpay::Entity class'
59
+ assert_equal "token_FHfn3rIiM1Z8nr", token.id
60
+ end
61
+
62
+ def test_customer_delete_token
63
+ stub_get(%r{customers/#{@customer_id}$}, 'fake_customer')
64
+ stub_delete(%r{customers/cust_6vRXClWqnLhV14/tokens/token_FHfn3rIiM1Z8nr$}, 'delete_token')
65
+ token = Razorpay::Customer.fetch(@customer_id).deleteToken("token_FHfn3rIiM1Z8nr")
66
+ assert token.deleted
43
67
  end
44
68
  end
45
69
  end