Skip to content

Latest commit

 

History

History
650 lines (542 loc) · 16.7 KB

ATIONet_OFFLine_Payments-ES.md

File metadata and controls

650 lines (542 loc) · 16.7 KB

ationetlogo

ATIONet - OFF Line Payments

Document Information
File: ATIONET - Pagos OFF Line
Doc Version: 1.0
Release Date: 12, November 2021
Author: ATIONet LLC
Change Log
Ver. Date Change Summary
1.0 12/November/2021 Initial version.

Contenido

Visión general

ationetTR

Introduccion:

Ationet Fleet Mobile Payments - OFF Line Permite realizar una venta sin la necesidad de recibir los datos de la misma del POS/Sistema de facturación. Luego de realizado el despacho de combustible el cliente obtiene los datos del Sitio y la bomba seleccionando de forma manual o escaneando la imagen de Código QR y completa con los datos de la venta brindados por el playero a través del ticket.

Descripcion general del modo OFF Line

  1. El playero realiza el despacho y entrega el ticket indicando al cliente que no hay conexion para poder gestionar el pago de manera online.
  2. El cliente con la APP Driver escanea QR o selecciona manualmente el Sitio y la Bomba, solicita a ATIONET la informacion que devuelve indicando los datos correspondientes.
  3. Se habilita la pantalla en la APP Driver para Cargar los campos Indicados en el ticket de despacho.
  4. Se confirma la venta, se envia la Transaccion a ATIONET que confirma o rechaza la Venta, o en un tercer caso de ser necesario solicita verificación de reglas.
  5. Si ATIONET solicita verificación de reglas, estas son solicitadas al cliente y una vez enviadas, se deberá consultar el estado de la transacción hasta que ATIONET confirme o rechaze la venta.
  6. Si el cliente ingreso un valor diferente al valor despachado, si el valor ingresado fue menor, el playero le solicitará que ingrese un nuevo pago, y si el valor ingresado fue mayor, el cliente deberá comunicarse con el Company Admin.

Secuencia de pagos con modo OFF Line

ationetTR

Implementación de pagos con modo OFF Line

Introducción

La sección describe los pasos necesarios para integrar los pagos con modo OFF Line de ATIONet con el punto de venta de facturación para aceptar pagos mediante la aplicación Ationet Driver.

PASO 1 Obtener sus claves de autenticación

  • Clave de backend de POS: una clave secreta única que se utiliza para asegurar el cifrado de cada solicitud. Esto debe mantenerse en el lado del servidor y no debe compartirse con nadie.

Debe solicitar sus claves a ATIONET.

Nota: Nunca comparta la clave secreta de backend de su POS con nadie.

PASO 2 Crear solicitud de pago en modo OFF Line

El playero entrega el ticket con los datos del despacho, luego el cliente selecciona si quiere escanear el QR de la bomba o quiere seleccionar el sitio y bomba de manera manual desde la aplicación, luego ingresa manualmente la información del ticket y la envía. Los datos enviados a Mobile Payment API son:

Nombre Tipo Origen Descripción

IDDispatch

(string) Guid

Completado por la app

XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

PumpNumber

string

El cliente lo ingresa por QR o seleccionando en lista de opciones

“00”-“99”

TerminalIdentification

string

Completado por la app

Debe solicitarse a ATIONet

ProductCode

string

El cliente lo ingresa manualmente

“0”-“9999”

ProductUnitPrice

decimal

El cliente lo ingresa manualmente

xxx.xx

ProductAmount

decimal

El cliente lo ingresa manualmente

xxxxxxx.xx

ProductQuantity

decimal

Completado por la app

xxxxxxx.xx

ProductDescription

string

Completado por la app

(OPCIONAL) La descripción del producto.

localTransactionDate

integer

Completado por la app con formato yyyymmdd

Es la fecha local de la Transacción

localTransactionTime

integer

Completado por la app con formato hhmmss

Es la hora local de la de la Transacción

Ejemplos

En la seccion Ejemplo método crear y procesar puede encontrar un ejemplo de como es la trama en formato Json.

Ejemplo de imagen QR de una bomba

