
Une fois que vous avez configuré votre modèle d'URL, vous pouvez ajouter des paiements à vos créneaux en procédant comme suit.
- Identifier les emplacements payants
- Définir les prix des emplacements
- Définir des paiements anticipés
- Définir des frais de non-présentation ou d'annulation
- Définir des dépôts
- Définir une carte de crédit comme obligatoire
1. Identifier les emplacements payants
Vous pouvez définir vos tarifs à l'aide du flux de services ou du flux de disponibilité. En définissant le prix au niveau du service, vous définissez un prix fixe pour tous les créneaux de disponibilité de ce service ou de cette salle à manger. En revanche, lorsque vous définissez le prix au niveau de la disponibilité, vous le définissez pour un créneau spécifique. Par exemple, les situations suivantes peuvent être gérées en définissant des prix ou des frais au niveau de la disponibilité :
- Les prix sont réduits le mardi et augmentés le samedi.
- Des frais de non-présentation s'appliquent aux disponibilités entre 17h et 19h.
- Exigez des arrhes pour les groupes de plus de six personnes.
- Une carte de crédit est requise pour les réservations dans certaines chambres.
2. Définir les prix des emplacements
Paiement d'avance
Cette configuration permet de spécifier que le montant du service doit être payé intégralement au moment de la réservation. Le prépaiement est spécifié au niveau de la disponibilité via le champ payment du flux Avaibility.
Exemple de prépaiement
{ "availability": [{ "merchant_id": "dining-A", "service_id": "reservation", "start_sec": 1535853600, "duration_sec": 2700, "spots_total": 2, "spots_open": 2, "resources": { "room_id": "A-dining-room", "room_name": "Wine Tasting Room", "party_size": 2, "prepayment": { "price_info": { "price": { "price_micros": 200000000, "currency_code": "USD" }, "price_type": "PER_PERSON" } } } }] }
Flux de disponibilité
message Availability {
...
// Optional prepayment information for this availability. Prepayment is only
// available through the Payment Redirect Add-on
Prepayment prepayment = 20;
}Définition du prépaiement
// A payment the user may be charged as part of their reservation. message Prepayment { PriceInfo price_info = 1; }
Frais de non-présentation ou d'annulation
Des frais de non-présentation ou d'annulation peuvent être facturés à un utilisateur s'il ne se présente pas à sa réservation ou s'il l'annule après la période d'annulation. Si aucune période d'annulation n'est spécifiée, l'heure de début du créneau sera appliquée par défaut.
Pour spécifier des frais de non-présentation dans le flux de services, vous devez inclure le champ no_show_fee, comme indiqué dans l'exemple suivant :
Exemple de frais de non-présentation / d'annulation
Description :
Dans l'exemple, le partenaire ou le marchand est autorisé à facturer des frais fixes de 25 $, comme indiqué dans le champ `no_show_fee.fee.price_micros`, si le titulaire du rendez-vous ne s'y présente pas. Ces frais peuvent également être facturés si l'utilisateur annule le rendez-vous dans les quatre heures (14 400 secondes) précédant le rendez-vous, comme indiqué dans le champ `scheduling_rules.min_advance_online_canceling`.{ "merchant_id": "merchant-1", "service_id": "service-2-b", "name": "Reservation", "description": "A dining reservation", "price": { "price_micros": 200000000, "currency_code": "USD" }, "scheduling_rules": { "min_advance_online_canceling": 14400 }, "no_show_fee": { "fee": { "price_micros": 25000000, "currency_code": "USD" }, "fee_type": "FIXED_RATE_DEFAULT" } }
Flux du service
message Service {
...
// Defines a no show fee that may be charged to the user. Can be overridden
// at the availability level. (optional)
NoShowFee no_show_fee = 12;
}Flux de disponibilité
message Availability {
...
// Defines a no show fee that may be charged to the user. Overrides the
// service no show fee if one was specified. Setting this to an empty
// NoShowFee message removes any service-level no show fee. (optional)
NoShowFee no_show_fee = 13;
}Définition des frais de non-présentation
// A fee that a user may be charged if they have made a booking but do not // show up. message NoShowFee { // The amount the user may be charged if they do not show up for their // reservation. Price fee = 1; // Defines how the fee is determined from the availability. PriceType fee_type = 3; }
Deposit
Les acomptes sont utilisés pour percevoir un montant initial requis pour une réservation. Les acomptes peuvent être débités au moment de la réservation ou ultérieurement. Vous devrez peut-être définir les conditions de remboursement d'un acompte, ainsi que le moment où une réservation peut être annulée en ligne.
Pour spécifier un acompte dans le flux de services, vous devez inclure le champ deposit, comme illustré dans l'exemple suivant :
Exemple de dépôt
Description :
`min_advance_online_canceling` `deposit.min_advance_cancellation_sec`définit le moment où l'acompte est remboursable. Notez que, dans l'exemple, un acompte peut spécifier un délai d'annulation distinct des conditions de remboursement. Dans ce cas, un utilisateur pourra résilier le service en ligne jusqu'à 24 heures à l'avance (86 400 secondes). Cela permet de s'assurer que le marchand est directement informé de toute annulation tardive. Toutefois, l'utilisateur peut toujours être éligible à un remboursement de son acompte jusqu'à quatre heures (14 400 secondes) avant la réservation (en vous contactant ou en contactant le marchand pour l'annuler). Cette information sera indiquée dans les conditions générales au moment du paiement et dans l'e-mail de confirmation.{ "merchant_id": "merchant-1", "service_id": "service-2-b", "name": "Reservation", "description": "A dining reservation", "price": { "price_micros": 200000000, "currency_code": "USD" }, "scheduling_rules": { "min_advance_online_canceling": 86400, }, "deposit": { "deposit": { "price_micros": 25000000, "currency_code": "USD" }, "min_advance_cancellation_sec": 14400, "deposit_type": "FIXED_RATE_DEFAULT" } }
Flux du service
message Service {
...
// Defines how a deposit may be charged to the user. Can be overridden at the
// availability level. (optional)
Deposit deposit = 11;
}Flux de disponibilité
message Availability {
...
// Defines how a deposit may be charged to the user. Overrides the service
// deposit if one was specified. Setting this to an empty Deposit message
// removes any service-level deposit. (optional)
Deposit deposit = 12;
}Définition du virement
// A deposit that the user may be charged or have a hold on their credit card // for. message Deposit { // Deposit amount. Price deposit = 1; // Minimum advance cancellation for the deposit. int64 min_advance_cancellation_sec = 2; // Defines how the deposit is determined from the availability. PriceType deposit_type = 3; }
Carte de crédit requise
Un service peut exiger une carte de crédit comme méthode supplémentaire pour valider l'identité. Toutefois, il ne doit pas être utilisé pour les prépaiements, les acomptes ni les frais de non-présentation. Si ces cas d'utilisation sont nécessaires, ils doivent être configurés explicitement. Exiger une carte de crédit entraîne souvent une baisse significative des réservations pour ce service.
Pour exiger qu'une carte de crédit soit fournie lors du règlement, vous devez définir le champ require_credit_card sur REQUIRE_CREDIT_CARD_ALWAYS.
Exemple de carte de paiement requise
{
"merchant_id": "merchant-1",
"service_id": "reservation",
"name": "reservation",
"description": "Food reservation",
"require_credit_card": "REQUIRE_CREDIT_CARD_ALWAYS"
}Flux du service
message Service {
...
// Indicates whether the user must provide a credit card in order to book this
// service.
// This value can be overridden at the availability level. (optional)
RequireCreditCard require_credit_card = 13;
}Flux de disponibilité
message Availability {
...
// Indicates whether the user must provide a credit card in order to book this
// availability slot.
// If the value is not set, it is inherited from the service level if it's set
// there. (optional)
RequireCreditCard require_credit_card = 14;
}Définition de "Carte de crédit requise"
// Defines whether a credit card is required in order to book an appointment. enum RequireCreditCard { // The credit card requirement is not explicitly specified and the // behaviour is identical to the one specified for CONDITIONAL. REQUIRE_CREDIT_CARD_UNSPECIFIED = 0; // Google will require a credit card for the booking if any of the following // conditions are met: // * the availability has a price and the prepayment_type is REQUIRED // * the no_show_fee is set // * the deposit field is set. REQUIRE_CREDIT_CARD_CONDITIONAL = 1; // A credit card is always required in order to book this availability // regardless of other field values. REQUIRE_CREDIT_CARD_ALWAYS = 2; }
Définitions supplémentaires
Définition de la gamme de prix
// Wrapper for a range of monetary amount treated as unbounded unless both // values are set. At least one of min_amount and max_amount is required. message PriceRange { // Minimum amount. Price min_price = 1; // Maximum amount. Should always be > min_price. Price max_price = 2; }
Définition des informations tarifaires
// Container for price details. message PriceInfo { oneof price_options { Price price = 1; // The upper and/or lower bound PriceRange price_range = 2 ; } // Defines how price or price range is applied (per person or fixed) PriceType price_type = 3; }
Définition du type de prix
// Defines how a total price is determined from an availability. enum PriceType { // The price is for a fixed amount. This is the default value if the field is // not set. // // Examples: // $50 deposit to reserve a table; $20 no show fee for a yoga class FIXED_RATE_DEFAULT = 0; // The price specified is per person, and the total price is calculated // according to the party size specified in Resources as price_micros * // party_size. A PER_PERSON price must be accompanied by a party size in the // availability resources. If it is not, a party size of one is used. // // Examples: // $10 each for tickets to a museum PER_PERSON = 1; }