Skip to content

Latest commit

 

History

History
2022 lines (1806 loc) · 47.1 KB

ATIONet_Mobile_Payment_Fleet_Api_-EN.md

File metadata and controls

2022 lines (1806 loc) · 47.1 KB

ationetlogo

Ationet Fleet Mobile Payment Fully Integrated

Document Information
File: ATIONet - Dynamic QR Code Payments
Doc Version: 1.0
Release Date: 02, September 2021
Author: ATIONet LLC
Change Log
Ver. Date Change Summary
1.0 02/September/2021 Initial version.

Contents


Overview

ationetTR

Introduction

This Implementation Guide is intended to guide petroleum convenience retailers and their associated vendors when implementing mobile payment solutions consistent with ISO 12812.

Note: ISO 12812 is document that will provide requirements, guidance and use cases for all stakeholders in the mobile payments arena.

Entities

This section outlines the logical entities, including location options, for Mobile Payment and identifies possible physical architectures. The term “entity” is used in this document to differentiate logical processing functionality without regard to its physical location in an implementation.

Mobile Payment Application (MPA): This entity is a software application embedded in a Mobile Device or downloaded by a consumer onto a Mobile Device, such as a smart phone or tablet, which enables mobile payments for in-store and forecourt transactions.

Mobile Payment Processing Application (MPPA): This entity is an application provided by the Mobile Payment Processor (MPP) not on the Mobile Device that is responsible for interfacing between the Token Vault or Token/Trusted Service Provider, the MPA, the Site System, the Payment Front End Processor (PFEP), and the Loyalty Front End Processor (LFEP) in order to authorize transactions.

Payment Front End Processor (PFEP): This entity is a host that facilitates the authorization of payment transactions between the MPPA or the Site System and the Issuer networks. The standard does not dictate the processing that is performed by the PFEP for each payment method. This entity is sometimes referred to as the Front End Processor (FEP).

Site System: This entity encompasses the site equipment and components (hardware and software) and may perform the function of local card processing business rules, such as consumer prompting, local velocity checking and receipt formatting and printing. Examples of site systems include Point of Sale (POS), Outside Sales Processor (OSP), Electronic Payment Server (EPS) and Forecourt Device Controller (FDC).

Note: MOBILE PAYMENT API is the common interface through which the MPA sends and receives requests from the MPPA. The description, you can read about the methods and how to consume in API Section.

Sequence diagram Pay at Pump with Above Site Payment Authorization

ationetTR

  1. Mobile Payment Application (MPA) is activated by consumer.
  2. MPA determines location and fueling point.
  3. MPA sends information to MPPA as an Authorization Request.
  4. MPPA optionally sends a Mobile Pump Reserve Request to the Site System to reserve the fueling point.
  5. Site System responds to the Mobile Pump Reserve Request.
  6. The MPPA sends a Mobile Auth Request to the Site System. If generated, the validation code in the payload.
  7. The PFEP (through the site system) sends the Mobile Auth Response to the MPPA.
  8. The MPPA sends a Mobile Auth Request to Site Systen.
  9. The Site Systen response to MPPA with a Mobile Auth Response.
  10. MPPA sends an Authorizacion Response to MPA
  11. Mobile Begin Fueling Response is sent from MPPA to Site System.
  12. Site System sends a Mobile Loyalty Award Request message to give the MPPA the opportunity to adjust the rewards. This message is always sent after fueling as the final amount is not determined until fueling is complete.
  13. The MPPA sends a response to the Site System with the additional rewards information.
  14. Site System sends Mobile Finalize Request to MPPA with completion information.
  15. MPPA sends Completion Request to PFEP.
  16. PFEP send Completion Response message to MPPA.
  17. MPPA sends Mobile Finalize Response to Site System. Note: If additional or updated receipt information is included in this response, the Site System may need to regenerate the receipt information.
  18. Site System sends receipt information to the MPPA.
  19. MPPA sends receipt information to MPA.
  20. Site System prints the receipt (if applicable).
  21. MPPA sends a receipt response back to the Site System.

Rules

In ATIONet rules refer to limits that can be configured by the company and associated to different entities. Inside this view you can consult, create or edit rules. When the entiti have a request rule, if the Customer send a Pre authorization, ATIONET will respond by requesting additional information in order to approve it. Here you can read more about Rules.

Flow

In case the PFEP requires additional information, the Transaction will be left with the status of Prompting Needed waiting for the client to send the required information, which should be sent to the PromptPreauthorizations endPoint. You can find the information requested by the PFEP using the GetTransaction endpoint, it will be found in the PaymentProcessorMessage property.

