From b6d8f2f215498f68ec545aad47386c492086bfbb Mon Sep 17 00:00:00 2001 From: ankitdas13 Date: Wed, 13 Mar 2024 00:59:26 +0530 Subject: [PATCH 1/4] update customer endpoint --- documents/customers.md | 245 ++++++++++++++++++ src/main/java/com/razorpay/BankAccount.java | 10 + .../java/com/razorpay/BankAccountClient.java | 13 + src/main/java/com/razorpay/Constants.java | 7 + .../java/com/razorpay/CustomerClient.java | 16 ++ .../java/com/razorpay/RazorpayClient.java | 2 + .../java/com/razorpay/CustomerClientTest.java | 167 +++++++++++- 7 files changed, 459 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/razorpay/BankAccount.java create mode 100644 src/main/java/com/razorpay/BankAccountClient.java diff --git a/documents/customers.md b/documents/customers.md index dfd8e665..b40a60e3 100644 --- a/documents/customers.md +++ b/documents/customers.md @@ -155,6 +155,251 @@ Customer customer = instance.customers.fetch(customerId); ------------------------------------------------------------------------------------------------------- + +### Add Bank Account of Customer + +```java +String customerId = "cust_N5mywh91sXB69O" + +JSONObject customerRequest = new JSONObject(); +customerRequest.put("ifsc_code","UTIB0000194"); +customerRequest.put("account_number","916010082985661"); +customerRequest.put("beneficiary_name","Pratheek"); +customerRequest.put("beneficiary_address1","address 1"); +customerRequest.put("beneficiary_address2","address 2"); +customerRequest.put("beneficiary_address3","address 3"); +customerRequest.put("beneficiary_address4","address 4"); +customerRequest.put("beneficiary_email","random@email.com"); +customerRequest.put("beneficiary_mobile","8762489310"); +customerRequest.put("beneficiary_city","Bangalore"); +customerRequest.put("beneficiary_state","KA"); +customerRequest.put("beneficiary_country","IN"); + +BankAccount bankaccount = instance.customers.addBankAccount(customerId, customerRequest) +``` + +**Parameters:** + +| Name | Type | Description | +|---------------|-------------|---------------------------------------------| +| customerId* | string | Unique identifier of the customer. | +| account_number | string | Customer's bank account number. | +| beneficiary_name | string | The name of the beneficiary associated with the bank account. | +| beneficiary_address1 | string | The virtual payment address. | +| beneficiary_email | string | Email address of the beneficiary. | +| beneficiary_mobile | integer | Mobile number of the beneficiary. | +| beneficiary_city | string | The name of the city of the beneficiary. | +| beneficiary_state | string | The state of the beneficiary. | +| beneficiary_pin | interger | The pin code of the beneficiary's address. | +| ifsc_code | string | The IFSC code of the bank branch associated with the account. | + +**Response:** +```json +{ + "id" : "cust_1Aa00000000001", + "entity": "customer", + "name" : "Saurav Kumar", + "email" : "Saurav.kumar@example.com", + "contact" : "+919000000000", + "gstin":"29XAbbA4369J1PA", + "notes" : [], + "created_at ": 1234567890 +} +``` + +------------------------------------------------------------------------------------------------------- + +### Delete Bank Account of Customer + +```java +String customerId = "cust_N5mywh91sXB69O" + +String bankAccountId = "ba_N6aM8uo64IzxHu" + +Customer customer = instance.customers.deleteBankAccount(customerId, bankaccountId) +``` + +**Parameters:** + +| Name | Type | Description | +|---------------|-------------|---------------------------------------------| +| customerId* | string | Unique identifier of the customer. | +| bankAccountId | string | The bank_id that needs to be deleted. | + +**Response:** +```json +{ + "id": "ba_Evg09Ll05SIPSD", + "ifsc": "ICIC0001207", + "bank_name": "ICICI Bank", + "name": "Test R4zorpay", + "account_number": "XXXXXXXXXXXXXXX0434", + "status": "deleted" +} +``` + +------------------------------------------------------------------------------------------------------- + +### Eligibility Check API + +```java +JSONObject customerRequest = new JSONObject(); +customerRequest.put("inquiry","affordability"); +customerRequest.put("amount", 500); +customerRequest.put("currency","INR"); +JSONObject customer = new JSONObject(); +customer.put("id","elig_xxxxxxxxxxxxx") +customer.put("contact","+919999999999") +customer.put("ip","105.106.107.108") +customer.put("referrer","https://merchansite.com/example/paybill") +customer.put("user_agent","Mozilla/5.0") +customerRequest.put("customer",customer); + +Customer customer = instance.customers.requestEligibilityCheck(customerRequest) +``` + +**Parameters:** + +| Name | Type | Description | +|---------------|-------------|---------------------------------------------| +| inquiry | string | List of methods or instruments on which eligibility check is required. | +| amount* | string | The amount for which the order was created, in currency subunits. | +| currency* | string | A three-letter ISO code for the currency in which you want to accept the payment. | +| customer* | object | Customer details. [here](https://razorpay.com/docs/payments/payment-gateway/affordability/eligibility-check/#eligibility-check-api) | +| instruments | object | Payment instruments on which an eligibility check is required. [here](https://razorpay.com/docs/payments/payment-gateway/affordability/eligibility-check/#eligibility-check-api) | + + +**Response:** +```json +{ + "amount": "500000", + "customer": { + "id": "KkBhM9EC1Y0HTm", + "contact": "+919999999999" + }, + "instruments": [ + { + "method": "emi", + "issuer": "HDFC", + "type": "debit", + "eligibility_req_id": "elig_xxxxxxxxxxxxx", + "eligibility": { + "status": "eligible" + } + }, + { + "method": "paylater", + "provider": "getsimpl", + "eligibility_req_id": "elig_xxxxxxxxxxxxx", + "eligibility": { + "status": "eligible" + } + }, + { + "method": "paylater", + "provider": "icic", + "eligibility_req_id": "elig_xxxxxxxxxxxxx", + "eligibility": { + "status": "eligible" + } + }, + { + "method": "cardless_emi", + "provider": "walnut369", + "eligibility_req_id": "elig_xxxxxxxxxxxxx", + "eligibility": { + "status": "ineligible", + "error": { + "code": "GATEWAY_ERROR", + "description": "The customer has not been approved by the partner.", + "source": "business", + "step": "inquiry", + "reason": "user_not_approved" + } + } + }, + { + "method": "cardless_emi", + "provider": "zestmoney", + "eligibility_req_id": "elig_xxxxxxxxxxxxx", + "eligibility": { + "status": "ineligible", + "error": { + "code": "GATEWAY_ERROR", + "description": "The customer has exhausted their credit limit.", + "source": "business", + "step": "inquiry", + "reason": "credit_limit_exhausted" + } + } + }, + { + "method": "paylater", + "provider": "lazypay", + "eligibility_req_id": "elig_xxxxxxxxxxxxx", + "eligibility": { + "status": "ineligible", + "error": { + "code": "GATEWAY_ERROR", + "description": "The order amount is less than the minimum transaction amount.", + "source": "business", + "step": "inquiry", + "reason": "min_amt_required" + } + } + } + ] +} +``` + +------------------------------------------------------------------------------------------------------- + +### Fetch Eligibility by id + +```java +String eligibilityId = "elig_xxxxxxxxxxxxx" +Customer customer = instance.customers.fetchEligibility(eligibilityId) +``` + +**Parameters:** + +| Name | Type | Description | +|---------------|-------------|---------------------------------------------| +| eligibilityId | string | The unique identifier of the eligibility request to be retrieved. | + +**Response:** +```json +{ + "instruments": [ + { + "method": "paylater", + "provider": "lazypay", + "eligibility_req_id": "elig_xxxxxxxxxxxxx", + "eligibility": { + "status": "eligible" + } + }, + { + "method": "paylater", + "provider": "getsimpl", + "eligibility_req_id": "elig_xxxxxxxxxxxxx", + "eligibility": { + "status": "ineligible", + "error": { + "code": "GATEWAY_ERROR", + "description": "The customer has exhausted their credit limit", + "source": "gateway", + "step": "inquiry", + "reason": "credit_limit_exhausted" + } + } + } + ] +} +``` + +------------------------------------------------------------------------------------------------------- + **PN: * indicates mandatory fields**

