تعریف BookingFailure

شکست رزرو ممکن است در مرحله ایجاد یا به‌روزرسانی یک رزرو اتفاق بیفتد.

تعريف BookingFailure

// Status data that conveys why (1) creating a lease or (2) creating or updating
// a booking fails.
// BookingFailure is intended to primarily capture business logic errors.
message
BookingFailure {
 
enum Cause {
   
// Default value: Don't use; amounts to an "unknown error"
    CAUSE_UNSPECIFIED
= 0;

   
// The referenced availability slot is not available any longer.
    SLOT_UNAVAILABLE
= 1;

   
// The user has already booked an appointment for the referenced
   
// availability slot.
    SLOT_ALREADY_BOOKED_BY_USER
= 2;

   
// The lease (if provided) has expired and cannot be used any longer to
   
// complete the requested booking.
    LEASE_EXPIRED
= 3;

   
// The requested cancellation cannot be performed at the current time due
   
// to time restrictions in the merchant's cancellation policy. In other
   
// words, the booking can no longer be canceled by the user.
    OUTSIDE_CANCELLATION_WINDOW
= 4;

   
// An error was encountered while processing the payment because the
   
// provided credit card type was not accepted by the merchant. The credit
   
// card type must be supplied in rejected_card_type.
    PAYMENT_ERROR_CARD_TYPE_REJECTED
= 5;

   
// An error was encountered while processing the payment because the
   
// provided credit card was declined.
    PAYMENT_ERROR_CARD_DECLINED
= 6;

   
// An error was encountered with the pack/membership used to pay for the
   
// booking. There could be no valid uses left, it could have expired, etc.
    PAYMENT_OPTION_NOT_VALID
= 7;

   
// An error was encountered while processing the payment for this booking.
   
// Use this value to indicate a general payment related error, only if the
   
// error does not match to a specific payment error above.
    PAYMENT_ERROR
= 8;

   
// User cannot use the given payment option (e.g. user trying to use a
   
// first time price for the second time).
    USER_CANNOT_USE_PAYMENT_OPTION
= 9;

   
// A booking that the user tried to cancel has already been cancelled.
    BOOKING_ALREADY_CANCELLED
= 10;

   
// A booking that the user tried to cancel is not cancellable.
    BOOKING_NOT_CANCELLABLE
= 11;

   
// User has an existing reservation too close to this time.
    OVERLAPPING_RESERVATION
= 12;

   
// Booking failed due to the user being over the aggregator's per-user
   
// bookings limit.
    USER_OVER_BOOKING_LIMIT
= 13;

   
// Offer (previously "Deal") is unavailable for the provided slot. If the
   
// slot itself is unavailable, use SLOT_UNAVAILABLE instead.
    OFFER_UNAVAILABLE
= 16;
    DEAL_UNAVAILABLE
= 14 [deprecated = true];

   
// Set when payment is rejected because you are requesting that the
   
// transaction be tried again, but this time after undergoing 3DS1
   
// challenge/response.  Note that the current transaction's failure state
   
// will stay failed.  The retry will be completely separate.
   
//
   
// When this is the failure reason, payment_failure.3DS1_parameters
   
// MUST be set.  If it is not, then the current cause will be treated as
   
// if it were PAYMENT_ERROR.
    PAYMENT_REQUIRES_3DS1
= 15;
 
}

 
// The reason why the booking failed. (required)
 
Cause cause = 1;

 
// (required only if cause is PAYMENT_ERROR_CARD_TYPE_REJECTED)
 
CreditCardType rejected_card_type = 2;

 
// This optional field is used for the partner to include additional
 
// information for debugging purpose only. (optional)
 
string description = 3;

 
// Information about payment failures.
  message
PaymentFailureInformation {
   
// Parameters requesting that RwG perform a 3DS1 challenge.
   
//
   
// The parameters are set by EMVCo's description of the 3DS1 protocol.
    message
ThreeDS1Parameters {
     
// The URL from which to load a form to present to the User for
     
// authentication.
     
string acs_url = 1;

     
// A PaymentAuthentication Request.  To be posted to the ACSUrl form if
     
// supplied.
     
string pa_req = 2;

     
// An identifier used by the ACS provider.  To be posted to the ACSUrl
     
// form if supplied.
     
string transaction_id = 3;

     
// Merchant data.  To be posted to the ACSUrl form if supplied.
     
string md_merchant_data = 4;
   
}

   
// Parameters used by a RwG aggregator to initiate a 3DS1 authentication
   
// protocol with the user.  Will be ignored unless BookingFailure.cause
   
// is set to PAYMENT_REQUIRES_3DS1.
   
ThreeDS1Parameters threeds1_parameters = 5;
 
}

 
PaymentFailureInformation payment_failure = 4;
}

تعریف نوع کارت اعتباری

// Used when booking/order failure cause is PAYMENT_ERROR_CARD_TYPE_REJECTED to
// indicate the type of credit card that was rejected.
enum CreditCardType {
 
// Default value. Used if credit card type does not match to one below.
  CREDIT_CARD_TYPE_UNSPECIFIED
= 0;
  VISA
= 1;
  MASTERCARD
= 2;
  AMERICAN_EXPRESS
= 3;
  DISCOVER
= 4;
  JCB
= 5;
}