WARNING: The time to send the response is 300 seconds (5 minutes). After this time the transaction will NOT be available.

ationetTR

  1. Customer sends an Authorization Request
  2. Pump Reserve is sended
  3. Pump Reserve accepted
  4. Authorization Requested is send to PFEP
  5. PFEP response requesting Prompts
  6. Customer complete the Prompts
  7. The PFEP accept the Prompts
  8. Fuel point at site is Authorized
  9. Fueling starts
  10. Complete

Rules Requested

The requested rules can be as many as the client has configured in his Network or Company. Next you have the available keys that could be requested.

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

Note: The value always be "true"

Special cases

In some cases, like the Odometer or EngineHours, the rule may request a minimum and / or a range of values. For example:

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

How to answer the rules

PromptPreauthorizations endpoint should be consumed in order to response the Rule Request. The Transaction Id must be included in addition to the requested rules.

For each rule, you should respond with the name of the rule and its respective value. The Response Names are:

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

Implementation Guide

  1. Send a Preauthorization request using MobilePayments endPoint
  2. Yo will Receive the Transaction ID
  3. Get Transaction status using GetTransaction endPoint
  4. The Transaction status is Prompting Needed
  5. Check the paymentProcessorMessage property. It contains the Prompt Request information
  6. Send a PromptPreauthorizations request using PromptPreauthorizations endPoint
  7. Check the Transaction status again.
  8. Transaction status now is Authorization accepted

ATIONet Configuration

Sites

In the Sites menu, in the site that you want to start operating with Mobile Payments, you must update the information of the cell phone payment mode and add the FullyIntegraded type.

Once this is done you will be able to generate the QR code to paste on the pump. It should generate one per pump and each one must create introducing the Pump Code.

ationetTR

If you wish, you can generate the image of the QR code on your own on any QR code generation page, we recommend https://www.the-qrcode-generator.com/


To do your own QR Code Image you have to enter the site code and the pump number as shown below:

PumpCode:1 SiteCode:1524

Important: If you make you own QR Code image, you have to enter the text like a plain text.

You can read more about QR in the Static QR Image section.

Terminals or Controllers

In the Terminals/Cotrollers menu You have to create a new Terminal of the type AN-MobilePayment.

ationetTR

Static QR Image

Static QR Image is a photo that is pasted in the Pump and contains the pump Number and the Site code, it's mandatory data to do a Transacction. Below is an image as an example

ationetTR


Using the ATIONet Mobile Driver App, the Customer can read the Imagen QR and do a Transaction more easier.

ationetTR

  1. The customer arrives at the service station and chooses a free pump
  2. Customer open the ATIONet mobile driver app and select Pay
  3. Choses Scan the QR code using his cell phone option
  4. Customer scans the QR code and get the site info
  5. Finally, chooses Fuel and amount and touch confirm to approve Transaction

Note: The QR code Image must be of the type free text.

ationetTR

Site System Implementation guide

Commander implementation guide

Commander will provide a ConfigClient screen for configuration of Mobile Payments. These details will be provided by MPPA to commander. The screen will provide for configuration options for Site Details, and host configurations and connectivity parameters. The image below is an example. Some Mobile Payments Processing Applications might require more information than others.

STEP 1 Site Mobile Configuration


Note: The values in the image are for example. You must request the corresponding values from ATIONet.

ationetTR

STEP 2 Host Mobile Configuation


IMPORTANT: the values in the image are illustrative, please use these values:

Values to set:

Adapter: VFI_Mobile_V2
Program Name: The name of the Host configuration, we recomend use MPPA_PBL
Merchant ID: 1277
Store ID: The Site code from Ationet

Adress(IPv4 Format/Domain Name): 137.135.40.113
Port: 5560
Heartbeat Frecuency: 45
Hearbeat Time Unit: Seconds

Outdoor PreAuthorization Timeout (In Secs) 180
Site initiated Loyalty: Never Allow Site Entered Loyalty

ationetTR

We recommended check the conection status after complete configuration.

Check Status

After completing the configuration, if all the entered values are correct, you should see the status of the site created online.

To be able to check this, go to the menu Tools -> Helpdesk Diagnostic -> Payment

ationetTR

Values descriptions


Site configuration Information Description

Enable Host

Enable/Disable messaging to this particular host. If the box is not checked messages will not be sent to this particular host.

Adapter

Mobile payment APIs used by commander for communication with MPPA.

Program Name

Program name as defined by MPPA.

Authentication Type

Authentication mode supported by MPPA for that adapter.

Host IP address

IP address will be used by commander for communication with MPPA.