diff --git a/src/main/java/com/razorpay/BankAccount.java b/src/main/java/com/razorpay/BankAccount.java new file mode 100644 index 00000000..47b4303b --- /dev/null +++ b/src/main/java/com/razorpay/BankAccount.java @@ -0,0 +1,10 @@ +package com.razorpay; + +import org.json.JSONObject; + +public class BankAccount extends Entity { + + public BankAccount(JSONObject jsonObject) { + super(jsonObject); + } +} diff --git a/src/main/java/com/razorpay/BankAccountClient.java b/src/main/java/com/razorpay/BankAccountClient.java new file mode 100644 index 00000000..0663714f --- /dev/null +++ b/src/main/java/com/razorpay/BankAccountClient.java @@ -0,0 +1,13 @@ +package com.razorpay; + +import java.util.List; + +import org.json.JSONObject; + +public class BankAccountClient extends ApiClient { + + BankAccountClient(String auth) { + super(auth); + } + +} diff --git a/src/main/java/com/razorpay/Constants.java b/src/main/java/com/razorpay/Constants.java index 98452716..8a6a7fc2 100755 --- a/src/main/java/com/razorpay/Constants.java +++ b/src/main/java/com/razorpay/Constants.java @@ -170,4 +170,11 @@ public class Constants { static final String TOKEN = "/token"; static final String REVOKE = "/revoke"; + static final String ADD_BANK_ACCOUNT = "customers/%s/bank_account"; + + static final String DELETE_BANK_ACCOUNT = "customers/%s/bank_account/%s"; + + static final String ELIGIBILITY = "customers/eligibility"; + + static final String ELIGIBILITY_FETCH = "customers/eligibility/%s"; } diff --git a/src/main/java/com/razorpay/CustomerClient.java b/src/main/java/com/razorpay/CustomerClient.java index aef1da36..6bbe079d 100644 --- a/src/main/java/com/razorpay/CustomerClient.java +++ b/src/main/java/com/razorpay/CustomerClient.java @@ -50,4 +50,20 @@ public Token fetchToken(String id, String tokenId) throws RazorpayException { public Customer deleteToken(String id, String tokenId) throws RazorpayException { return delete(Constants.VERSION, String.format(Constants.TOKEN_DELETE, id, tokenId), null); } + + public BankAccount addBankAccount(String id, JSONObject request) throws RazorpayException { + return post(Constants.VERSION, String.format(Constants.ADD_BANK_ACCOUNT, id), request); + } + + public Customer deleteBankAccount(String id, String bankId) throws RazorpayException { + return delete(Constants.VERSION, String.format(Constants.DELETE_BANK_ACCOUNT, id, bankId), null); + } + + public Customer requestEligibilityCheck(JSONObject request) throws RazorpayException { + return post(Constants.VERSION, Constants.ELIGIBILITY, request); + } + + public Customer fetchEligibility(String id) throws RazorpayException { + return get(Constants.VERSION, String.format(Constants.ELIGIBILITY_FETCH, id), null); + } } diff --git a/src/main/java/com/razorpay/RazorpayClient.java b/src/main/java/com/razorpay/RazorpayClient.java index f009117f..9f5e33d7 100755 --- a/src/main/java/com/razorpay/RazorpayClient.java +++ b/src/main/java/com/razorpay/RazorpayClient.java @@ -29,6 +29,7 @@ public class RazorpayClient { public ProductClient product; public WebhookClient webhook; public TncMap tncMap; + public BankAccountClient bankAccount; public RazorpayClient(String key, String secret) throws RazorpayException { this(key, secret, false); } @@ -66,6 +67,7 @@ private void initializeResources(String auth, Boolean enableLogging) throws Razo stakeholder = new StakeholderClient(auth); product = new ProductClient(auth); webhook = new WebhookClient(auth); + bankAccount = new BankAccountClient(auth); } public RazorpayClient addHeaders(Map headers) { diff --git a/src/test/java/com/razorpay/CustomerClientTest.java b/src/test/java/com/razorpay/CustomerClientTest.java index b6ab38c7..100f5fc6 100644 --- a/src/test/java/com/razorpay/CustomerClientTest.java +++ b/src/test/java/com/razorpay/CustomerClientTest.java @@ -14,7 +14,8 @@ public class CustomerClientTest extends BaseTest{ protected CustomerClient customerClient = new CustomerClient(TEST_SECRET_KEY); private static final String CUSTOMER_ID = "cust_1Aa00000000004"; - + private static final String BANKACCOUNT_ID = "ba_LSZht1Cm7xFTwF"; + private static final String ELIGILITY_ID = "elig_F1cxDoHWD4fkQt"; private static final String TOKEN_ID = "token_Hxe0skTXLeg9pF"; /** @@ -295,4 +296,168 @@ public void testDeleteToken() throws IOException, RazorpayException { assertTrue(false); } } + + /** + * Add Bank Account + */ + @Test + public void testaddBankAccount() throws RazorpayException{ + + JSONObject request = new JSONObject("{\n" + + " \"ifsc_code\" : \"UTIB0000194\",\n" + + " \"account_number\" :\"916010082985661\",\n" + + " \"beneficiary_name\" : \"Pratheek\",\n" + + " \"beneficiary_address1\" : \"address 1\",\n" + + " \"beneficiary_address2\" : \"address 2\",\n" + + " \"beneficiary_address3\" : \"address 3\",\n" + + " \"beneficiary_address4\" : \"address 4\",\n" + + " \"beneficiary_email\" : \"random@email.com\",\n" + + " \"beneficiary_mobile\" : \"8762489310\",\n" + + " \"beneficiary_city\" :\"Bangalore\",\n" + + " \"beneficiary_state\" : \"KA\",\n" + + " \"beneficiary_country\" : \"IN\"\n" + + "}"); + + String mockedResponseJson = "{\n" + + " \"id\": \"ba_LSZht1Cm7xFTwF\",\n" + + " \"entity\": \"bank_account\",\n" + + " \"ifsc\": \"ICIC0001207\",\n" + + " \"bank_name\": \"ICICI Bank\",\n" + + " \"name\": \"Gaurav Kumar\",\n" + + " \"notes\": [],\n" + + " \"account_number\": \"XXXXXXXXXXXXXXX0434\"\n" + + "}"; + try { + mockResponseFromExternalClient(mockedResponseJson); + mockResponseHTTPCodeFromExternalClient(200); + BankAccount customer = customerClient.addBankAccount(CUSTOMER_ID,request); + assertNotNull(customer); + assertEquals(BANKACCOUNT_ID,customer.get("id")); + String createRequest = getHost(String.format(Constants.ADD_BANK_ACCOUNT,CUSTOMER_ID)); + verifySentRequest(true, request.toString(), createRequest); + } catch (IOException e) { + assertTrue(false); + } + } + + /** + * Delete Bank Account + */ + @Test + public void testDeleteBankAccount() throws RazorpayException { + + String mockedResponseJson = "{\n" + + " \"id\": \"ba_LSZht1Cm7xFTwF\",\n" + + " \"entity\": \"customer\",\n" + + " \"ifsc\": \"ICIC0001207\",\n" + + " \"bank_name\": \"ICICI Bank\",\n" + + " \"name\": \"Test R4zorpay\",\n" + + " \"account_number\": \"XXXXXXXXXXXXXXX0434\",\n" + + " \"status\": \"deleted\"\n" + + "}"; + try { + mockResponseFromExternalClient(mockedResponseJson); + mockResponseHTTPCodeFromExternalClient(200); + Customer fetch = customerClient.deleteBankAccount(CUSTOMER_ID, BANKACCOUNT_ID); + assertNotNull(fetch); + assertEquals(BANKACCOUNT_ID,fetch.get("id")); + String fetchRequest = getHost(String.format(Constants.DELETE_BANK_ACCOUNT, CUSTOMER_ID, BANKACCOUNT_ID)); + verifySentRequest(false, null, fetchRequest); + } catch (IOException e) { + assertTrue(false); + } + } + + /** + * Eligibility Check + */ + @Test + public void testEligibilityCheck() throws RazorpayException{ + + JSONObject request = new JSONObject("{\n" + + " \"ifsc_code\" : \"UTIB0000194\",\n" + + " \"account_number\" :\"916010082985661\",\n" + + " \"beneficiary_name\" : \"Pratheek\",\n" + + " \"beneficiary_address1\" : \"address 1\",\n" + + " \"beneficiary_address2\" : \"address 2\",\n" + + " \"beneficiary_address3\" : \"address 3\",\n" + + " \"beneficiary_address4\" : \"address 4\",\n" + + " \"beneficiary_email\" : \"random@email.com\",\n" + + " \"beneficiary_mobile\" : \"8762489310\",\n" + + " \"beneficiary_city\" :\"Bangalore\",\n" + + " \"beneficiary_state\" : \"KA\",\n" + + " \"beneficiary_country\" : \"IN\"\n" + + "}"); + + String mockedResponseJson = "{\n" + + " \"entity\": \"customer\",\n" + + " \"amount\": \"500000\",\n" + + " \"customer\": {\n" + + " \"id\": \"KkBhM9EC1Y0HTm\",\n" + + " \"contact\": \"+918220722114\"\n" + + " },\n" + + " \"instruments\": [\n" + + " {\n" + + " \"method\": \"emi\",\n" + + " \"issuer\": \"HDFC\",\n" + + " \"type\": \"debit\",\n" + + " \"eligibility_req_id\": \"elig_KkCNLzlNeMYQyZ\",\n" + + " \"eligibility\": {\n" + + " \"status\": \"eligible\"\n" + + " }\n" + + " }\n" + + " ]\n" + + "}"; + try { + mockResponseFromExternalClient(mockedResponseJson); + mockResponseHTTPCodeFromExternalClient(200); + Customer customer = customerClient.requestEligibilityCheck(request); + assertNotNull(customer); + assertEquals(true, customer.has("amount")); + assertEquals(true, customer.has("customer")); + String createRequest = getHost(Constants.ELIGIBILITY); + verifySentRequest(true, request.toString(), createRequest); + } catch (IOException e) { + assertTrue(false); + } + } + + /** + * Fetch Eligibility + */ + @Test + public void testFetchEligibility() throws RazorpayException { + + String mockedResponseJson = "{\n" + + " \"entity\": \"customer\",\n" + + " \"amount\": \"500000\",\n" + + " \"customer\": {\n" + + " \"id\": \"KkBhM9EC1Y0HTm\",\n" + + " \"contact\": \"+918220722114\"\n" + + " },\n" + + " \"instruments\": [\n" + + " {\n" + + " \"method\": \"emi\",\n" + + " \"issuer\": \"HDFC\",\n" + + " \"type\": \"debit\",\n" + + " \"eligibility_req_id\": \"elig_KkCNLzlNeMYQyZ\",\n" + + " \"eligibility\": {\n" + + " \"status\": \"eligible\"\n" + + " }\n" + + " }\n" + + " ]\n" + + "}"; + try { + mockResponseFromExternalClient(mockedResponseJson); + mockResponseHTTPCodeFromExternalClient(200); + Customer fetch = customerClient.fetchEligibility(ELIGILITY_ID); + assertNotNull(fetch); + assertEquals(true, fetch.has("amount")); + assertEquals(true, fetch.has("customer")); + String fetchRequest = getHost(String.format(Constants.ELIGIBILITY_FETCH, ELIGILITY_ID)); + verifySentRequest(false, null, fetchRequest); + } catch (IOException e) { + assertTrue(false); + } + } } \ No newline at end of file From 5402ba6a7c8e5eebb0c1755789089a4445cd0ef7 Mon Sep 17 00:00:00 2001 From: ankitdas13 Date: Mon, 18 Mar 2024 16:38:06 +0530 Subject: [PATCH 2/4] made typo and pojo correction --- documents/customers.md | 28 ++++----- .../java/com/razorpay/CustomerClientTest.java | 58 +++++++++---------- 2 files changed, 41 insertions(+), 45 deletions(-) diff --git a/documents/customers.md b/documents/customers.md index b40a60e3..360f8ee7 100644 --- a/documents/customers.md +++ b/documents/customers.md @@ -180,18 +180,18 @@ BankAccount bankaccount = instance.customers.addBankAccount(customerId, customer **Parameters:** -| Name | Type | Description | -|---------------|-------------|---------------------------------------------| -| customerId* | string | Unique identifier of the customer. | -| account_number | string | Customer's bank account number. | -| beneficiary_name | string | The name of the beneficiary associated with the bank account. | -| beneficiary_address1 | string | The virtual payment address. | -| beneficiary_email | string | Email address of the beneficiary. | -| beneficiary_mobile | integer | Mobile number of the beneficiary. | -| beneficiary_city | string | The name of the city of the beneficiary. | -| beneficiary_state | string | The state of the beneficiary. | -| beneficiary_pin | interger | The pin code of the beneficiary's address. | -| ifsc_code | string | The IFSC code of the bank branch associated with the account. | +| Name | Type | Description | +|----------------------|----------|---------------------------------------------------------------| +| customerId* | string | Unique identifier of the customer. | +| account_number | string | Customer's bank account number. | +| beneficiary_name | string | The name of the beneficiary associated with the bank account. | +| beneficiary_address1 | string | The virtual payment address. | +| beneficiary_email | string | Email address of the beneficiary. | +| beneficiary_mobile | integer | Mobile number of the beneficiary. | +| beneficiary_city | string | The name of the city of the beneficiary. | +| beneficiary_state | string | The state of the beneficiary. | +| beneficiary_pin | interger | The pin code of the beneficiary's address. | +| ifsc_code | string | The IFSC code of the bank branch associated with the account. | **Response:** ```json @@ -223,8 +223,8 @@ Customer customer = instance.customers.deleteBankAccount(customerId, bankaccount | Name | Type | Description | |---------------|-------------|---------------------------------------------| -| customerId* | string | Unique identifier of the customer. | -| bankAccountId | string | The bank_id that needs to be deleted. | +| customerId* | string | Unique identifier of the customer. | +| bankAccountId | string | The bank_id that needs to be deleted. | **Response:** ```json diff --git a/src/test/java/com/razorpay/CustomerClientTest.java b/src/test/java/com/razorpay/CustomerClientTest.java index 100f5fc6..aefae72c 100644 --- a/src/test/java/com/razorpay/CustomerClientTest.java +++ b/src/test/java/com/razorpay/CustomerClientTest.java @@ -15,7 +15,7 @@ public class CustomerClientTest extends BaseTest{ private static final String CUSTOMER_ID = "cust_1Aa00000000004"; private static final String BANKACCOUNT_ID = "ba_LSZht1Cm7xFTwF"; - private static final String ELIGILITY_ID = "elig_F1cxDoHWD4fkQt"; + private static final String ELIGIBILITY_ID = "elig_F1cxDoHWD4fkQt"; private static final String TOKEN_ID = "token_Hxe0skTXLeg9pF"; /** @@ -303,20 +303,19 @@ public void testDeleteToken() throws IOException, RazorpayException { @Test public void testaddBankAccount() throws RazorpayException{ - JSONObject request = new JSONObject("{\n" + - " \"ifsc_code\" : \"UTIB0000194\",\n" + - " \"account_number\" :\"916010082985661\",\n" + - " \"beneficiary_name\" : \"Pratheek\",\n" + - " \"beneficiary_address1\" : \"address 1\",\n" + - " \"beneficiary_address2\" : \"address 2\",\n" + - " \"beneficiary_address3\" : \"address 3\",\n" + - " \"beneficiary_address4\" : \"address 4\",\n" + - " \"beneficiary_email\" : \"random@email.com\",\n" + - " \"beneficiary_mobile\" : \"8762489310\",\n" + - " \"beneficiary_city\" :\"Bangalore\",\n" + - " \"beneficiary_state\" : \"KA\",\n" + - " \"beneficiary_country\" : \"IN\"\n" + - "}"); + JSONObject request = new JSONObject(); + request.put("account_number","916010082985661"); + request.put("beneficiary_name","Pratheek"); + request.put("ifsc_code","UTIB0000194"); + request.put("beneficiary_address1","address 1"); + request.put("beneficiary_address2","address 2"); + request.put("beneficiary_address3","address 3"); + request.put("beneficiary_address4","address 4"); + request.put("beneficiary_email","random@email.com"); + request.put("beneficiary_mobile","8762489310"); + request.put("beneficiary_city","Bangalore"); + request.put("beneficiary_state","KA"); + request.put("beneficiary_country","IN"); String mockedResponseJson = "{\n" + " \"id\": \"ba_LSZht1Cm7xFTwF\",\n" + @@ -374,20 +373,17 @@ public void testDeleteBankAccount() throws RazorpayException { @Test public void testEligibilityCheck() throws RazorpayException{ - JSONObject request = new JSONObject("{\n" + - " \"ifsc_code\" : \"UTIB0000194\",\n" + - " \"account_number\" :\"916010082985661\",\n" + - " \"beneficiary_name\" : \"Pratheek\",\n" + - " \"beneficiary_address1\" : \"address 1\",\n" + - " \"beneficiary_address2\" : \"address 2\",\n" + - " \"beneficiary_address3\" : \"address 3\",\n" + - " \"beneficiary_address4\" : \"address 4\",\n" + - " \"beneficiary_email\" : \"random@email.com\",\n" + - " \"beneficiary_mobile\" : \"8762489310\",\n" + - " \"beneficiary_city\" :\"Bangalore\",\n" + - " \"beneficiary_state\" : \"KA\",\n" + - " \"beneficiary_country\" : \"IN\"\n" + - "}"); + JSONObject request = new JSONObject(); + request.put("inquiry","affordability"); + request.put("amount", 500); + request.put("currency","INR"); + JSONObject customerParam = new JSONObject(); + customerParam.put("id","elig_xxxxxxxxxxxxx"); + customerParam.put("contact","+919999999999"); + customerParam.put("ip","105.106.107.108"); + customerParam.put("referrer","https://merchansite.com/example/paybill"); + customerParam.put("user_agent","Mozilla/5.0"); + request.put("customer",customerParam); String mockedResponseJson = "{\n" + " \"entity\": \"customer\",\n" + @@ -450,11 +446,11 @@ public void testFetchEligibility() throws RazorpayException { try { mockResponseFromExternalClient(mockedResponseJson); mockResponseHTTPCodeFromExternalClient(200); - Customer fetch = customerClient.fetchEligibility(ELIGILITY_ID); + Customer fetch = customerClient.fetchEligibility(ELIGIBILITY_ID); assertNotNull(fetch); assertEquals(true, fetch.has("amount")); assertEquals(true, fetch.has("customer")); - String fetchRequest = getHost(String.format(Constants.ELIGIBILITY_FETCH, ELIGILITY_ID)); + String fetchRequest = getHost(String.format(Constants.ELIGIBILITY_FETCH, ELIGIBILITY_ID)); verifySentRequest(false, null, fetchRequest); } catch (IOException e) { assertTrue(false); From 55a19372e8aeb9c74cbdabd8286356252a0304a2 Mon Sep 17 00:00:00 2001 From: ankitdas13 Date: Thu, 21 Mar 2024 18:16:48 +0530 Subject: [PATCH 3/4] pojo to JSONObject --- .../java/com/razorpay/CustomerClientTest.java | 122 +++++++++--------- 1 file changed, 62 insertions(+), 60 deletions(-) diff --git a/src/test/java/com/razorpay/CustomerClientTest.java b/src/test/java/com/razorpay/CustomerClientTest.java index aefae72c..625ce28e 100644 --- a/src/test/java/com/razorpay/CustomerClientTest.java +++ b/src/test/java/com/razorpay/CustomerClientTest.java @@ -5,6 +5,7 @@ import org.mockito.InjectMocks; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import static org.junit.Assert.*; @@ -317,17 +318,18 @@ public void testaddBankAccount() throws RazorpayException{ request.put("beneficiary_state","KA"); request.put("beneficiary_country","IN"); - String mockedResponseJson = "{\n" + - " \"id\": \"ba_LSZht1Cm7xFTwF\",\n" + - " \"entity\": \"bank_account\",\n" + - " \"ifsc\": \"ICIC0001207\",\n" + - " \"bank_name\": \"ICICI Bank\",\n" + - " \"name\": \"Gaurav Kumar\",\n" + - " \"notes\": [],\n" + - " \"account_number\": \"XXXXXXXXXXXXXXX0434\"\n" + - "}"; + JSONObject mockedResponseJson = new JSONObject(); + mockedResponseJson.put("id", "ba_LSZht1Cm7xFTwF"); + mockedResponseJson.put("entity", "bank_account"); + mockedResponseJson.put("ifsc", "ICIC0001207"); + mockedResponseJson.put("bank_name", "ICICI Bank"); + mockedResponseJson.put("name", "Gaurav Kumar"); + ArrayList notes = new ArrayList(); + mockedResponseJson.put("notes", notes); + mockedResponseJson.put("account_number", "XXXXXXXXXXXXXXX0434"); + try { - mockResponseFromExternalClient(mockedResponseJson); + mockResponseFromExternalClient(mockedResponseJson.toString()); mockResponseHTTPCodeFromExternalClient(200); BankAccount customer = customerClient.addBankAccount(CUSTOMER_ID,request); assertNotNull(customer); @@ -345,17 +347,18 @@ public void testaddBankAccount() throws RazorpayException{ @Test public void testDeleteBankAccount() throws RazorpayException { - String mockedResponseJson = "{\n" + - " \"id\": \"ba_LSZht1Cm7xFTwF\",\n" + - " \"entity\": \"customer\",\n" + - " \"ifsc\": \"ICIC0001207\",\n" + - " \"bank_name\": \"ICICI Bank\",\n" + - " \"name\": \"Test R4zorpay\",\n" + - " \"account_number\": \"XXXXXXXXXXXXXXX0434\",\n" + - " \"status\": \"deleted\"\n" + - "}"; + JSONObject mockedResponseJson = new JSONObject(); + mockedResponseJson.put("id", "ba_LSZht1Cm7xFTwF"); + mockedResponseJson.put("entity", "bank_account"); + mockedResponseJson.put("ifsc", "ICIC0001207"); + mockedResponseJson.put("bank_name", "ICICI Bank"); + mockedResponseJson.put("name", "Gaurav Kumar"); + ArrayList notes = new ArrayList(); + mockedResponseJson.put("notes", notes); + mockedResponseJson.put("account_number", "XXXXXXXXXXXXXXX0434"); + try { - mockResponseFromExternalClient(mockedResponseJson); + mockResponseFromExternalClient(mockedResponseJson.toString()); mockResponseHTTPCodeFromExternalClient(200); Customer fetch = customerClient.deleteBankAccount(CUSTOMER_ID, BANKACCOUNT_ID); assertNotNull(fetch); @@ -385,27 +388,27 @@ public void testEligibilityCheck() throws RazorpayException{ customerParam.put("user_agent","Mozilla/5.0"); request.put("customer",customerParam); - String mockedResponseJson = "{\n" + - " \"entity\": \"customer\",\n" + - " \"amount\": \"500000\",\n" + - " \"customer\": {\n" + - " \"id\": \"KkBhM9EC1Y0HTm\",\n" + - " \"contact\": \"+918220722114\"\n" + - " },\n" + - " \"instruments\": [\n" + - " {\n" + - " \"method\": \"emi\",\n" + - " \"issuer\": \"HDFC\",\n" + - " \"type\": \"debit\",\n" + - " \"eligibility_req_id\": \"elig_KkCNLzlNeMYQyZ\",\n" + - " \"eligibility\": {\n" + - " \"status\": \"eligible\"\n" + - " }\n" + - " }\n" + - " ]\n" + - "}"; + + JSONObject mockedResponseJson = new JSONObject(); + mockedResponseJson.put("amount", 500000); + mockedResponseJson.put("entity", "customer"); + JSONObject _customerParam = new JSONObject(); + _customerParam.put("id","KkBhM9EC1Y0HTm"); + _customerParam.put("contact","+918220722114"); + mockedResponseJson.put("customer", _customerParam); + ArrayList instrument = new ArrayList(); + JSONObject instrumentObj = new JSONObject(); + instrumentObj.put("method","emi"); + instrumentObj.put("issuer","HDFC"); + instrumentObj.put("type","debit"); + instrumentObj.put("eligibility_req_id","elig_KkCNLzlNeMYQyZ"); + JSONObject eligibilityObj = new JSONObject(); + eligibilityObj.put("status","eligible"); + instrument.add(instrumentObj); + mockedResponseJson.put("instruments", instrument); + try { - mockResponseFromExternalClient(mockedResponseJson); + mockResponseFromExternalClient(mockedResponseJson.toString()); mockResponseHTTPCodeFromExternalClient(200); Customer customer = customerClient.requestEligibilityCheck(request); assertNotNull(customer); @@ -424,27 +427,26 @@ public void testEligibilityCheck() throws RazorpayException{ @Test public void testFetchEligibility() throws RazorpayException { - String mockedResponseJson = "{\n" + - " \"entity\": \"customer\",\n" + - " \"amount\": \"500000\",\n" + - " \"customer\": {\n" + - " \"id\": \"KkBhM9EC1Y0HTm\",\n" + - " \"contact\": \"+918220722114\"\n" + - " },\n" + - " \"instruments\": [\n" + - " {\n" + - " \"method\": \"emi\",\n" + - " \"issuer\": \"HDFC\",\n" + - " \"type\": \"debit\",\n" + - " \"eligibility_req_id\": \"elig_KkCNLzlNeMYQyZ\",\n" + - " \"eligibility\": {\n" + - " \"status\": \"eligible\"\n" + - " }\n" + - " }\n" + - " ]\n" + - "}"; + JSONObject mockedResponseJson = new JSONObject(); + mockedResponseJson.put("amount", 500000); + mockedResponseJson.put("entity", "customer"); + JSONObject _customerParam = new JSONObject(); + _customerParam.put("id","KkBhM9EC1Y0HTm"); + _customerParam.put("contact","+918220722114"); + mockedResponseJson.put("customer", _customerParam); + ArrayList instrument = new ArrayList(); + JSONObject instrumentObj = new JSONObject(); + instrumentObj.put("method","emi"); + instrumentObj.put("issuer","HDFC"); + instrumentObj.put("type","debit"); + instrumentObj.put("eligibility_req_id","elig_KkCNLzlNeMYQyZ"); + JSONObject eligibilityObj = new JSONObject(); + eligibilityObj.put("status","eligible"); + instrument.add(instrumentObj); + mockedResponseJson.put("instruments", instrument); + try { - mockResponseFromExternalClient(mockedResponseJson); + mockResponseFromExternalClient(mockedResponseJson.toString()); mockResponseHTTPCodeFromExternalClient(200); Customer fetch = customerClient.fetchEligibility(ELIGIBILITY_ID); assertNotNull(fetch); From 513814bad625fa2b64bf1e1e3e4718c13fbe3c47 Mon Sep 17 00:00:00 2001 From: ankitdas13 Date: Tue, 26 Mar 2024 14:18:39 +0530 Subject: [PATCH 4/4] testcase typo correction --- src/test/java/com/razorpay/CustomerClientTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/razorpay/CustomerClientTest.java b/src/test/java/com/razorpay/CustomerClientTest.java index 625ce28e..c080268e 100644 --- a/src/test/java/com/razorpay/CustomerClientTest.java +++ b/src/test/java/com/razorpay/CustomerClientTest.java @@ -349,7 +349,7 @@ public void testDeleteBankAccount() throws RazorpayException { JSONObject mockedResponseJson = new JSONObject(); mockedResponseJson.put("id", "ba_LSZht1Cm7xFTwF"); - mockedResponseJson.put("entity", "bank_account"); + mockedResponseJson.put("entity", "customer"); mockedResponseJson.put("ifsc", "ICIC0001207"); mockedResponseJson.put("bank_name", "ICICI Bank"); mockedResponseJson.put("name", "Gaurav Kumar");