Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added expanded details methods #312

Merged
merged 3 commits into from
Apr 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
257 changes: 257 additions & 0 deletions documents/payment.md
Original file line number Diff line number Diff line change
Expand Up @@ -826,6 +826,263 @@ Iin token = instance.iin.fetch(tokenIin);
]
}
```
-------------------------------------------------------------------------------------------------------

### Fetch a Payment (With Expanded EMI Details)

```java
JSONObject request = new JSONObject();
request.put("expand[]","emi");

Payment payment = instance.payments.expandedDetails("pay_XXXXXXXXXXXXXX",request);
```

**Parameters:**

| Name | Type | Description |
|-------------|---------|------------------------------------------------------------------|
| paymentId* | integer | Unique identifier of the payment |
| expand[] | string | Use to expand the `emi` details when the payment method is emi. |

**Response:** <br>

```json
{
"id": "pay_DG4ZdRK8ZnXC3k",
"entity": "payment",
"amount": 200000,
"currency": "INR",
"status": "authorized",
"order_id": null,
"invoice_id": null,
"international": false,
"method": "emi",
"amount_refunded": 0,
"refund_status": null,
"captured": false,
"description": null,
"card_id": "card_DG4ZdUO3xABb20",
"bank": "ICIC",
"wallet": null,
"vpa": null,
"email": "[email protected]",
"contact": "+919972000005",
"notes": [],
"fee": null,
"tax": null,
"error_code": null,
"error_description": null,
"error_source": null,
"error_step": null,
"error_reason": null,
"emi": {
"issuer": "ICIC",
"rate": 1300,
"duration": 6
},
"acquirer_data": {
"auth_code": "828553"
},
"created_at": 1568026077
}
```
-------------------------------------------------------------------------------------------------------

### Fetch a Payment (With Expanded Card Details)

```java
JSONObject request = new JSONObject();
request.put("expand[]","card");

Payment payment = instance.payments.expandedDetails("pay_XXXXXXXXXXXXXX",request);
```

**Parameters:**

| Name | Type | Description |
|-------------|---------|---------------------------------------------------------------------|
| paymentId* | integer | Unique identifier of the payment |
| expand[] | string | Use to expand the card details when the payment method is `card`. |

**Response:** <br>

```json
{
"id": "pay_H9oR0gLCaVlV6m",
"entity": "payment",
"amount": 100,
"currency": "INR",
"status": "failed",
"order_id": "order_H9o58N6qmLYQKC",
"invoice_id": null,
"terminal_id": "term_G5kJnYM9GhhLYT",
"international": false,
"method": "card",
"amount_refunded": 0,
"refund_status": null,
"captured": false,
"description": null,
"card_id": "card_H9oR0ocen1cmZq",
"card": {
"id": "card_H9oR0ocen1cmZq",
"entity": "card",
"name": "Gaurav",
"last4": "1213",
"network": "RuPay",
"type": "credit",
"issuer": "UTIB",
"international": false,
"emi": false,
"sub_type": "business"
},
"bank": null,
"wallet": null,
"vpa": null,
"email": "[email protected]",
"contact": "+919000090000",
"notes": {
"email": "[email protected]",
"phone": "09000090000"
},
"fee": null,
"tax": null,
"error_code": "BAD_REQUEST_ERROR",
"error_description": "Card issuer is invalid",
"error_source": "customer",
"error_step": "payment_authentication",
"error_reason": "incorrect_card_details",
"acquirer_data": {
"auth_code": null,
"authentication_reference_number": "100222021120200000000742753928"
},
"created_at": 1620807547
}
```

-------------------------------------------------------------------------------------------------------

### Fetch a Payment (With Expanded Offers Details)

```java
JSONObject request = new JSONObject();
request.put("expand[]","offers");

Payment payment = instance.payments.expandedDetails("pay_XXXXXXXXXXXXXX",request);
```

**Parameters:**

| Name | Type | Description |
|-------------|---------|----------------------------------------------------------------|
| paymentId* | integer | Unique identifier of the payment |
| expand[] | string | Use to expand the emi details when the payment method is emi. |

**Response:** <br>

```json
{
"id": "pay_DG4ZdRK8ZnXC3k",
"entity": "payment",
"amount": 200000,
"currency": "INR",
"status": "authorized",
"order_id": null,
"invoice_id": null,
"international": false,
"method": "emi",
"amount_refunded": 0,
"refund_status": null,
"captured": false,
"description": null,
"card_id": "card_DG4ZdUO3xABb20",
"bank": "ICIC",
"wallet": null,
"vpa": null,
"email": "[email protected]",
"contact": "+919972000005",
"notes": [],
"fee": null,
"tax": null,
"error_code": null,
"error_description": null,
"error_source": null,
"error_step": null,
"error_reason": null,
"emi": {
"issuer": "ICIC",
"rate": 1300,
"duration": 6
},
"acquirer_data": {
"auth_code": "828553"
},
"created_at": 1568026077
}
```

-------------------------------------------------------------------------------------------------------

### Fetch a Payment (With Expanded UPI Details)

```java
JSONObject request = new JSONObject();
request.put("expand[]","upi");