Port

Service Port will be used by commander for communication with MPPA.

SSL Enabled

Commander uses this Boolean for SSL communication or no-SSL communication between commander and MPPA.

Site Terminal ID

This number is supplied by MPPA as terminal identification number.

Merchant ID

Merchant Id given to the store by the MPPA.

Location ID

Location ID is given by the MPPA which identifies a site of a merchant during on boarding process.

Settlement Employee Number

Number used by commander for settlement with MPPA.

Settlement Passcode

Password used during settlement assigned by MPPA.


Site Initiated Loyalty Description

Never Allow Site Entered Loyalty

If this option is selected, the site will be restricted to accepting loyalty only from the site or only from the MPPA. If a transaction already contains loyalty (i.e. the consumer has swiped a loyalty card prior to starting the mobile transaction) the MobileReserve / Auth will be rejected. This enforces that mobile loyalty and site entered loyalty cannot co-exist.

Allow Site Entry i.e., Swiped Loyalty Card

Both Mobile loyalty and site card swipe loyalty are allowed and Mobile payments can be tendered at DCR.

Allow Site Entered Loyalty if no Mobile Loyalty

  1. If Mobile Loyalty is not present, loyalty card swipe at DCR will be accepted.
  2. If Mobile Loyalty is present and Loyalty Card is swiped at DCR, MobileReserve/Auth will be rejected.

Status Codes and Messages

The first two digits of the response code identify the message pair type. The last 3 digits is the error identifier for the status. A ‘good’ status is always represented as 00000 regardless of the message type.

Message Type Response Code Message Code Overall Result Description

All

00000

Success

Success

Message was successfully processed.

All

00001

Generic Error

Failure

An unexpected error has occurred while processing the request message.

All

00001

Generic Error

MissingMandatoryData

Mandatory data is missing from the request header.

MobileAuth

02001

Generic Error

Failure

Unexpected error while processing the MobileAuthRequest data.

MobileAuth

02001

Generic Error

MissingMandatoryData

Mandatory data is missing from the MobileAuthRequest

MobileAuth

02002

Invalid info in MobileTxnInfo element

Failure

The header info matches an already processed transaction.

MobileAuth

02002

Invalid info in MobileTxnInfo element

MissingMandatoryData

The header is missing mandatory data to complete Auth processing.

MobileAuth

02003

POS or Fueling Position in use

Failure

The targeted fueling position is already in use. (Unused)

MobileAuth

02004

POS or Fueling Position in use

Failure

The Commander was unable to process the authorization request. Communication with the POS or fueling position has been lost.

MobileAuth

02005

Unknown POS or Fueling Position

Failure

The targeted fueling position is not configured.(Unused)

MobileCancel

04001

Generic Error

Failure

Unexpected error while trying to cancel the transaction. It is likely too late in the transaction to honor.

MobileCancel

04003

04003

Failure

The Commander is beyond the point to honor a cancel request.

MobileCancel

04004

Invalid state - dispenser is fueling

Failure

Cancel occurred while dispensing fuel.

MobileCancel

04005

Invalid Dispenser number

Failure

The targeted fueling position does not match the original authorized fueling position.

MobileCancel

04006

Invalid payment/auth information

Failure

The payment info does not match the original payment info.

MobileCancel

04007

Unknown transaction or authorization

Failure

There is no active transaction to cancel matching the provided header.

MobileCancel

04008

04008

Failure

Unexpectedly failed to cancel

MobilePumpReserve

06001

Generic Error

Failure

Unexpected pump reserve failure

MobilePumpReserve

06001

Generic Error

MissingMandatoryData

Data mandatory to handling the pump reserve request is not present.

MobilePumpReserve

06002

Invalid info in MobileTxnInfo element

Failure

The header information(UMTI) was present in an already processed transaction.

MobilePumpReserve

06002

Invalid info in MobileTxnInfo element

MissingMandatoryData

Data required to reserve a fueling position is missing from the request message.

MobilePumpReserve

06003

Fueling Position in use

Failure

The dispenser is not ready to reserve for a mobile transaction. It is in use or handling configuration updates.

MobilePumpReserve

06004

Fueling Position inaccessible/offline

Failure

The targeted dispenser is configured, but offline.

MobilePumpReserve

06005

Unknown POS or Fueling Position

Failure

The targeted dispenser is not configured.

MobileTransactionData

13001

Generic Error

MissingMandatoryData

The transaction data request is missing data required for processing.

MobileTransactionData

13002

Invalid Transaction Data Header

Failure

This is a duplicate transaction for an already processed transaction, or the transaction does not exist on the system.

