In this section you will be able to find a brief overview of the payment process that you will need to implement if you wish to work with point of sale accounts (accounts that will require you to pay the booking through credit card prior to fully confirm the booking). Otherwise (if you will be working with a credit and/or pre-payment account), you may completely skip this process as bookings will be inmediately confirmed.
Kindly refer to the Generic Integration Process if you would like to take a wider look to the process as a whole and where does the payment process exactly stands on and to the following flowchart example which outlines the most important steps of this process:
Important note:
It is very important to understand that this process will depend on the configuration and availability of your Juniper supplier (for example, if they will require for the anti-fraud process to be performed prior to sending the payment, if they even allow for their clients to work with point of sale agencies, etc...) reason for which, you should first dicuss this with them prior to attempt to develop the mentioned.
This process may consist of up to two steps depending on the configuration of your Juniper supplier:
Anti-fraud process: The anti-fraud process will consist on the validation of all of the information that will later be used on the payment process of the booking in order to avoid any kind of potential fraud that could be related to the same. If successful, the response will supply you with a code that you will need to use on the PaymentBooking request.
Payment process: The payment process will consist on the actual payment of the booking (to the Juniper supplier). If successful, the booking will be fully confirmed and supplied to you along the proper status code.
The anti-fraud process will be needed on those cases on which your Juniper supplier has an active anti-fraud supplier on their system.
This transaction allows you the option of getting a list with all of the possible required fields in addition to a property stating if they are mandatory or optional.
Request
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.juniper.es/webservice/2007/">
<soap:Header/>
<soap:Body>
<CheckPaymentRequiredField>
<CheckPaymentRequiredFieldsRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="pass"/>
</CheckPaymentRequiredFieldsRQ>
</CheckPaymentRequiredField>
</soap:Body>
</soap:Envelope>
CheckPaymentRequiredFieldsRQ Request Detail
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages |
{Login} | N | - | Customer login to access the Web Service. |
Response
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CheckPaymentRequiredFieldResponse xmlns="http://www.juniper.es/webservice/2007/">
<CheckPaymentRequiredFieldsRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-09-23T17:37:31.5520494+02:00" IntCode="aAyKZdnE9hu9wgA8oYnGzWPbp3FcCePuGDZKDAZSYg4=">
<RequiredFieldsResponse>
<Fields>
<Field Type="String" Mandatory="true">
<Name>AnalysisLocation</Name>
</Field>
<Field Type="Datetime" Mandatory="true">
<Name>Reservation.Date</Name>
</Field>
<Field Type="Decimal" Mandatory="true">
<Name>Reservation.TotalValue</Name>
</Field>
<Field Type="String" Mandatory="true">
<Name>BillingData.ID</Name>
</Field>
<Field Type="Enum" Mandatory="true">
<Name>BillingData.Type</Name>
<Values>
<Value Code="0">Unknow</Value>
<Value Code="1">Person</Value>
<Value Code="2">Company</Value>
</Values>
</Field>
</Fields>
</RequiredFieldsResponse>
</CheckPaymentRequiredFieldsRS>
</CheckPaymentRequiredFieldResponse>
</soap:Body>
</soap:Envelope>
CheckPaymentRequiredFieldsRS Response Detail
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
RequiredFieldsResponse | N | - | - |
./RequiredFieldsResponse/Fields | N | List | List of Required Fields |
./Fields/Field | N | - | - |
./Field/Name | N | String | Name of Field |
./Field/Values | Y | List | List of possible values |
./Values/Value | Y | String | Name of Enum |
./Value/@Code | Y | Integer | Value to be sended in CheckPayment request |
./Value/@Type | N | String | Type of Field. Possible values: • String • Integer • Decimal • Datetime (dd/MM/yyyy) • Boolean • Enum (Enumeration type with fixed values. Please see the "Values" node |
./Value/@Mandatory | N | Boolean | Indicates whether the field is required |
This transaction will verify all of the specified information along the anti-fraud supplier. If succesful, it will supply you with a Token that will later need to include on the PaymentBooking request.
Request
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns="http://www.juniper.es/webservice/2007/">
<soap:Header/>
<soap:Body>
<CheckPayment>
<CheckPaymentRQ Version="1.1" Language="en">
<Login Password="pass" Email="user@mydomain.com"/>
<Request ReservationLocator="LOCATOR">
<Fields>
<Field>
<Name>AnalysisLocation</Name>
<Value>SPA</Value>
</Field>
<Field>
<Name>Reservation.Date</Name>
<Value>05/06/2016</Value>
</Field>
<Field>
<Name>Reservation.TotalValue</Name>
<Value>504.5</Value>
</Field>
<Field>
<Name>BillingData.ID</Name>
<Value>2</Value>
</Field>
<Field>
<Name>BillingData.Type</Name>
<Value>1</Value>
</Field>
</Fields>
</Request>
</CheckPaymentRQ>
</CheckPayment>
</soap:Body>
</soap:Envelope>
CheckPaymentRQ Request Detail
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages |
{Login} | N | - | Customer login to access the Web Service. |
Request | N | - | Customer login to access the Web Service |
./Request/@ReservationLocator | N | String | Booking Code |
./Request/Fields | N | List | List of Required Fields |
./Fields/Field | N | - | - |
./Field/Name | N | String | Name of Field |
./Field/Value | N | String | Value of Field |
Response
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CheckPaymentResponse xmlns="http://www.juniper.es/webservice/2007/">
<CheckPaymentRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-09-23T17:37:31.5520494+02:00" IntCode="aAyKZdnE9hu9wgA8oYnGzWPbp3FcCePuGDZKDAZSYg4=">
<Response Score="85" IsFraud="False" Status="VALID" >
<Token>MjxCmpNfKlytlAncMLv4u35Bvli2MvzpGSr/k6BfDM0=</Token>
</Response>
</CheckPaymentRS>
</CheckPaymentResponse>
</soap:Body>
</soap:Envelope>
CheckPaymentRS Response Detail
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
Response | N | - | Description of the actual status of the AntiFraud |
./Response/@Score | Y | Integer | Antifraud score (1-100). Returned by the supplier |
./Response/@IsFraud | Y | Boolean | Indicates whether it is fraud (calculated with the Score and the configured percentage) |
./Response/@Status | N | String | Status returned by the supplier. Possible values: • VALID • FRAUD • PENDING |
./Response/Token | Y | String | Check payment token. Only available on successful validations. You will need to use this token on the PaymentBooking request in order to be able to perform the same. |
This process is to be used in those cases in which your Juniper supplier configures your account so that it will require for the payment of the booking before confirming its allotment, given this case, the booking confirmation response will supply you with the same along the QUO status.
NOTE: In some cases, on which your Juniper supplier will notify you of the same, bookings finished with the CON status may also require a payment/confirmation using this process.
Once the payment process is completed and, consequently, the booking is confirmed, a new status will be supplied.
This request allows you to either do a payment request to finish the booking. The required information for the payment request is described here:
Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<PaymentBooking>
<PaymentRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="Pass"/>
<PaymentRequest ReservationLocator="LOCATOR">
<CheckPaymentToken>2mIrvXdLqDGQbTgLWAgBjA==</CheckPaymentToken>
<Payment PaymentType="OGONE">
<Price Amount="33.74"/>
<CreditCard CvC="1111" CardNumber="4111111111111111" ExpireDate="0118">
<Name>Juniper</Name>
<Surname>Surniper</Surname>
</CreditCard>
<Installments>2</Installments>
<AlternateReceiptCode>17</AlternateReceiptCode>
</Payment>
</PaymentRequest>
</PaymentRQ>
</PaymentBooking>
</soapenv:Body>
</soapenv:Envelope>
Or either do a payment refund of a previously done payment (excluding the cancellation costs of the booking). The system will verify that the booking has all of its booking lines cancelled and have a cancellation cost established, otherwise, an error response will be returned. There are two diferent requests for payment refund.
The required information for the first payment refund is described here:
Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<PaymentBooking>
<PaymentRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="Pass"/>
<PaymentRequest ReservationLocator="LOCATOR">
<Payment PaymentType="OGONE">
<Action>RFD</Action>
<CreditCard CvC="1111" CardNumber="4111111111111111" ExpireDate="0122">
<Name>Juniper</Name>
<Surname>Surniper</Surname>
</CreditCard>
</Payment>
</PaymentRequest>
</PaymentRQ>
</PaymentBooking>
</soapenv:Body>
</soapenv:Envelope>
Finally, the required information for the second payment refund is described here:
Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<PaymentBooking>
<PaymentRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="Pass"/>
<PaymentRequest ReservationLocator="LOCATOR">
<Refund PaymentType="OGONE">
<OrderCode>ORDERCODEVALUE</OrderCode>
</Refund>
</PaymentRequest>
</PaymentRQ>
</PaymentBooking>
</soapenv:Body>
</soapenv:Envelope>
PaymentRQ Request Detail
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will |
{Login} | N | - | Customer login to access the Web Service. |
PaymentRequest | N | - | Contains all of the information related to the payment or refund. |
./PaymentRequest/@ReservationLocator | N | String | Booking code of the reservation on which you wish to perform the action. |
./PaymentRequest/CheckPaymentToken | Y | String | Token retrieved from the CheckPayment response that will be required on those Juniper suppliers that have an anti-fraud system available. |
./PaymentRequest/Payment | N | - | Payment container. Contains all of the information related to the payment. |
./Payment/@PaymentType | N | String | Payment type that will be performed. Please, contact Juniper for more information. |
./Payment/Price | N | - | - |
./Price/@Amount | N | Double | Amount you are paying with the credit card. |
./Price/@CurrencyCode | Y | String | Currency code |
./Payment/CreditCard | N | - | - |
./CreditCard/@CvC | N | String | CVC of the credit Card |
./CreditCard/@CardNumber | N | String | Number of the credit card |
./CreditCard/@ExpireDate | N | String | Expiration Date of the Credit card, different payment suppliers may expect different formats (mmyy or mmyyyy). Please, contact Juniper for more information. |
./CreditCard/Name | N | String | Name of the owner of the credit card. |
./CreditCard/Surname | N | String | Surname of the owner of the credit card |
./CreditCard/CountryCode | N | String | Country code |
./Payment/ExternalPaymentReference | N | Integer | External payment reference. |
./Payment/Action | Y | Enum | Action that will be taken. Possible values: • PAY: Payment (Default value) • RFD: Refund |
./Payment/Installments | N | Integer | Indicate if the payment is performed in installments |
./Payment/AlternateReceiptCode | N | Integer | Alternate recept code |
./PaymentRequest/Refund | N | - | Refund container. Node to be used whenever you wish to refund a previously performed payment. |
./Refund/@PaymentType | N | String | Payment type that will be performed. Please, contact Juniper for available languages |
./Refund/@Amount | Y | Double | Amount to be refunded, only used on payment gateways that allow for partial refunds. |
./Refund/@Currency | Y | String | Currency of the amount to be refunded. |
./Refund/OrderCode | N | String | Code that identifies the payment, returned on the payment response. |
ExtraParams | Y | - | List of additional parameters |
./ExtraParams/Field | Y | String | Field |
./Field/Name | Y | String | Name of the field |
./Field/Value | Y | String | Value of the field |
Response
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<PaymentBookingResponse xmlns="http://www.juniper.es/webservice/2007/">
<PaymentRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-09-23T16:35:34.015388+01:00" IntCode="kEaZrO3LHAljD93Pr12TOczssRUli4DeVhQo0jSlobN9lOlLK666tD/xqidd1yYB">
<Reservation Locator="4PCXZW" Status="PRE">
<PaymentInfo OrderCode="4PCXZW" PaymentCode="39224718" AcceptanceCode="test123" PaymentMethod="CreditCard" BrandCard="VISA"/>
</Reservation>
</PaymentRS>
</PaymentBookingResponse>
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<PaymentBookingResponse xmlns="http://www.juniper.es/webservice/2007/">
<PaymentRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-09-23T16:35:34.015388+01:00" IntCode="kEaZrO3LHAljD93Pr12TOczssRUli4DeVhQo0jSlobN9lOlLK666tD/xqidd1yYB">
<Reservation Locator="LOCATOR" Status="CAN">
<PaymentInfo OrderCode="LOCATOR" PaymentCode="39224718" AcceptanceCode="" />
</Reservation>
</PaymentRS>
</PaymentBookingResponse>
</soap:Body>
</soap:Envelope>
PaymentRS Response Detail
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
Reservation | N | - | Description of the actual status of the Booking |
./Reservation/@Locator | N | String | Booking code |
./Reservation/@Status | N | String | Status of the booking after the payment process |
./Reservation/PaymentInfo | N | - | Info returned by the payment platform |
./PaymentInfo/@OrderCode | N | String | Code that identifies the payment, can be later used in order to perform a refund. |
./PaymentInfo/PaymentCode | N | String | Id that identifies the payment in the platform. May be used later in platform back office. |
./PaymentInfo/AcceptanceCode | N | String | Acceptance code delivered by payment platform. |
./PaymentInfo/ECI | Y | String | Ecommerce code. Value configured in the backoffice of the payment platform which specifies how the operation is done |
./PaymentInfo/PaymentMethod | N | String | Indicates the payment method (CreditCard) |
./PaymentInfo/BrandCard | N | String | Indicates the brand of the credit card/debit. For example: VI (Visa), MC (MasterCard), AX (AMEX), etc. |