A plataforma da Central de ações oferece suporte a diversas configurações por receber pagamentos. A O Guia de ativação de pagamentos abrange os aspectos da integração que são comuns a todas as integrações de pagamentos, incluindo:
- Como configurar feeds para incluir informações de
tokenization_parameter
- Atualizando o servidor de agendamento para aceitar
payment_method_token
objetos - Informações gerais sobre as informações trocadas entre um usuário, a Central de ações o parceiro / comerciante e o processador de pagamentos.
Neste guia, vamos saber mais sobre como configure seus feeds para especificar quais dos diferentes tipos de são aplicáveis aos seus comerciantes e serviços.
- Sem pagamentos / pagamento na chegada
- Pré-pagamento total
- Taxa de não comparecimento / taxa de cancelamento
- Depósito
Todos os casos de uso para pagamentos são extensões da ausência de pagamentos. / pagamento na chegada (que não requer configuração de pagamento), por isso, tutorial começa descrevendo essa configuração e tratando outras configurações como extensões.
Cada seção também abrange os campos a serem acompanhados na servidor de reserva para aceitar o pagamento específico. configuração do Terraform.
Sem pagamentos / pagamento na chegada
Para serviços que não exigem pagamento no momento da reserva, Nenhuma configuração de pagamento é necessária no comerciante ou serviço. nível No entanto, os preços ainda são obrigatórios.
Essa é a configuração de valor de referência para um serviço, que contém um
nome, descrição e preço. Seria uma única mensagem de serviço
em um
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" } }
Nenhuma outra configuração é necessária além da implementação padrão. no servidor de reserva para aceitar o pagamento na chegada.
Pré-pagamento
Essa configuração é usada para especificar que a quantidade de devem ser pagos integralmente no momento da reserva.
O pré-pagamento é especificado no nível de serviço por meio de
prepayment_type
do
Service
. Para exigir pagamentos por um serviço que este
precisa ser definido como REQUIRED
, como no exemplo abaixo. Observe que
o preço é especificado da mesma forma que no exemplo de pagamento na chegada. Aqui,
porque estamos definindo o tipo de pré-pagamento como obrigatório, um cartão de crédito
foi coletado, e esse preço pode ser cobrado no momento da finalização da compra.
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" }
Servidor de agendamento
Ao aceitar pré-pagamentos, um token de pagamento é transmitido para sua reserva
na chamada para
CreateBooking
no campo
payment_processing_parameters.unparsed_payment_method_token
Você deve cobrar exatamente o valor especificado por meio do
preço nos feeds, e é necessário usar a moeda
especificado nos feeds. Essas cobranças devem seguir o fluxo descrito
no
Guia de ativação de pagamentos.
Ao retornar um
CreateBookingResponse
o campo booking.payment_information
deve ser definido como
indicam que o pré-pagamento foi fornecido e processado.
A
A especificação PaymentInformation
contém
documentação para todas as opções de informações de pagamento. Um exemplo mínimo para
o processamento do pré-pagamento é fornecido abaixo. É importante que o preço
retornado no campo de preço corresponder exatamente ao especificado
solicitação. Além disso, se uma taxa fiscal for especificada nos feeds/na solicitação, ela
também precisam ser incluídas.
Você também precisa fornecer um ID da transação. Este ID de transação precisam, no mínimo, ser exclusivos entre as transações do comerciante. Um um bom candidato a ID de transação é o ID de transação fornecido ao para você pelo processador de pagamentos.
JSON
{ "prepayment_status": "PREPAYMENT_PROVIDED", "payment_processed_by": "PROCESSED_BY_PARTNER", "payment_transaction_id": "[this-transaction-id]", "price": { "price_micros": "200000000", "currency_code": "USD" } }
Taxa de não comparecimento
Taxas de não comparecimento podem ser cobradas de um usuário se ele não comparecer ao reserva ou se cancelarem após o janela de cancelamento. Se nenhuma janela de cancelamento for especificada, será definido por padrão como o horário de início do espaço.
Para especificar uma taxa de não comparecimento, inclua no feed de serviço o seguinte:
no_show_fee
, como mostrado no exemplo abaixo:
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" } }
No exemplo acima, o parceiro ou comerciante está autorizado a
cobrar uma taxa fixa de US $25,00, conforme especificado
no_show_fee.fee.price_micros
se o responsável pelo agendamento
não comparecer ao agendamento. Essa taxa também poderá ser cobrada se o usuário
cancela dentro de 4 horas (14.400 segundos) antes do agendamento, conforme
especificado em scheduling_rules.min_advance_online_canceling
.
Para acessar como as taxas de não comparecimento podem ser definidas no nível de disponibilidade, consulte nesta seção.
Servidor de agendamento
Ao processar uma solicitação que inclui uma taxa de não comparecimento, um token de pagamento
é transmitido para o servidor de agendamento na chamada
CreateBooking
no campo
payment_processing_parameters.unparsed_payment_method_token
Esse token é transmitido da mesma maneira que na fase de pré-pagamento
caso. No entanto, como o token só é autorizado por um curto período,
tempo, você precisa chamar a API relevante do seu processador de pagamentos para
atualize esse token para uma versão que você possa persistir para uso em
mais tarde. Isso é descrito na seção do guia "Ativar pagamentos"
ativado
Fluxo de token de Taxa de não comparecimento.
Ao retornar um
CreateBookingResponse
o campo booking.payment_information
deve ser definido como corretamente
Repita o status da taxa de não comparecimento, como no exemplo abaixo.
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" } }
Observe que no_show_fee
está definido para refletir o preço e
estrutura da taxa que pode ser cobrada. Observe também que, assim como
exemplo de pré-pagamentos, é necessário um transaction_id
nesta mensagem.
Observe também que o booking_id
definido no
CreateBookingResponse
é um campo obrigatório para as atualizações em tempo real que devem ser enviadas ao carregar
uma taxa de não comparecimento. Espera-se que esse ID seja armazenado com informações
sobre a reserva.
Atualizações em tempo real
Se um usuário não chegar para o agendamento programado ou cancelar a assinatura Depois da janela de cancelamento (por exemplo, entrando em contato diretamente com você), pode cobrar a taxa de não comparecimento especificada usando as informações de pagamento armazenados no momento da reserva. Quando você cobra uma taxa de não comparecimento, precisa enviar um Atualização em tempo real especificando que a taxa de não comparecimento foi cobrada.
Para agendamentos criados por
CreateBooking
, uma atualização será enviada para
notification.partners.bookings.patch
No corpo dessa solicitação, deve ser
a reserva atualizada, com o status definido como
NO_SHOW_PENALIZED
: Esse status informa ao Google que uma cobrança foi
feitas.
Por exemplo, uma solicitação pode ser enviada para:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
Com um corpo de solicitação:
JSON
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "NO_SHOW_PENALIZED" }
Depósito
Os depósitos são usados para coletar uma cobrança inicial como requisito para reserva. Os depósitos podem ser cobrados no momento da reserva ou depois tempo de resposta. Talvez seja necessário definir sob quais termos um depósito pode ser reembolsado como bem como quando um agendamento pode ser cancelado on-line.
Para especificar um depósito, no feed de serviços, você deve incluir o campo
deposit
, como mostrado no exemplo abaixo:
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" } }
Neste exemplo,
min_advance_online_canceling
define a janela de cancelamento e o
deposit.min_advance_cancellation_sec
define quando o depósito será reembolsável. No exemplo acima, um depósito pode especificar um
o horário de cancelamento separadamente dos termos de reembolso. Nesse caso, o usuário pode cancelar
o serviço on-line com até 24 horas de antecedência (86.400 segundos). Isso garante que o comerciante seja
diretamente informados sobre cancelamentos tardios. No entanto, o usuário ainda pode ser
qualificado para reembolso do depósito com até quatro horas de antecedência
(14.400 segundos) antes do agendamento (ao entrar em contato com você ou com o comerciante para fazer o cancelamento)
que aparece nos termos ao finalizar a compra e no e-mail de confirmação.
Para ver como os depósitos podem ser definidos no nível de disponibilidade, consulte nesta seção.
Servidor de agendamento
Ao processar uma solicitação que inclui um depósito, um token de pagamento é
transmitidos para o servidor de agendamento na chamada
CreateBooking
no campo
payment_processing_parameters.unparsed_payment_method_token
Esse token é transmitido da mesma maneira que no caso de pré-pagamento. Se você
cobrar o depósito ou retirar a retenção no momento da reserva, você pode fazer isso
durante a solicitação.
Se você pretende cobrar o depósito em um momento posterior, como o token for autorizado apenas por um curto período, você deve chamar o método API relevante do seu processador de pagamentos para atualizar esse token em um que você pode manter para usar em outro momento. Isso é descritos na seção do guia "Ativar pagamentos" fluxo de token de depósito.
Ao retornar um
CreateBookingResponse
, o campo booking.payment_information
precisa
repetir corretamente o status do depósito, como no exemplo abaixo.
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" } }
O depósito está definido para refletir o preço e a estrutura do
que será cobrado ou retido. Observe também que, assim como
exemplo de pré-pagamentos, é necessário um transaction_id
nesta mensagem.
Atualizações em tempo real
Se um usuário cancelar a reserva antes da janela de cancelamento do depósito, você deverá reembolsar qualquer depósito cobrado no cartão do usuário. Quando reembolso de um depósito, você deverá enviar um Atualização em tempo real especificando que o depósito foi reembolsado.
Para agendamentos criados por
CreateBooking
, uma atualização será enviada para
notification.partners.bookings.patch
No corpo do
deve ser a reserva atualizada, com o status definido como
CANCELED
e o
O campo paymentInformation.prepaymentStatus
foi definido como
PREPAYMENT_REFUNDED
Isso informa ao Google que o depósito foi feito
reembolsados.
Por exemplo, uma solicitação pode ser enviada para:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
Com um corpo de solicitação:
JSON
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "CANCELED" "paymentInformation": { "prepaymentStatus": "PREPAYMENT_REFUNDED" } }
Exigir cartão de crédito
Um serviço pode exigir um cartão de crédito como valor adicional a verificação da identidade do usuário. No entanto, ele não deve ser usado de pré-pagamento, depósitos ou taxas de não comparecimento. Se esses casos de uso forem precisam ser configurados explicitamente usando as etapas acima. Além disso, solicitar um cartão de crédito geralmente resulta queda significativa no número de reservas desse serviço.
Para exigir o fornecimento de um cartão de crédito durante a finalização da compra, defina
o campo require_credit_card
para
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" }
Servidor de agendamento
Ao processar uma solicitação que inclui uma exigência de cartão de crédito, um pagamento
é transmitido ao seu servidor de agendamento na chamada
CreateBooking
no campo
payment_processing_parameters.unparsed_payment_method_token
Esse token é transmitido da mesma maneira que na fase de pré-pagamento
caso. No entanto, como o token só é autorizado por um curto período,
tempo, você precisa chamar a API relevante do seu processador de pagamentos para
atualize esse token para uma versão que você possa persistir para uso em
mais tarde.
Nenhuma informação adicional é necessária na resposta do servidor de agendamento além do caso de uso de pagamento na chegada.
Substituição de preços no nível de disponibilidade
Em todos os exemplos acima, a estrutura de preço / taxa é especificada. no nível de serviço. Na maioria dos casos, esses preços de nível de serviço usados. Em alguns casos, no entanto, faz sentido alterar a estrutura de pagamentos para determinados horários disponíveis. Por exemplo, as seguintes situações pode ser resolvida substituindo os preços / taxas no nível de disponibilidade:
- Os preços são reduzidos às terças-feiras e aumentam aos sábados.
- As taxas de não comparecimento se aplicam à disponibilidade entre 17h e 19h.
A tabela abaixo lista, para cada forma de pagamento / taxa, os campos a serem usar no feed de disponibilidade para substituir a definição de nível de serviço.
Tipo de pagamento | Definição de tarifa / preço | Substituível? |
---|---|---|
Pagar na chegada | Service.price
|
Preço substituível por
Availability.payment_option_id fazendo referência
Merchant.payment_option
|
Pré-pagamento | Service.price
|
O preço pode ser modificado por
Availability.payment_option_id fazendo referência
Merchant.payment_option
|
Taxa de não comparecimento | Service.no_show_fee
|
Availability.no_show_fee
|
Depósito | Service.deposit
|
Availability.deposit
|
Exigir cartão de crédito | Service.require_credit_card
|
Availability.require_credit_card
|
Para substituir o preço no nível de disponibilidade, primeiro é preciso definir uma opção de pagamento no nível do comerciante. Além disso, para orientação sobre como adicionar janelas de cancelamento em nível de disponibilidade, consulte o guia Como adicionar janelas de cancelamento.