ATIONet PFEP Fleet Mobile Payment Api

Introduction

This specification is intended to document ATIONet’s fleet Mobile Payment API messaging format and related features required for usarage. The following sections provide descriptions of the messages themselves, the expected behaviour for each supported transaction type and a common ground for the functionality of each relevant item.

IMPORTANT: ATIONet is the PFEP that facilitates the authorization of payment transactions between the MPPA and the Issuer networks. Fleet Mobile payment Api with External PFEP are available here.

Description

ATIONet’s fleet Mobile Payment API It is responsible for creating pre-authorizations, obtaining information on a Transaction and Canceling a pre-authorization, as long as it meets the requirements to do so.

API Details

API URI: https://ationetmobilepayment-appshost.azurewebsites.net/

Supported Transactions

Name Ver. Description
Initial Change

MobilePayments

1.0

Used to validate a sale request, return the Transaction ID. If the Sale already exists, returns the ID.

PromptPreauthorizations

1.0

Used to send Prompts when MobilePayments required it.

PreAuthorizedPayments

1.0

Used to do a sale request with external approval, returns Transaction ID.

GetTransaction

1.0

Returns a Sale information.

Cancel

1.1

Cancels a Sale.

Message Structure

This section describe the message structure for each API Method available, as well as the responses messages for each one.

MobilePayments

Create a Sale with Ationet authorization. The sale creation recibes an ID, if this ID already exists then the method returns the Sale's Id.

Request Format

URL: /api/MobilePayments
Method: POST
Body: { "siteCode":"string", "pumpNumber": integer, "fuelCode": "string", "amount": double, "primaryTrack": string, "terminalCode": "string", "mobilePaymentMode": integer, "potencyKeyId": "string" , "externalReferanceID":"string" }

Response Format

Header:

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

Body: { “TransactionId”:”StringValue” }

PromptPreauthorizations

Receive a Transaction ID and a CustomerData that contais the Prompts required to approve a PreAuthorization.

Request Format

URL: /api/MobilePayments/PromptPreauthorizations
Method: POST

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

Note: customerData only must contains Prompts Requested.

Response Format

Header:

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

Body: { }

GetTransaction

Request Format

URL: /api/MobilePayments/GetTransaction/{id}
Method: GET
Body: { "id": "string" }

Response Format

Header:

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

Body: { "id":"string",
"siteCode":"string",
"primaryTrack":"string",
"odometer": double,
"terminalIdentification":"string",
"transactionSequenceNumber":integer,
"state_Name":"string",
"state_Id":integer,
"paymentProcessorReferenceId":"string",
"paymentProcessorMessage":"string",
"siteSystemMessage":"string",
"fuelPointNumber":integer,
"paymentMethod":"string",
"requestedAmount":double,
"authorizedAmount":double,
"dispatchedAmount":double,
"dispatchedQuantity":double,
"productCode":"string",
"productDescription":"string",
"productUnitPrice":double,
"unitMeasure":"string",
"createDateTime":"string",
"updateDateTime":"string"
"idDispatch":"string"
}

Cancel

Cancels a Sale that is in course as long as your status is correct. In the following diagram you can check all cancellable transaction statuses - Transaction states sequence diagram on Cancelation Request.

Request Format

URL: /api/MobilePayments/Cancel
Method: POST
Body:{ “TransactionId”:”StringValue” } { "transactionId": "StringValue", "isSuccessCanceled": bool, "responseCode": "StringValue", "responseMessage": "StringValue" }

Response Format

Header:

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

