Imposta tipi di pagamento diversi

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:

  1. Configurazione dei feed per includere le informazioni tokenization_parameter in corso...
  2. Aggiornamento del server di prenotazione in modo che accetti payment_method_token oggetti
  3. 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.

  1. Nessun pagamento / pagamento all'arrivo
  2. Pagamento anticipato completo
  3. Commissione per mancato arrivo / Commissione di annullamento
  4. 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.