Skip to content

Commit

Permalink
Updated customer addbank (#246)
Browse files Browse the repository at this point in the history
  • Loading branch information
ankitdas13 authored May 27, 2024
1 parent 4adcc3c commit 31c8447
Show file tree
Hide file tree
Showing 8 changed files with 481 additions and 0 deletions.
242 changes: 242 additions & 0 deletions documents/customer.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,248 @@ Razorpay::Customer.fetch(customerId)

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

### Add Bank Account of Customer

```rb
customerId = "cust_N5mywh91sXB69O"

Razorpay::Customer.add_bank_account(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 | Unique identifier of the customer. |
| account_number | string | Customer's bank account number. For example, `0002020000304030434`. |
| 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. For example, `[email protected]`. |
| 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_country | string | The country 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": "ba_LSZht1Cm7xFTwF",
"entity": "bank_account",
"ifsc": "ICIC0001207",
"bank_name": "ICICI Bank",
"name": "Gaurav Kumar",
"notes": [],
"account_number": "XXXXXXXXXXXXXXX0434"
}
```

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

### Delete Bank Account of Customer

```rb
customerId = "cust_N5mywh91sXB69O"

bankAccountId = "ba_N6aM8uo64IzxHu"

Razorpay::Customer.delete_bank_account(customerId, bankAccountId)
```

**Parameters:**

| Name | Type | Description |
|---------------|-----------|-------------------------------------------------------------------|
| customerId* | string | Customer id of the customer whose bank account is to be deleted. |
| 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

```rb
Razorpay::Customer.request_eligibility_check({
"inquiry": "affordability",
"amount": 500,
"currency": "INR",
"customer": {
"id": "elig_xxxxxxxxxxxxx",
"contact": "+919999999999",
"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* | integer | The amount for which the order was created, in currency subunits. For example, for an amount of ₹295, enter `29500`. The user makes a payment for this amount against the order; hence, eligibility is checked for the amount. |
| currency* | string | A three-letter ISO code for the currency in which you want to accept the payment. Possible value is `INR`. |
| 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

```rb
eligibilityId = "elig_F1cxDoHWD4fkQt"
Razorpay::Customer.fetch_eligibility(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**
<br>
<br>
Expand Down
16 changes: 16 additions & 0 deletions lib/razorpay/customer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,21 @@ def fetchToken(tokenId)
def deleteToken(tokenId)
self.class.request.delete "#{id}/tokens/#{tokenId}"
end

def self.add_bank_account(id, options = {})
request.post "#{id}/bank_account", options
end

def self.delete_bank_account(id, bankAccountId)
request.delete "#{id}/bank_account/#{bankAccountId}"
end

def self.request_eligibility_check(options = {})
request.post "eligibility", options
end

def self.fetch_eligibility(eligibilityId)
request.get "eligibility/#{eligibilityId}"
end
end
end
10 changes: 10 additions & 0 deletions test/fixtures/error_customer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"error": {
"code": "BAD_REQUEST_ERROR",
"description": "The id provided does not exist",
"source": "business",
"step": "payment_initiation",
"reason": "input_validation_failed",
"metadata": {}
}
}
10 changes: 10 additions & 0 deletions test/fixtures/error_eligibility.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"error": {
"code": "BAD_REQUEST_ERROR",
"description": "The eligibility id does not exist.",
"source": "NA",
"step": "NA",
"reason": "NA",
"metadata": {}
}
}
10 changes: 10 additions & 0 deletions test/fixtures/error_eligibility_check.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"error": {
"code": "BAD_REQUEST_ERROR",
"description": "Amount is required.",
"source": "NA",
"step": "NA",
"reason": "NA",
"metadata": {}
}
}
9 changes: 9 additions & 0 deletions test/fixtures/fake_bank_account.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"id": "ba_LSZht1Cm7xFTwF",
"entity": "bank_account",
"ifsc": "ICIC0001207",
"bank_name": "ICICI Bank",
"name": "Gaurav Kumar",
"notes": [],
"account_number": "XXXXXXXXXXXXXXX0434"
}
79 changes: 79 additions & 0 deletions test/fixtures/fake_eligiblity.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
{
"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"
}
}
}
]
}
Loading

0 comments on commit 31c8447

Please sign in to comment.