Perform validation
Introduction
Perform validation is initiated through HTTPS POST request by using URLs and the parameters.
Connecting Party’s app sends cardholder, device, session data and other parameters straight to Billblend to check the card for being valid.
A lot of criteria checks and filters may be applied, such as BIN, currency, country, blacklisted or not, etc. Depending on the integration, these settings may be customizable.
API URLs
| Integration | Production |
|---|---|
| https://sandbox.billblend.com/checkout/dapi/v1/verification/{endpointId}/{invoiceId} | https://pay.billblend.com/checkout/dapi/v1/verification/{endpointId}/{invoiceId} |
Request Parameters
| Parameter Name | Description | Value |
|---|---|---|
| consumer | Necessity: RequiredType: Object | |
| consumer.device | Necessity: RequiredType: Object | |
| consumer.device.serialNumber | Consumer’s device serial number. | Necessity: RequiredType: StringLength: 1-50 |
| consumer.email | Сonsumer’s email address. | Necessity: RequiredType: StringLength: 3-128 |
| session | Necessity: RequiredType: Object | |
| session.accessToken | Access token key received in Optional consumer authentication. | Necessity: RequiredType: StringLength: 32-128 |
| session.nonce | Value received in Initial verification response. | Necessity: RequiredType: StringLength: 32-128 |
| session.signature | Value received in Initial verification response. | Necessity: RequiredType: StringLength: 32-128 |
| sourceCard | Necessity: RequiredType: Object | |
| sourceCard.expiry | Necessity: RequiredType: Object | |
| sourceCard.expiry.month | Source Card expiration month. | Necessity: RequiredType: IntegerLength: 2 |
| sourceCard.expiry.year | Source Card expiration year. | Necessity: RequiredType: IntegerLength: 4 |
| sourceCard.holder | Necessity: RequiredType: Object | |
| sourceCard.holder.firstName | Cardholder’s first name. | Necessity: RequiredType: StringLength: 1-50 |
| sourceCard.holder.lastName | Cardholder’s last name. | Necessity: RequiredType: StringLength: 1-50 |
| sourceCard.holder.printedName | Cardholder’s printed name (first and last name together). May be used instead of firstName + lastName. | Necessity: RequiredType: StringLength: 1-50 |
| sourceCard.number | Source card number (PAN). | Necessity: RequiredType: StringLength: 9-19 |
| sourceCard.securityCode | Source card security code (CVV). | Necessity: RequiredType: StringLength: 3-4 |
| transaction | Necessity: RequiredType: Object | |
| transaction.currency | Upper case letters (ISO 4217 alpha code). | Necessity: RequiredType: StringLength: 3 |
| location | Necessity: OptionalType: Object | |
| location.lat | The latitude specified in the range of -90.0 through +90.0, both inclusive. | Necessity: OptionalType: Double |
| location.lng | The longitude specified in the range -180.0 through +180.0, both inclusive. | Necessity: OptionalType: Double |
| billing | Necessity: OptionalType: Object | |
| billing.address | Necessity: OptionalType: Object | |
| billing.address.city | City name. | Necessity: OptionalType: StringLength: 1-100 |
| billing.address.country | ISO alpha3 country code. | Necessity: OptionalType: StringLength: 3 |
| billing.address.postcodeZip | ZIP post code | Necessity: OptionalType: StringLength: 1-10 |
| billing.address.state | State is used if present. For example, Los Angeles is in CA state. | Necessity: OptionalType: StringLength: 2-3 |
| billing.address.street | Street is used for district names and street names. | Necessity: OptionalType: StringLength: 1-50 |
| billing.address.street2 | Street 2 is used for long addresses. Usually it contains apartment and building №. | Necessity: OptionalType: StringLength: 1-50 |
| billing.phone | Customer’s contact phone number. | Necessity: OptionalType: StringLength: 1-20 |
| consumer.birthDay | Сonsumer’s birth day in “ddMMyyyy” format. | Necessity: OptionalType: StringLength: 8 |
| consumer.device.imei | Сonsumer’s device international mobile equipment identity. | Necessity: OptionalType: StringLength: 14-16 |
| consumer.ipAddresses | Сonsumer’s IP addresses. | Necessity: OptionalType: List |
| consumer.ipAddresses[] | Сonsumer’s IP address. | Necessity: OptionalType: StringLength: 7-15 |
| order | Necessity: OptionalType: Object | |
| order.description | Brief transaction description. May be mandatory for certain Acquirer Banks. | Necessity: OptionalType: StringLength: 128 |
| order.siteUrl | URL of website associated with the transaction. | Necessity: OptionalType: StringLength: 128 |
| order.purpose | May be used for better transaction control or additional checks. | Necessity: OptionalType: StringLength: 128 |
Success Response Parameters
| Parameter Name | Description | Value |
|---|---|---|
| invoiceId | Verification transaction identifier. | Type: String |
| session | Type: Object | |
| session.token | The session token of verification transaction. | Type: String |
Fail Response Parameters
| Parameter Name | Description | Value |
|---|---|---|
| error | Type: Object | |
| error.cause | Cause of the error. Possible values: INVALID_REQUEST, INVALID_CONFIGURATION, INTERNAL_ERROR, PROCESSING_FAILED. | Type: Enum |
| error.code | The unique error code. | Type: String |
| error.message | Description of the error. | Type: String |
| invoiceId | Verification transaction identifier. | Type: String |
Request Example
{
"billing": {
"address": {
"city": "string",
"country": "string",
"postcodeZip": "string",
"state": "string",
"street": "string",
"street2": "string"
},
"phone": "string"
},
"consumer": {
"birthDay": "string",
"device": {
"imei": "string",
"serialNumber": "string"
},
"email": "string",
"ipAddresses": ["string"]
},
"location": {
"lat": "double",
"lng": "double"
},
"order": {
"description": "string",
"siteUrl": "string",
"purpose": "string"
},
"session": {
"accessToken": "string",
"nonce": "string",
"signature": "string"
},
"sourceCard": {
"expiry": {
"month": "integer",
"year": "integer"
},
"holder":{
"firstName": "string",
"lastName": "string"
},
"number": "string",
"securityCode": "string"
},
"transaction": {
"currency": "string"
}
}
Success Response Example
{
"invoiceId": "string",
"session": {
"token": "string"
}
}
Fail Response Example
{
"error": {
"cause": "enum",
"code": "string",
"message": "string"
},
"invoiceId": "string"
}
Request Builder
Request Builder is available at this link – https://doc.billblend.com/integration/API_commands/api_mobile_device/api_perform_validation.html#request-builder