La piattaforma Actions Center supporta una serie di configurazioni per ricevere i pagamenti. La La guida all'attivazione dei pagamenti tratta gli aspetti dell'integrazione che sono comuni a tutte le integrazioni dei pagamenti, tra cui:
- Configurazione dei feed per includere le informazioni
tokenization_parameter
in corso... - Aggiornamento del server di prenotazione in modo che accetti
payment_method_token
oggetti - Una panoramica delle informazioni scambiate tra un utente: il Centro azioni il partner / commerciante e l'elaboratore dei pagamenti.
In questa guida illustreremo più dettagliatamente come configurare i feed per specificare quale dei diversi tipi di le configurazioni di pagamento siano applicabili ai tuoi commercianti e servizi.
- Nessun pagamento / pagamento all'arrivo
- Pagamento anticipato completo
- Commissione per mancato arrivo / Commissione di annullamento
- Deposito
Tutti i casi d'uso dei pagamenti sono estensioni della nozione di pagamento di pagamento all'arrivo (che non richiede alcuna configurazione di pagamento), pertanto il tutorial inizierà descrivendo questa configurazione e trattando configurazioni come estensioni.
Ogni sezione coprirà anche i campi da monitorare nel server di prenotazione per accettare lo specifico pagamento configurazione.
Nessun pagamento / pagamento all'arrivo
Per i servizi che non richiedono alcun pagamento al momento della prenotazione, non è richiesta alcuna configurazione dei pagamenti presso il commerciante o il servizio livello. I prezzi sono comunque obbligatori.
Si tratta della configurazione di base per un servizio, che contiene un
nome, descrizione e prezzo. Deve essere un solo messaggio di servizio.
all'interno di un
ServiceFeed
:
JSON
{ "merchant_id": "merchant-1", "service_id": "service-1-a", "name": "Men's haircut", "description": "One of our stylists will cut your hair", "price": { "price_micros": 15000000, "currency_code": "USD" } }
Non è richiesta alcuna configurazione aggiuntiva oltre all'implementazione standard sul server di prenotazione per supportare il pagamento all'arrivo.
Pagamento anticipato
Questa configurazione viene utilizzata per specificare che l'importo per il servizio deve essere pagato per intero al momento della prenotazione.
Il pagamento anticipato viene specificato a livello di servizio tramite la
Campo prepayment_type
del
Service
Per richiedere il pagamento per un servizio questo
deve essere impostato su REQUIRED
come nell'esempio riportato di seguito. Tieni presente che
il prezzo viene specificato come nell'esempio di pagamento all'arrivo. Qui,
poiché stiamo impostando il tipo di pagamento anticipato su obbligatorio, una carta di credito verrà
raccolti e questo prezzo può essere addebitato al momento del pagamento.
JSON
{ "merchant_id": "merchant-1", "service_id": "service-2-b", "name": "Spa Treatment", "description": "A full spa treatment", "price": { "price_micros": "200000000", "currency_code": "USD" } "prepayment_type": "REQUIRED" }
Server di prenotazione
Quando accetti pagamenti anticipati, un token di pagamento viene trasmesso alla tua prenotazione
nella chiamata a un server
CreateBooking
attraverso il campo
payment_processing_parameters.unparsed_payment_method_token
.
Devi addebitare esattamente l'importo specificato tramite
campo price [prezzo] nei feed e devi utilizzare la valuta
specificato nei feed. Questi addebiti devono seguire il flusso descritto
nel
Guida all'attivazione dei pagamenti.
Quando restituisci un
CreateBookingResponse
il campo booking.payment_information
deve essere impostato correttamente
indicare che il pagamento anticipato è stato emesso ed elaborato.
La
La specifica di PaymentInformation
contiene
documentazione per tutte le opzioni relative ai dati di pagamento. Un esempio minimo di
di elaborazione del pagamento anticipato. È importante che il prezzo
restituito nel campo del prezzo che corrisponda esattamente a quello specificato nel
richiesta. Inoltre, se nel feed o nella richiesta viene specificata
un'aliquota fiscale,
devono essere inclusi esattamente.
Tieni inoltre presente che devi fornire un ID transazione. Questo ID transazione devono essere almeno univoci tra le transazioni con quel commerciante. R un ID transazione è l'ID transazione fornito da parte dell'elaboratore dei pagamenti.
JSON
{ "prepayment_status": "PREPAYMENT_PROVIDED", "payment_processed_by": "PROCESSED_BY_PARTNER", "payment_transaction_id": "[this-transaction-id]", "price": { "price_micros": "200000000", "currency_code": "USD" } }
Commissione per mancato arrivo
Le tariffe per il mancato arrivo possono essere addebitate a un utente se non partecipa al suo o se l'annullamento avviene dopo il finestra di annullamento. Se non viene specificata alcuna finestra di annullamento, l'impostazione predefinita dell'ora di inizio dello slot.
Per specificare una tariffa per il mancato arrivo, nel feed di servizio devi includere la sezione
Campo no_show_fee
come mostrato nell'esempio seguente:
JSON
{ "merchant_id": "merchant-1", "service_id": "service-2-b", "name": "Spa Treatment", "description": "A full spa treatment", "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" } }
Nell'esempio precedente, il partner o il commerciante sono autorizzati a
addebitare una tariffa fissa di $25, come specificato
Campo no_show_fee.fee.price_micros
se il titolare dell'appuntamento
non partecipa all'appuntamento. Questa tariffa può essere addebitata anche se l'utente
annulla entro 4 ore (14.400 secondi) prima dell'appuntamento, come
specificato in scheduling_rules.min_advance_online_canceling
.
Per sapere come definire le tariffe per il mancato programma a livello di disponibilità, consulta questa sezione.
Server di prenotazione
Durante l'elaborazione di una richiesta che include una commissione per il mancato arrivo, un token di pagamento
viene trasmesso al server di prenotazione nella chiamata a
CreateBooking
attraverso il campo
payment_processing_parameters.unparsed_payment_method_token
.
Questo token viene trasmesso come per il pagamento anticipato
per verificare se è così. Tuttavia, poiché il token viene autorizzato solo per un breve periodo di tempo,
devi chiamare l'API pertinente dell'elaboratore dei pagamenti al
aggiornare questo token a una versione che si possa mantenere per l'uso
in un secondo momento. Questa procedura è descritta nella sezione della guida sull'attivazione dei pagamenti.
attivo
Flusso del token della tariffa per mancata partecipazione.
Quando restituisci un
CreateBookingResponse
il campo booking.payment_information
deve essere impostato correttamente
echo sullo stato della tariffa per il mancato arrivo, come nell'esempio riportato di seguito.
JSON
{ "prepayment_status": "PREPAYMENT_PROVIDED", "payment_processed_by": "PROCESSED_BY_PARTNER", "payment_transaction_id": "[this-transaction-id]", "price": { "price_micros": "200000000", "currency_code": "USD" } "no_show_fee": { "fee": { "price_micros": 25000000, "currency_code": "USD" } "fee_type": "FIXED_RATE_DEFAULT" } }
Tieni presente che l'attributo no_show_fee
è impostato per riflettere il prezzo e
struttura dell'addebito che potrebbe essere addebitato. Inoltre, tieni presente che, in modo simile
esempio di pagamento anticipato, in questo messaggio è obbligatorio specificare transaction_id
.
Inoltre, tieni presente che il valore booking_id
impostato nel
CreateBookingResponse
è un campo obbligatorio per gli aggiornamenti in tempo reale che devono essere inviati durante la ricarica
una commissione per il mancato arrivo. Questo ID dovrebbe essere memorizzato insieme alle informazioni
sulla prenotazione.
Aggiornamenti in tempo reale
Se un utente non arriva per la prenotazione programmata o annulla l'operazione dopo il periodo di annullamento (ad es. contattandoti direttamente), potrebbe addebitare la commissione di mancato arrivo specificata utilizzando i dati di pagamento memorizzati al momento della prenotazione. Quando addebiti una commissione per il mancato arrivo, devi inviare un Aggiornamento in tempo reale che specifica che è stato addebitato l'importo per il mancato arrivo.
Per le prenotazioni create da
CreateBooking
, è necessario inviare un aggiornamento all'indirizzo
notification.partners.bookings.patch
. Nel corpo di questa richiesta
la prenotazione aggiornata, con lo stato impostato su
NO_SHOW_PENALIZED
. Questo stato indica a Google che un addebito è stato eseguito
in cui viene eseguito il deployment.
Ad esempio, una richiesta potrebbe essere inviata a:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
Con il corpo di una richiesta:
JSON
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "NO_SHOW_PENALIZED" }
Deposito
I depositi vengono utilizzati per riscuotere un addebito iniziale come requisito per prenotazione. Il deposito cauzionale può essere addebitato al momento della prenotazione o in un secondo momento nel tempo. Potresti dover definire in base a quali termini un deposito è rimborsabile così come quando è possibile annullare una prenotazione online.
Per specificare un bonifico, nel feed del servizio devi includere la sezione
Campo deposit
come mostrato nell'esempio seguente:
JSON
{ "merchant_id": "merchant-1", "service_id": "service-2-b", "name": "Spa Treatment", "description": "A full spa treatment", "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" } }
In questo esempio,
min_advance_online_canceling
definisce la finestra di annullamento e
deposit.min_advance_cancellation_sec
definisce quando il deposito è rimborsabile. Tieni presente che nell'esempio precedente un bonifico può specificare una
dei tempi di annullamento separatamente dai termini del rimborso. In questo caso, l'utente potrà annullare
il servizio online con 24 ore di anticipo (86.400 secondi). In questo modo, il commerciante
direttamente informati di eventuali annullamenti in ritardo. Tuttavia, l'utente potrebbe ancora essere
ha diritto a un rimborso sul deposito fino a 4 ore prima
(14.400 secondi) prima della prenotazione (contattando te o il commerciante per l'annullamento),
che verrà indicato nei termini al momento del pagamento e nell'email di conferma.
Per informazioni su come definire i versamenti a livello di disponibilità, consulta: questa sezione.
Server di prenotazione
Durante l'elaborazione di una richiesta che include un bonifico, viene generato un token di pagamento
al server di prenotazione nella chiamata a
CreateBooking
attraverso il campo
payment_processing_parameters.unparsed_payment_method_token
.
Questo token viene trasmesso come nel caso di pagamento anticipato. Se
addebitare il deposito o rimuovere la trattenuta al momento della prenotazione, puoi farlo
durante questa richiesta.
Se intendi addebitare il bonifico in un secondo momento, poiché il token hai l'autorizzazione solo per un breve periodo di tempo, devi chiamare il API pertinente dell'elaboratore dei pagamenti per eseguire l'upgrade di questo token che puoi mantenere per usarla in un secondo momento. Questo è descritta nella sezione della guida sull'attivazione dei pagamenti relativa a flusso dei token di deposito.
Quando restituisci un
CreateBookingResponse
, il campo booking.payment_information
deve
richiamare correttamente lo stato del bonifico, come nell'esempio riportato di seguito.
JSON
{ "prepayment_status": "PREPAYMENT_PROVIDED", "payment_processed_by": "PROCESSED_BY_PARTNER", "payment_transaction_id": "[this-transaction-id]", "price": { "price_micros": "200000000", "currency_code": "USD" } "deposit": { "deposit": { "price_micros": 25000000, "currency_code": USD, "min_advance_cancellation_sec": 28800, } "deposit_type": "FIXED_RATE_DEFAULT" } }
Tieni presente che il deposito è impostato in modo da riflettere il prezzo e la struttura dell'
che verrà addebitato o trattenuto. Inoltre, tieni presente che, in modo simile
esempio di pagamento anticipato, in questo messaggio è obbligatorio specificare transaction_id
.
Aggiornamenti in tempo reale
Se un utente annulla la prenotazione prima della finestra di annullamento del deposito, Deve rimborsare eventuali depositi addebitati sulla carta dell'utente. Quando rimborsa un deposito, devi inviare un Aggiornamento in tempo reale che specifica che il bonifico è stato rimborsato.
Per le prenotazioni create da
CreateBooking
, è necessario inviare un aggiornamento all'indirizzo
notification.partners.bookings.patch
. Nel corpo
deve essere la prenotazione aggiornata, con lo stato impostato su
CANCELED
e
Campo paymentInformation.prepaymentStatus
impostato su
PREPAYMENT_REFUNDED
. Questa email informa Google che il bonifico è stato
rimborsato.
Ad esempio, una richiesta potrebbe essere inviata a:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
Con il corpo di una richiesta:
JSON
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "CANCELED" "paymentInformation": { "prepaymentStatus": "PREPAYMENT_REFUNDED" } }
Richiedi carta di credito
Un servizio potrebbe richiedere una carta di credito come ulteriore verifica dell'identità dell'utente. Tuttavia, non dovrebbe essere utilizzato per pagamenti anticipati, versamenti o commissioni per il mancato arrivo. Se questi casi d'uso sono obbligatori, devono essere configurati in modo esplicito seguendo la procedura in alto. Inoltre, tieni presente che la richiesta di una carta di credito spesso comporta un calo significativo delle prenotazioni per questo servizio.
Per richiedere l'indicazione di una carta di credito durante il pagamento, devi impostare
il campo require_credit_card
REQUIRE_CREDIT_CARD_ALWAYS
.
JSON
{ "merchant_id": "merchant-1", "service_id": "service-1-a", "name": "Men's haircut", "description": "One of our stylists will cut your hair", "price": { "price_micros": 15000000, "currency_code": "USD" }, "require_credit_card": "REQUIRE_CREDIT_CARD_ALWAYS" }
Server di prenotazione
Durante l'elaborazione di una richiesta che include il requisito della carta di credito,
di prenotazione viene passato al server di prenotazione nella chiamata
CreateBooking
attraverso il campo
payment_processing_parameters.unparsed_payment_method_token
.
Questo token viene trasmesso come per il pagamento anticipato
per verificare se è così. Tuttavia, poiché il token viene autorizzato solo per un breve periodo di tempo,
devi chiamare l'API pertinente dell'elaboratore dei pagamenti al
aggiornare questo token a una versione che si possa mantenere per l'uso
in un secondo momento.
Non sono richieste informazioni aggiuntive nella risposta del server di prenotazione al di là del caso d'uso con pagamento all'arrivo.
Override dei prezzi a livello di disponibilità
In tutti gli esempi precedenti, la struttura prezzo / commissione è specificata a livello di servizio. Nella maggior parte dei casi, il prezzo sul livello di servizio dovrebbe in uso. In alcuni casi, tuttavia, è opportuno modificare la struttura dei pagamenti. per alcuni slot di disponibilità. Ad esempio, le seguenti situazioni Può essere gestito eseguendo l'override di prezzi / commissioni a livello di disponibilità:
- I prezzi vengono ridotti il martedì e aumentati di sabato.
- Per la disponibilità tra le 17:00 e le 19:00 non si applicano costi per lo show.
La tabella seguente elenca, per ogni metodo di pagamento / commissione, il campo da utilizzare nel feed di disponibilità per sostituire la definizione del livello di servizio.
Tipo di pagamento | Definizione di tariffa / prezzo | Può essere ignorata? |
---|---|---|
Paga all'arrivo | Service.price
|
Prezzo sostituibile tramite
Availability.payment_option_id con riferimento
Merchant.payment_option
|
Pagamento anticipato | Service.price
|
Il prezzo può essere sostituito tramite
Availability.payment_option_id con riferimento
Merchant.payment_option
|
Commissione per il mancato arrivo | Service.no_show_fee
|
Availability.no_show_fee
|
Deposito | Service.deposit
|
Availability.deposit
|
Richiedi carta di credito | Service.require_credit_card
|
Availability.require_credit_card
|
Tieni presente che per sostituire il prezzo a livello di disponibilità, devi prima definire un'opzione di pagamento a livello di commerciante. Inoltre, per indicazioni sull'aggiunta finestre di annullamento a livello di disponibilità, consulta la guida Come aggiungere finestre di annullamento.