创建或更新预订时可能会出现预订失败的情况。
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; }
CreditCardType 的定义
// 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; }