Payment payment = instance.payments.expandedDetails("pay_XXXXXXXXXXXXXX",request);
```

**Parameters:**

| Name | Type | Description |
|-------------|---------|--------------------------------------------------------------|
| paymentId* | integer | Unique identifier of the payment |
| expand[] | string | Use to expand the UPI details when the payment method is upi. |

**Response:** <br>

```json
{
"id": "pay_DG4ZdRK8ZnXC3k",
"entity": "payment",
"amount": 100,
"currency": "INR",
"status": "captured",
"order_id": "order_GjCr5oKh4AVC51",
"invoice_id": null,
"international": false,
"method": "upi",
"amount_refunded": 0,
"refund_status": null,
"captured": true,
"description": "Payment for Adidas shoes",
"card_id": null,
"bank": null,
"wallet": null,
"vpa": "gaurav.kumar@upi",
"email": "[email protected]",
"contact": "9000090000",
"customer_id": "cust_K6fNE0WJZWGqtN",
"token_id": "token_KOdY$DBYQOv08n",
"notes": [],
"fee": 1,
"tax": 0,
"error_code": null,
"error_description": null,
"error_source": null,
"error_step": null,
"error_reason": null,
"acquirer_data": {
"rrn": "303107535132"
},
"created_at": 1605871409,
"upi": {
"payer_account_type": "credit_card",
"vpa": "gaurav.kumar@upi",
"flow": "in_app" // appears only for Turbo UPI Payments.
}
}
```

-------------------------------------------------------------------------------------------------------
**PN: * indicates mandatory fields**
<br>
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/razorpay/PaymentClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -119,4 +119,7 @@ public Payment validateUpi(JSONObject request) throws RazorpayException {
return post(Constants.VERSION, Constants.VALIDATE_VPA, request);
}

public Payment expandedDetails(String id, JSONObject request) throws RazorpayException {
return get(Constants.VERSION, String.format(Constants.PAYMENT_GET, id), request);
}
}
65 changes: 65 additions & 0 deletions src/test/java/com/razorpay/PaymentClientTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -934,4 +934,69 @@ public void fetchAllRefund() throws RazorpayException {
assertTrue(false);
}
}

@Test
public void expandedDetails() throws RazorpayException {
JSONObject request = new JSONObject();
request.put("expand[]","payments");
rohitcbr marked this conversation as resolved.
Show resolved Hide resolved

JSONObject mockedResponseJson = new JSONObject();
mockedResponseJson.put("id","pay_IDRP0tbirMSsbn");
mockedResponseJson.put("entity","payment");
mockedResponseJson.put("amount",100);
mockedResponseJson.put("currency","INR");
mockedResponseJson.put("status","failed");
mockedResponseJson.put("order_id","order_H9o58N6qmLYQKC");
mockedResponseJson.put("invoice_id", JSONObject.NULL);
mockedResponseJson.put("terminal_id","term_G5kJnYM9GhhLYT");
mockedResponseJson.put("international",false);
mockedResponseJson.put("method","card");
mockedResponseJson.put("amount_refunded",JSONObject.NULL);
mockedResponseJson.put("captured",false);
mockedResponseJson.put("description",JSONObject.NULL);
mockedResponseJson.put("card_id","card_H9oR0ocen1cmZq");
JSONObject cardObj = new JSONObject();
cardObj.put("id","");
cardObj.put("entity","card");
cardObj.put("name","Gaurav");
cardObj.put("last4","1213");
cardObj.put("network","RuPay");
cardObj.put("type", "credit");
cardObj.put("issuer","UTIB");
cardObj.put("international", false);
cardObj.put("emi", false);
cardObj.put("sub_type","business");
mockedResponseJson.put("card",cardObj);
mockedResponseJson.put("bank",JSONObject.NULL);
mockedResponseJson.put("wallet",JSONObject.NULL);
mockedResponseJson.put("vpa",JSONObject.NULL);
mockedResponseJson.put("email","[email protected]");
mockedResponseJson.put("contact","+919000090000");
JSONObject notesObj = new JSONObject();
notesObj.put("key1","");
notesObj.put("key2","");
mockedResponseJson.put("notes",notesObj);
mockedResponseJson.put("fee",JSONObject.NULL);
mockedResponseJson.put("tax",JSONObject.NULL);
mockedResponseJson.put("error_code","BAD_REQUEST_ERROR");
mockedResponseJson.put("error_description","Card issuer is invalid");
mockedResponseJson.put("error_source","customer");
mockedResponseJson.put("error_step","payment_authentication");
mockedResponseJson.put("error_reason","incorrect_card_details");
JSONObject acquirerDataObj = new JSONObject();
acquirerDataObj.put("auth_code",JSONObject.NULL);
acquirerDataObj.put("authentication_reference_number","100222021120200000000742753928");
mockedResponseJson.put("acquirer_data",acquirerDataObj);
mockedResponseJson.put("created_at",1620807547);

try {
mockResponseFromExternalClient(mockedResponseJson.toString());
mockResponseHTTPCodeFromExternalClient(200);
Payment fetch = paymentClient.expandedDetails(PAYMENT_ID, request);
assertNotNull(fetch);
assertEquals(PAYMENT_ID,fetch.get("id"));
} catch (IOException e) {
assertTrue(false);
}
}
}
Loading