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

  1. Credit Card Authentication
  2. Capture
  1. Confirm the booking

BookingFlow

Form

Dibs Payment Window

BookingFlow

Confirmation

Page

  1. Credit Card Authentication
  1. Confirm the booking
  2. 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

  1. Credit Card Authentication(FAILED)
  2. Capture
  1. Confirm the booking

BookingFlow

Form

Dibs Payment Window

BookingFlow

Confirmation

Page

  1. Credit Card Authentication(FAILED)
  1. Confirm the booking
  2. Capture

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

  1. Credit Card Authentication
  2. Capture(FAILED)
  1. Confirm the booking

BookingFlow

Form

Dibs Payment Window

BookingFlow

Confirmation

Page

  1. Credit Card Authentication
  1. Confirm the booking
  2. 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

  1. Credit Card Authentication
  1. Confirm the booking
  2. Capture

BookingFlow

Form

Dibs Payment Window

BookingFlow

Confirmation

Page

  1. Credit Card Authentication
  1. Confirm the booking
  2. 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