ationetTR

PASO 3 Confirmar el estado de la Transacción

Una vez enviado el request del método Crear y procesar, responderá con el estado de la transacción

Posibles estados de las Transacciones de modo OFF Line

Nombre Descripción

Post Paid Confirmed

La transacción fue aprobada

Post Paid Prompting needed

Se le solicita al cliente la verificación de reglas

Prompting Sent

Las reglas son enviadas

TransactionRefused

La transacción fue rechazada

Cancelled By MPPA

La Transaccion se vence por time out

ationetTR

PASO 4(opcional) El cliente envía las reglas

Si el método Crear y procesar responde con el estado Prompting needed, el usuario deberá validar reglas adicionales al endPoint del Método Validar reglas, y luego la app driver deberá verificar el estado de la transacción utilizando el método Obtener el estado de una Transacción continuamente hasta que le responda un estado diferente al Prompting needed

Nota: Se recomienda consultar el estado de transacción 8 veces por minuto.

Reglas

En ATIONet las reglas se refieren a límites que pueden ser configurados por la empresa y asociados a distintas entidades. Cuando la entidad tenga una regla de solicitud, ATIONET responderá solicitando información adicional para aprobarla.

Las reglas solicitadas pueden ser una o varias de las siguientes:

	"PromptPrimaryPin": "string",
        "PromptSecondaryTrack": "string",
        "PromptOdometer": "string",
        "PromptDriverId": "string",
        "PromptVehicleId": "string",
        "PromptTruckUnitNumber": "string",
        "PromptTrailerNumber": "string",
        "PromptEngineHours": "string",
        "PromptMiscellaneous": "string"

Nota: El valor siempre será "true"

Casos especiales

En algunos casos, como el de Odometer o EngineHours, la regla puede solicitar un mínimo y/o un rango de valores. Por ejemplo:

	"PromptOdometer": "true",
        "LastOdometer": "140",
        "MinOdometer": "150",
        "MaxOdometer": "1000",

Como responder a las reglas

Se responden consumiento el endPoint del Método Validar reglas, debe incluirse el ID de la transacción y las reglas solicitadas.

Para cada regla, debe responder con el nombre de la regla y su valor respectivo. Los nombres de respuesta son:

        "PrimaryPin": "string",
        "SecondaryTrack": "string",
        "Odometer": "string",
        "DriverId": "string",
        "VehicleId": "string",
        "TruckUnitNumber": "string",
        "TrailerNumber": "string",
        "EngineHours": "string",
        "Miscellaneous": "string"

Documentación de API

URL Productiva: ationetmobilepayment-appshost.azurewebsites.net
URL QA: ationetmobilepayment-appshost-test.azurewebsites.net

Método Crear y procesar

Descripción

Recibe la información completa de la venta, y procesa la misma.

El IdDispatch enviado deberá ser único.

Éste método requiere autenticacion a través del encabezado. Deberá ser de tipo basica. ejemplo: Basic usuario:clave

Formato de solicitud

URL: /api/PostPaid/CreateAndProcess
Method: HTTPost

body {
  "sale": {
    "idDispatch": "string",
    "pumpNumber": "string",
    "terminalIdentification": "string",
    "productCode": "string",
    "productUnitPrice": decimal,
    "productAmount": decimal,
    "productQuantity": decimal,
    "productDescription": "string",
    "localTransactionDate": integer,
    "localTransactionTime": integer
  },
  "primaryTrack": "string"
}

Puede consultar la descripcion de los valores en la sección PASO 2 Crear solicitud de pago en modo OFF Line

Formato de respuesta

Header:

Content-Type: application/json; charset=utf-8
content-encoding: gzip 
body 
{ 
	"AuthorizationCode": "string", 
	"ResponseCode": "string", 
	"ResponseMessage":  "string", 
    	"IdTransaction": "string",
  	"CustomerData": {
		"PromptPrimaryPin": "string",
		"PromptSecondaryTrack": "string",
		"PromptOdometer": "string",
		"LastOdometer": "string",
		"MinOdometer": "string",
		"MaxOdometer": "string"
		"PromptDriverId": "string",
		"PromptVehicleId": "string",
		"PromptTruckUnitNumber": "string",
		"PromptTrailerNumber": "string",
		"PromptEngineHours": "string",
		"PromptMiscellaneous": "string"
	}
}

