Requirements
- Booking is not On Request
- gfd
- gfd
- No Credit agency
- No Offline payment (SEPA, Bank Transfer)
Terminology
Credit Card Authorization
Dibs Payment Window validates credit cards details (number, name, expire date, secret) and does your account have enough money for request amount*
* it does not mean that dibs can capture that amount.
Capture
Actual process of moving money from customer's bank account to Novasol's bank account
Ticket
Number that represents saved credit card details. It allows us and dibs to use customer credit card unlimited amount of times in future to capture money from him without customer retyping his credit card information
Ticket_auth & Capture
This the process of check customer bank account for balance and capturing money from his account in the background automatically.
That what happens when we capture 2 installment automatically.
BookingFlow
amount, currency, preauth
Dibs Payment Window
If customer picks Dibs payment methods (credit cards, paypal, etc) we redirect him to Payment window.
BookingFlow
amount, currency, preauth
amount, currency, preauth, ticket
Dibs Payment Window
Dibs API
amount, currency, preauth, ticket
If credit card was authenticated successfully Dibs redirect customer back to website.
However as we don't send "capture_now" param, no capture happened, just ticket.
BookingFlow
amount, currency, preauth
amount, currency, preauth, ticket
Dibs Payment Window
Dibs API
amount, currency, preauth, ticket
AS400
Confirm booking
We try to confirm the booking (we don't block availability before Dibs because of this)
BookingFlow
amount, currency, preauth
amount, currency, preauth, ticket
Dibs Payment Window
Dibs API
amount, currency, preauth, ticket
AS400
Confirm booking
ticket_auth & capture
If booking is confirmed we capture first installments through Dibs Server-to-Server API
BookingFlow
amount, currency, preauth
amount, currency, preauth, ticket
Dibs Payment Window
Dibs API
amount, currency, preauth, ticket
AS400
Confirm booking
ticket_auth & capture
Register transaction&ticket
If we succeed capturing first installment - send this info to AS400 together with ticket ID for second installment
BookingFlow
amount, currency, preauth
amount, currency, preauth, ticket
Dibs Payment Window
Dibs API
amount, currency, preauth, ticket
AS400
Confirm booking
ticket_auth & capture
Register transaction&ticket
ticket_auth & capture
Second installment data
JavaPayServlet
In couple of months JavaPayServlet will ask AS400 for installments which have to be paid today and will capture money using ticket ID from each booking.
BookingFlow
amount, currency, preauth
amount, currency, preauth, , ticket
Dibs Payment Window
Dibs API
amount, currency, preauth, ticket
AS400
Confirm booking
ticket_auth & capture
Register transaction&ticket
ticket_auth & capture
Second installment data
JavaPayServlet
If capturing was successful JavaPayServlet will mark second isntallment as paid in AS400
Register transaction&ticket
Difference between capture_now and after
Errors during Credit Card Authentication
- This code typically returns if the expiration date or check value is incorrectly entered.
- An explanation may be that cardholder has changed over month and year.
- The transaction is rejected by the card issuer. If cardholder is searching for reason, he / she should contact his bank
- The card is blocked and is supposed to have been abused - the customer should contact his bank
- The entered card number is invalid
Errors during Capturing
- There is no cover for the requested amount. The customer must contact his bank for an explanation.
- The transaction is rejected by the card issuer. If the cardholder seeks the reason, he or she should contact his bank.
- The amount is greater than that allowed for the card. The customer must contact his bank.
- The card can not be used for this type of purchase. The customer must contact his bank.
BookingFlow
Form
Dibs Payment Window
BookingFlow
Confirmation
Page
Capture Now
- Credit Card Authentication
- Capture
- Confirm the booking
BookingFlow
Form
Dibs Payment Window
BookingFlow
Confirmation
Page
- Credit Card Authentication
- Confirm the booking
- Capture
Capture Later
If there is no problem with credit card - flow are completely identical
BookingFlow
Form
Dibs Payment Window
BookingFlow
Confirmation
Page
Capture Now
- Credit Card Authentication(FAILED)
Capture
Confirm the booking
BookingFlow
Form
Dibs Payment Window
BookingFlow
Confirmation
Page
- Credit Card Authentication(FAILED)
Confirm the bookingCapture
Capture Later
If credit card details are invalid, customer can not go further and will stay on dibs page or go back to choose another payment method or drop from the booking flow completely
BookingFlow
Form
Dibs Payment Window
BookingFlow
Confirmation
Page
Capture Now
- Credit Card Authentication
- Capture(FAILED)
Confirm the booking
BookingFlow
Form
Dibs Payment Window
BookingFlow
Confirmation
Page
- Credit Card Authentication
- Confirm the booking
Capture
Capture Later
Here is where fun starts. In first case we won't proceed to confirmation page neither we will confirm the booking. So if customer does not other credit card or he does not know what is wrong with his card - he is kind of lost customer. When in second case it is just delayed payment, almost like Bank Transfer.
Customer race condition
Two customers trying to book same house for same dates at the same time (1-3 times per month)
BookingFlow
Form
Dibs Payment Window
BookingFlow
Confirmation
Page
Customer 1
- Credit Card Authentication
Confirm the bookingCapture
BookingFlow
Form
Dibs Payment Window
BookingFlow
Confirmation
Page
- Credit Card Authentication
- Confirm the booking
- Capture
Customer 2
If they both end up on DIBS payment window, first customer will confirm his booking, give his money and everything will be fine. However second one won't be able to confirm booking, because house was just blocked moment ago, neither we capture his money. He gets error page that states that it was just booking unfortunately.
Dibs implementation
By Artyom Miroshnik
Dibs implementation
- 496