Body:{ ”transactionId”: ”StringValue”, ”isSuccessCanceled”: ”bool”, ”responseCode"”: ”string”, ”responseMessage”: ”string” }

Field Descriptions

This section describe through a table all parameters from request.

Method Paramether Type Description

MobilePayments

siteCode

string

The site code

MobilePayments

pumpNumber

integer

The pump number

MobilePayments

fuelCode

string

The fuel code

MobilePayments

amount

double

Number of liters of fuel to dispatch

MobilePayments

primaryTrack

string

The number associated with the card

MobilePayments

terminalCode

string

The terminal code

MobilePayments

mobilePaymentMode

integer

The operation mode Code. It can be for 1 for Fullintegrated

MobilePayments

potencyKeyId

string

The Transaction's ID

PreAuthorizedPayments

externalReferenceID

string

Authorization reference ID

GetTransaction | Cancel

id

string

Transaction ID

PromptPreauthorizations

customerData

Object

Contains the Prompt Rules

Error Handling

Success/failure exits on the Native Transaction Protocol will be handled via HTTP status codes.

Successful request will get a HTTP 200 and the resulting response.

Failure to process the request will be indicated by an HTTP 400’s range status code.

Transactions States

This section describe through a table all states that a sale can have.

State name ID Message

Created

1

Created

PreauthorizationAccepted

2

Preauthorization Accepted

PreauthorizationRejected

3

Preauthorization Rejected

FuelPointAuthorizationRequested

4

FuelPoint Authorization Requested

PumpReserveAccepted

5

Site System Accept Pump Reserve

PumpReserveRefused

6

Site System not Accept Pump Reserve

FuelPointAuthorized

7

Fuel Point Authorized

CanceledByFuelPoint

8

Canceled By Fuel Point

Fueling

9

Fueling

Complete

10

Complete

CompleteFailed

11

Complete Failed

CancelationRequested

12

Cancelation Requested

CanceledByUser

13

Canceled By User

CanceledBySiteSystem

14

Canceled By Site System

FuelPointDeauthorizationRequested

15

Fuel Point Deauthorization Requested

SessionError

16

Session not available

UnknownError

17

Unknown error when trying to connect with session

SiteSystemError

18

Site System Generic error

SiteSystemError

19

Cancelled By MPPA

PromptingNeeded

25

Prompting Needed

PromptingSent

27

Prompting Sent

PromptingSuccess

28

Prompting Success

TransactionRefused

28

Transaction Refused

Transaction states sequence diagram on Pre authorization Request

ationetTR

Transaction states sequence diagram on Cancelation Request

ationetTRCancel

Response Codes

MobilePayments codes

Both methos response the same codes.

Code Description

200

Success

400

Bad request

Cancelation Response codes

Code Response Response body Code Response body Message

200

Success

00000

Successfully Canceled

200

Success

-10000

Invalid state - Transaction not updated

200

Success

04001

Invalid state - Transaction status is alredy cancel

200

Success

02001

Cancel by Generic error

200

Success

04003

Invalid state - dispenser is fueling

200

Success

04004

Invalid state - Transaction status is completed

200

Success

04007

Unknow transaction or authorization

200

Success

04008

Invalid state - Cancelation is alredy requested

200

Success

04009

Invalid state - dispenser is fueling

200

Success

04010

Transacion canceled by Session not available

200

Success

04011

Transacion canceled by unknow error

400

Bad request

-

-

Message Samples

MobilePayments Sample

Request Example

{
  "siteCode": "1524",
  "pumpNumber": 1,
  "fuelCode": "3",
  "amount": 9,
  "primaryTrack": "0000000000001",
  "terminalCode": "S2G321",
  "mobilePaymentMode": 1,
  "potencyKeyId": "5734cbb9-f78f-4ad4-aa87-79ed95181c5a"
}
	

Response Example

{
  "transactionId": "5734cbb9-f78f-4ad4-aa87-79ed95181c5a"
}

GetTransaction sample

Request Example

{
  "id": 5734cbb9-f78f-4ad4-aa87-79ed95181c5a
}

Response Example

{
  "id": "5734cbb9-f78f-4ad4-aa87-79ed95181c5a",
  "siteCode": "1524",
  "primaryTrack": "0000000000001",
  "odometer": 0,
  "terminalIdentification": null,
  "transactionSequenceNumber": 17565,
  "state_Name": "Site System not Accept Pump Reserve",
  "state_Id": 6,
  "paymentProcessorReferenceId": null,
  "paymentProcessorMessage": null,
  "siteSystemMessage": "Fueling Position inaccessible/offline",
  "fuelPointNumber": 1,
  "paymentMethod": "AtionetPrepaid",
  "requestedAmount": 9,
  "authorizedAmount": 0,
  "dispatchedAmount": 0,
  "dispatchedQuantity": 0,
  "productCode": null,
  "productDescription": null,
  "productUnitPrice": 0,
  "unitMeasure": null,
  "createDateTime": "2021-09-03T13:43:16.6157799",
  "updateDateTime": "2021-09-03T13:43:24.5466667"
}

Cancel sample

Request Example

{
  "transactionId": "5664cbb9-f78f-4ad4-aa87-79ed95181c5a"
}

Response Example

{
  "transactionId": "5664cbb9-f78f-4ad4-aa87-79ed95181c5a",
  "isSuccessCanceled": true,
  "responseCode": "0",
  "responseMessage": "Successfully Canceled"
}

PromptPreauthorizations sample

Request Example

{
  "idTransaction": "e0593f2d-e54a-4153-829e-ecdafb3f96055",
  "customerData": {
    "EngineHours": "5"
  }
}

Response Example

{ }