Skip to content

Commit

Permalink
feat: Added new api's to customers (#390)
Browse files Browse the repository at this point in the history
  • Loading branch information
ankitdas13 authored May 7, 2024
1 parent 84e4e74 commit 4cd5602
Show file tree
Hide file tree
Showing 4 changed files with 478 additions and 0 deletions.
244 changes: 244 additions & 0 deletions documents/customer.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,250 @@ instance.customers.fetch(customerId)
}
```

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

### Add Bank Account of Customer

```js
var customerId = "cust_N5mywh91sXB69O"

instance.customers.addBankAccount(customerId, {
"ifsc_code" : "UTIB0000194",
"account_number" :"916010082985661",
"beneficiary_name" : "Pratheek",
"beneficiary_address1" : "address 1",
"beneficiary_address2" : "address 2",
"beneficiary_address3" : "address 3",
"beneficiary_address4" : "address 4",
"beneficiary_email" : "[email protected]",
"beneficiary_mobile" : "8762489310",
"beneficiary_city" :"Bangalore",
"beneficiary_state" : "KA",
"beneficiary_country" : "IN"
});
```

**Parameters:**

| Name | Type | Description |
|---------------|-------------|---------------------------------------------|
| customerId* | string | Customer's bank account number |
| account_number | integer | The id of the customer to be fetched |
| account_number | string | The name of the beneficiary associated with the bank account. |
| beneficiary_name | string | The virtual payment address. |
| beneficiary_address1 | string | The id of the customer to be fetched |
| 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" : "[email protected]",
"contact" : "+919000000000",
"gstin":"29XAbbA4369J1PA",
"notes" : [],
"created_at ": 1234567890
}
```

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

### Delete Bank Account of Customer

```js
var customerId = "cust_N5mywh91sXB69O"

var bankAccountId = "ba_N6aM8uo64IzxHu"

instance.customers.deleteBankAccount(customerId, bankAccountId);
```

**Parameters:**

| Name | Type | Description |
|---------------|-------------|---------------------------------------------|
| customerId* | string | Customer's bank account number |
| bank_id | 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

```js
instance.customers.requestEligibilityCheck({
"inquiry": "affordability",
"amount": 500000,
"currency": "INR",
"customer": {
"id": "cust_KhP5dO1dKmc0Rm",
"contact": "+918220276214",
"ip": "105.106.107.108",
"referrer": "https://merchansite.com/example/paybill",
"user_agent": "Mozilla/5.0"
}
})
```

**Parameters:**

| Name | Type | Description |
|---------------|-------------|---------------------------------------------|
| inquiry | string | List of methods or instruments on which eligibility check is required. Possible value is `affordability`. |
| amount* | string | The amount for which the order was created, in currency subunits. For example, for an amount of ₹295, enter `29500`. |
| currency* | string | Possible value is `INR`. |
| customer | object | All keys listed [here](https://razorpay.com/docs/payments/payment-gateway/affordability/eligibility-check/#request-parameters) are supported |
| instruments | object | All keys listed [here](https://razorpay.com/docs/payments/payment-gateway/affordability/eligibility-check/#request-parameters) are supported |

**Response:**
```json
{
"amount": "500000",
"customer": {
"id": "KkBhM9EC1Y0HTm",
"contact": "+918220722114"
},
"instruments": [
{
"method": "emi",
"issuer": "HDFC",
"type": "debit",
"eligibility_req_id": "elig_KkCNLzlNeMYQyZ",
"eligibility": {
"status": "eligible"
}
},
{
"method": "paylater",
"provider": "getsimpl",
"eligibility_req_id": "elig_KkCNLzlNeMYQyZ",
"eligibility": {
"status": "eligible"
}
},
{
"method": "paylater",
"provider": "icic",
"eligibility_req_id": "elig_KkCNLzlNeMYQyZ",
"eligibility": {
"status": "eligible"
}
},
{
"method": "cardless_emi",
"provider": "walnut369",
"eligibility_req_id": "elig_KkCNLzlNeMYQyZ",
"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_KkCNLzlNeMYQyZ",
"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_KkCNLzlNeMYQyZ",
"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

```js
var eligibilityId = 'elig_F1cxDoHWD4fkQt'
instance.customers.fetchEligibility(eligibilityId);
```

**Parameters:**

| Name | Type | Description |
|---------------|-------------|---------------------------------------------|
| customerId* | string | Customer's bank account number |
| bank_id | string | The bank_id that needs to be deleted. |

**Response:**
```json
{
"instruments": [
{
"method": "paylater",
"provider": "lazypay",
"eligibility_req_id": "elig_LBwGKVvS2X48Lq",
"eligibility": {
"status": "eligible"
}
},
{
"method": "paylater",
"provider": "getsimpl",
"eligibility_req_id": "elig_LBwGKVvS2X48Lq",
"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**
Expand Down
26 changes: 26 additions & 0 deletions lib/resources/customers.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,32 @@ module.exports = function (api) {
return api.delete({
url: `/customers/${customerId}/tokens/${tokenId}`
}, callback)
},

addBankAccount(customerId, params ,callback) {
return api.post({
url: `/customers/${customerId}/bank_account`,
data: params
}, callback)
},

deleteBankAccount(customerId, bankId ,callback) {
return api.delete({
url: `/customers/${customerId}/bank_account/${bankId}`
}, callback)
},

requestEligibilityCheck(params ,callback) {
return api.post({
url: `/customers/eligibility`,
data: params
}, callback)
},

fetchEligibility(eligibilityId, callback) {
return api.get({
url: `/customers/eligibility/${eligibilityId}`,
}, callback)
}
}
}
Loading

0 comments on commit 4cd5602

Please sign in to comment.