Atención: El Objeto CustomerData sólo contendra información en caso de que se soliciten reglas.

Método Obtener el estado de una Transacción

Descripción

Obtiene el estado de una Transacción.

Éste método requiere autenticacion a través del encabezado. Deberá ser de tipo basica. ejemplo: Basic usuario:clave

Formato de solicitud

URL: /api/PostPaid/GetTransactionStatus
Method: HTTPost

Body { "idDispatch": "string" }
Descripción de los propiedades
Nombre Descripción

idDispatch

Es el identificador de la transacción

Formato de respuesta

Header:

Content-Type: application/json; charset=utf-8
content-encoding: gzip 
body 
{ 
	"AuthorizationCode": "string", 
	"ResponseCode": "string", 
	"ResponseMessage":  "string", 
	"customerData": {},
	"TransactionStatus":
		{
			"name":"string",
			"id": int
		} 
}

Método Validar reglas

Descripción

Valida las reglas adicionales.

Formato de solicitud

URL: /api/PostPaid/RulesValidations
Method: HTTPost

Body {
  "idTransaction": "string",
  "customerData": {
  	"PrimaryPin": "string",
        "SecondaryTrack": "string",
        "Odometer": "string",
        "DriverId": "string",
        "VehicleId": "string",
        "TruckUnitNumber": "string",
        "TrailerNumber": "string",
        "EngineHours": "string",
        "Miscellaneous": "string"
	}
}

Formato de respuesta

Header:

Content-Type: application/json; charset=utf-8
content-encoding: gzip 

Éste metodo devuelve una respuesta satisfactoria si pudo validar las reglas (200 Ok). Devuelve Bad Request indicando en el campo message el motivo por el cual no pudo validar las reglas.

Manejo de errores

Las salidas exitosas / fallidas en la API de la interfaz se manejarán a través de códigos de estado HTTP.

La solicitud exitosa obtendrá un HTTP 200 y la respuesta resultante.

Si no se procesa la solicitud, se indicará mediante un código de estado de rango HTTP 400. El cuerpo contendrá un solo elemento con formato JSON con los campos "ResponseCode", "ResponseMessage" y "ResponseError".

Mensajes de ejemplo

Ejemplo método Crear y procesar

Formato de solicitud

body:

{
  "sale": {
    "IdDispatch":"de1ae20c-858c-4989-a334-43992df5c45c",
    "PumpNumber": "1",
    "TerminalIdentification": "S2G321",
    "ProductCode": "1",
    "ProductUnitPrice": 1,
    "ProductAmount": 10,
    "ProductDescription": "SUPER",
    "productQuantity": 299
    "localTransactionDate": 20211117
    "localTransactionTime": 141414
  },
  "primaryTrack": "2456722042482930556=3606=000000""
}

Formato de respuesta

{
    "idTransaction": "3f34bdf9-15e2-4ef4-9134-f5a53ac360a8",
    "authorizationCode": "035657109",
    "responseCode": "40500",
    "responseMessage": "Solicitud requerida",
    "customerData": {
        "PromptEngineHours": "true",
        "MinEngineHours": "66",
        "ContractMode": "2"
    }
}

Ejemplo método Obtener estado de una Transacción

Formato de solicitud

{
  "idDispatch": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

Formato de respuesta

{
    "authorizationCode": "050808166",
    "responseCode": "40500",
    "responseMessage": "Solicitud requerida",
    "customerData": {
        "PromptOdometer": "true",
        "ContractMode": "2"
    },
    "transactionStatus": {
        "name": "Post Paid Prompting Needed",
        "id": 26
    }
}

Ejemplo método Validar reglas

Formato de solicitud

{
  "idTransaction": "f6f80f9a-7fb6-4d7c-9dca-18662d2147d0",
  "customerData": {
    "Odometer":"88"
  }
}

Formato de respuesta

{}