La plataforma de Actions Center admite una variedad de configuraciones por recibir pagos. El La guía para habilitar pagos abarca los aspectos de la integración que son comunes a todas las integraciones de pagos, incluidas las siguientes:
- Configura feeds para incluir información de
tokenization_parameter
- Actualizando el servidor de reservas para aceptar
payment_method_token
objetos - Visión general de la información que se intercambia entre un usuario, el Centro de acciones, entre el socio o el comercio y el procesador de pagos.
En esta guía, veremos con más detalle cómo configura tus feeds para especificar cuál de los diferentes configuración de pagos sea aplicable a tus comercios y servicios.
- Sin pagos / pago al llegar
- Prepago completo
- Tarifa por no presentarse o de cancelación
- Depósito
Todos los casos de uso de pagos son extensiones de la opción "sin pagos" de pago al llegar a destino (que no requiere configuración de pagos), por lo que comienza por describir esa configuración y tratar otras de configuraciones como extensiones.
En cada sección, también se cubrirán los campos a los que se debe hacer un seguimiento en la servidor de reservas con el fin de aceptar el pago específico configuración.
Sin pagos / pago al llegar
En el caso de los servicios que no requieren ningún pago en el momento de la reserva, no se requiere ninguna configuración de pagos en el comercio o servicio. a nivel de organización. Sin embargo, los precios aún son obligatorios.
Esta es la configuración del modelo de referencia de un servicio, que contiene un
nombre, descripción y precio. Sería un solo mensaje de Service
en 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" } }
No se requiere ninguna configuración adicional más allá de la implementación estándar en el servidor de reservas para admitir el pago al llegar.
Prepago
Esta configuración se usa para especificar que la cantidad se deben pagar en su totalidad en el momento de la reserva.
El prepago se especifica en el nivel de servicio mediante el
prepayment_type
del campo
Service
Para solicitar pagos por un servicio que
se debe configurar en REQUIRED
, como en el siguiente ejemplo. Ten en cuenta que
El precio se especifica de la misma manera que en el ejemplo de pago al llegar. Toma
Debido a que establecimos el tipo de prepago como obligatorio, se utilizará una tarjeta de crédito
y este precio podrá cobrarse en el momento de la confirmación de la 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 reservas
Al aceptar prepagos, se transfiere un token de pago a tu reserva
servidor en la llamada para
CreateBooking
a través del campo
payment_processing_parameters.unparsed_payment_method_token
Debes cobrar exactamente el importe especificado mediante el
'precio' [price] en los feeds, y debes usar la moneda
especificadas en los feeds. Estos cargos deben seguir el flujo que se describe
en la
Guía para habilitar pagos
Cuando se devuelve un
CreateBookingResponse
el campo booking.payment_information
se debe configurar como
refleje que se proporcionó y procesó el prepago.
El
La especificación PaymentInformation
contiene información completa
documentación para todas las opciones de información de pago. Un ejemplo mínimo para
el procesamiento del prepago se proporciona a continuación. Es importante que el precio
que se devuelven en el campo de precio coinciden exactamente con lo que se especifica en el
para cada solicitud. Además, si se especifica una tasa impositiva en los feeds o las solicitudes,
también deben incluirse exactamente.
Además, ten en cuenta que debes proporcionar un ID de transacción. Este ID de transacción debe, como mínimo, ser único entre las transacciones con ese comercio. R buen candidato para un ID de transacción es el ID de transacción proporcionado a a través del procesador de pagos.
JSON
{ "prepayment_status": "PREPAYMENT_PROVIDED", "payment_processed_by": "PROCESSED_BY_PARTNER", "payment_transaction_id": "[this-transaction-id]", "price": { "price_micros": "200000000", "currency_code": "USD" } }
Tarifa por no presentarse
Se pueden cobrar tarifas por no presentarse si no asiste al reserva o si se cancela después de la ventana de cancelación. Si no se especifica un período de cancelación, la hora de inicio predeterminada del horario disponible.
Para especificar una tarifa por no presentarse, incluye en el feed de servicio la siguiente información
no_show_fee
, como se muestra en el siguiente ejemplo:
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" } }
En el ejemplo anterior, el socio o el comercio están autorizados a
cobrar un cargo de tasa fija de USD 25, según se especifica en
no_show_fee.fee.price_micros
si el titular de la cita
no asiste a la cita. Esta tarifa también puede cobrarse si el usuario
se cancela dentro de las 4 horas (14,400 segundos) antes de la cita,
especificadas en el scheduling_rules.min_advance_online_canceling
.
Para ver cómo se pueden definir las tarifas por no presentarse a nivel de disponibilidad, consulta esta sección.
Servidor de reservas
Cuando se procesa una solicitud que incluye una tarifa por no presentarse, se crea un token
se pasan a tu servidor de reservas en la llamada a
CreateBooking
a través del campo
payment_processing_parameters.unparsed_payment_method_token
Este token se pasa de la misma manera que en la opción de prepago
para determinar si este es el caso. Sin embargo, debido a que el token solo se autoriza durante un período breve
debes llamar a la API correspondiente de tu procesador de pagos para
actualiza este token a una versión que puedas conservar para su uso a un
en el futuro. Esto se describe en la sección de la guía Habilita los pagos.
activado
Flujo de token de tarifa por no presentarse:
Cuando se devuelve un
CreateBookingResponse
el campo booking.payment_information
se debe configurar para
Repite el estado de la tarifa por no presentarse, como en el siguiente ejemplo.
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" } }
Ten en cuenta que se configuró no_show_fee
para reflejar el precio y
la estructura de la tarifa que se puede cobrar. Además, ten en cuenta que, al igual que con el
ejemplo de prepagos, se requiere un transaction_id
en este mensaje.
Además, ten en cuenta que el booking_id
establecido en el
CreateBookingResponse
es un campo obligatorio para las actualizaciones en tiempo real que se deben enviar cuando se realiza la carga
una tarifa por no presentarse. Se espera que este ID se almacene junto con la información.
sobre la reserva.
Actualizaciones en tiempo real
Si un usuario no llega a su reserva programada o la cancela Después del período de cancelación (p.ej., comunicándose directamente con usted), puede cobrar opcionalmente la tarifa por no presentarse especificada usando la información de pago que almacenaste en el momento de la reserva. Cuando cobras una tarifa por no presentarte, debes enviar un Actualización en tiempo real en la que se especifica que se cobró la tarifa por no presentarse.
Para las reservas creadas por
CreateBooking
, se debe enviar una actualización a
notification.partners.bookings.patch
En el cuerpo de esta solicitud
la reserva actualizada, con el estado establecido en
NO_SHOW_PENALIZED
Este estado informa a Google que se aplicó un cargo
en la nube.
Por ejemplo, se podría enviar una solicitud a la siguiente dirección:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
Con un cuerpo de solicitud:
JSON
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "NO_SHOW_PENALIZED" }
Depósito
Los depósitos se utilizan para recaudar un cargo inicial como requisito para reserva. Los depósitos se pueden cobrar en el momento de la reserva o más adelante tiempo. Es posible que debas definir las condiciones en las que se puede reembolsar el depósito como así como Cuándo se puede cancelar una reserva en línea.
Para especificar un depósito, en el feed de servicio debes incluir la
deposit
, como se muestra en el siguiente ejemplo:
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" } }
En este ejemplo,
min_advance_online_canceling
define la ventana de cancelación y la
deposit.min_advance_cancellation_sec
define cuándo es reembolsable el depósito. Ten en cuenta que, en el ejemplo anterior, un depósito puede especificar una
tiempo de cancelación separado de las condiciones del reembolso. En este caso, el usuario podrá cancelar
el servicio en línea hasta 24 horas antes (86,400 segundos). Esto garantiza que el comercio
informar directamente sobre cualquier cancelación tardía. Sin embargo, es posible que el usuario
apto para un reembolso en su depósito hasta 4 horas antes
(14,400 segundos) antes de la reserva (comunicándose contigo o con el comercio para su cancelación)
que se mostrará en las condiciones en el momento de la confirmación de la compra y en el correo electrónico de confirmación.
Para ver cómo se pueden definir los depósitos a nivel de disponibilidad, consulta esta sección.
Servidor de reservas
Al procesar una solicitud que incluye un depósito, se crea un token de
pasan a tu servidor de reservas en la llamada a
CreateBooking
a través del campo
payment_processing_parameters.unparsed_payment_method_token
Este token se pasa de la misma manera que en el caso de prepago. Si
cobrar el depósito o retirar la retención en el momento de la reserva, puedes hacerlo
durante esta solicitud.
Si piensas cobrar el depósito más adelante, ya que el token del solo se autorizó por un período breve, debes llamar al la API correspondiente de tu procesador de pagos para actualizar este token a un que puedes conservar para usarlos en otro momento. Este es como se describe en la sección Habilita los pagos en flujo de token de depósito.
Cuando se devuelve un
CreateBookingResponse
: el campo booking.payment_information
debe
reproducir correctamente el estado del depósito, como se muestra en el siguiente ejemplo.
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" } }
Ten en cuenta que el depósito se establece para reflejar el precio y la estructura del
depósito que se cobrará o retendrá. Además, ten en cuenta que, al igual que con el
ejemplo de prepagos, se requiere un transaction_id
en este mensaje.
Actualizaciones en tiempo real
Si un usuario cancela su reserva antes del período de cancelación del depósito, tú debe reembolsar cualquier depósito que haya cobrado a la tarjeta del usuario. Cuándo reembolsar un depósito, debes enviar un Actualización en tiempo real que especifica que se reembolsó el depósito.
Para las reservas creadas por
CreateBooking
, se debe enviar una actualización a
notification.partners.bookings.patch
En el cuerpo de este
de entrada debe ser la reserva actualizada, con el estado establecido en
CANCELED
y las
Se estableció el campo paymentInformation.prepaymentStatus
en
PREPAYMENT_REFUNDED
Esto informa a Google que el depósito se
se reembolsó.
Por ejemplo, se podría enviar una solicitud a la siguiente dirección:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
Con un cuerpo de solicitud:
JSON
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "CANCELED" "paymentInformation": { "prepaymentStatus": "PREPAYMENT_REFUNDED" } }
Solicitar tarjeta de crédito
Es posible que los servicios requieran de una tarjeta de crédito como complemento la verificación de la identidad del usuario. Sin embargo, no debe usarse para prepago, depósitos o tarifas por no presentarse. Si esos casos de uso son se deben configurar de forma explícita con los pasos arriba. Además, ten en cuenta que solicitar una tarjeta de crédito a menudo genera una una disminución significativa en las reservas de este servicio.
Para solicitar que se proporcione una tarjeta de crédito durante la confirmación de la compra, debes configurar
el 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 reservas
Al procesar una solicitud que incluye un requisito de tarjeta de crédito, se puede
token se pasa a tu servidor de reservas en la llamada a
CreateBooking
a través del campo
payment_processing_parameters.unparsed_payment_method_token
Este token se pasa de la misma manera que en la opción de prepago
para determinar si este es el caso. Sin embargo, debido a que el token solo se autoriza durante un período breve
debes llamar a la API correspondiente de tu procesador de pagos para
actualiza este token a una versión que puedas conservar para su uso a un
en el futuro.
No se requiere información adicional en la respuesta del servidor de reservas más allá del caso de uso de pago al llegar.
Anula precios en el nivel de disponibilidad
En todos los ejemplos anteriores, se especifica la estructura de precios y tarifas. a nivel del servicio. En la mayoría de los casos, estos precios por nivel de servicio que se usan. Sin embargo, en algunos casos, tiene sentido modificar la estructura de pagos. para determinados horarios disponibles. Por ejemplo, las siguientes situaciones se podría manejar anulando los precios o las tarifas a nivel de disponibilidad:
- Los precios se reducen los martes y se aumentan los sábados.
- Las tarifas por no presentarse se aplican a la disponibilidad entre las 5:00 p.m. y las 7:00 p.m.
En la siguiente tabla, se indica qué campo corresponder a cada forma de pago o tarifa usar en el feed de disponibilidad para anular la definición del nivel de servicio.
Tipo de pago | Definición de tarifa / precio | ¿Se puede anular? |
---|---|---|
Pagar al llegar | Service.price
|
Precio reemplazable hasta
Referencia de Availability.payment_option_id
Merchant.payment_option
|
Prepago | Service.price
|
El precio se puede anular hasta
Referencia de Availability.payment_option_id
Merchant.payment_option
|
Tarifa por no presentarse | Service.no_show_fee
|
Availability.no_show_fee
|
Depósito | Service.deposit
|
Availability.deposit
|
Solicitar tarjeta de crédito | Service.require_credit_card
|
Availability.require_credit_card
|
Ten en cuenta que, para anular el precio a nivel de disponibilidad, primero debes definir una opción de pago a nivel del comercio. Además, como guía para agregar períodos de cancelación a nivel de disponibilidad, consulta la guía Cómo agregar ventanas de cancelación.