• No results found

EveryPay Payment API Field Specifications

N/A
N/A
Protected

Academic year: 2021

Share "EveryPay Payment API Field Specifications"

Copied!
11
0
0

Loading.... (view fulltext now)

Full text

(1)

EveryPay Payment API

Field Specifications

Merchant Integration Manual

(2)

Contents

Contents

Payment Initiation from E-shop to Payment Gateway Parameters

HMAC-data generation example in Ruby HTML form example

Embedded payment form using iFrame Parameters

Embedding iFrame

Automatic Callback to E-shop with Transaction Results Parameters

Redirect to E-shop After Payment Attempt Parameters

Payment cancellation Parameters

Tailoring the integration nonce

order_reference HMAC

(3)

Payment Initiation from E-shop to Payment Gateway

Gateway API endpoint URLs (for HTTP POST form target) in EveryPay environments: ● Test/demo/sandbox: https://igw-demo.every-pay.com/transactions/

Production: https://pay.every-pay.eu/transactions/

Description of the optional field markings: O - field is optional

OF - field is optional, but including it improves fraud detection (therefore it’s highly recommended to provide this information whenever possible)

Parameters

Field name Optional Description

api_username Merchant API username. The value can be found in Merchant Portal in the Settings section.

account_id Processing account to be used for the transaction. Processing account defines the transaction processing configuration, including the currency to be used, pricelist, 3D Secure settings, payment recurrence, clearing settings, etc.

Example values could be: ‘EUR1, ‘USD2’.

The field value can be found in Merchant Portal in the Settings section.

nonce Random unique value to prevent replay attacks

timestamp Time of creating the transaction. Expressed as seconds from January 1, 1970 UTC

callback_url Once EveryPay gateway has processed the transaction, processing result data is posted to this URL.

customer_url When the buyer clicks on the Back button, he will be redirected to this URL.

email OF E-mail address (buyer)

amount Payment amount

(4)

user_ip IP-address (buyer) billing_address OF Billing address

billing_country OF Billing country, in two-character ISO 31661 format billing_city OF Billing city

billing_postcode OF Billing postcode delivery_address OF Delivery address

delivery_country OF Delivery country, in two-character ISO 3166 format delivery_city OF Delivery city

delivery_postcode OF Delivery postcode

hmac Keyed-hash message authentication code. HMAC is

constructed by concatenating form parameter keys and values into a string ordered by alphabetic order of the key name and returning its hexdigest with shared secret.

Shared secret key can be viewed and changed in Merchant Portal in the Settings section.

hmac_fields It is a string which contains all fields (keys) that are going to be used in hmac calculation, separated by comma.

“hmac_fields” should contain a key “hmac_fields” and should not contain a key “hmac”.

E.g:

"account_id,nonce,timestamp,amount,order_reference,user _ip,callback_url,customer_url,api_username,transaction_ty pe,hmac_fields"

transaction_type Card transaction type to be initiated. Accepted values are:

● ‘authorisation’ ● ‘charge’

Authorisation: A process of getting approval to the transaction and booking the required amount on the card (without actually transferring the funds yet). The funds need to be captured manually from the merchant portal.

Charge: An authorisation followed by an immediate capture - request to transfer the funds for the delivery of goods or services automatically, without the need for

1 https://en.wikipedia.org/wiki/ISO_3166

(5)

further manual actions.

locale O Sets the locale and the language of the EveryPay Payment Page user interface displayed to the customer.

Defaults to ‘en’. Accepted values are:

● ‘en’ - English ● ‘et’ - Estonian ● ‘ru’ - Russian

Please contact the Everypay support if you need other supported locales.

Note:This field must not be included for HMAC calculation. cc_token O Enables payment with stored card token. If a valid cc_token

is provided, the buyer will not be required to fill in card details.

request_cc_token O Accepted values are:

● ‘1’ - cc_token will be returned in callback ● ‘0’ (default) - cc_token will not be returned in

callback

HMAC-data generation example in Ruby

data = { transaction_type: "authorisation", amount: "10.0", api_username: "1adcffbf5e2df582", account_id: "EUR1", billing_address: "Tamme 2", billing_city: "Tallinn", billing_country: "EE", billing_postcode: "12345", callback_url: "https://merchantshop.com/shop/payment_callbacks?order_reference=98c9fa2e52f0679610935497ff4da71 4", customer_url: "https://merchantshop.com/shop/orders/44", delivery_address: "Kuuse 3", delivery_city: "Tallinn", delivery_country: "EE", delivery_postcode: "12345", email: "[email protected]", nonce: "d6e33441e0171249e71992946896f754", order_reference: "98c9fa2e52f0679610935497ff4da714", timestamp: "1397038382", user_ip: "82.131.119.82", hmac_fields: "account_id,nonce,timestamp,amount,order_reference,user_ip,callback_url,customer_url,api_usernam e,transaction_type,hmac_fields,billing_address,billing_city,billing_country,billing_postcode,del ivery_address,delivery_city,delivery_country,delivery_postcode" }

(6)

hmac = OpenSSL::HMAC.hexdigest("sha1", "shared_api_secret", hmac_string)

HTML form example

<form action="https://igw-demo.every-pay.com/transactions/" method="post"> <input name="hmac" value="75ed21e06d7e3ed26d1eb8b3fab24bdf3d73df20"> <input name="hmac_fields"

value="account_id,nonce,timestamp,amount,order_reference,user_ip,callback_url,customer_url,api_u sername,transaction_type,hmac_fields,billing_address,billing_city,billing_country,billing_postco de,delivery_address,delivery_city,delivery_country,delivery_postcode">

<input name="transaction_type" value="authorisation"> <input name="locale" value="en">

<input name="amount" value="10.0">

<input name="api_username" value="1adcffbf5e2df582"> <input name="account_id" value="EUR1">

<input name="billing_address" value="Tamme 2"> <input name="billing_city" value="Tallinn"> <input name="billing_country" value="EE"> <input name="billing_postcode" value="12345"> <input name="callback_url"

value="https://merchantshop.com/shop/payment_callbacks?order_reference=98c9fa2e52f0679610935497f f4da714">

<input name="customer_url" value="https://merchantshop.com/shop/orders/44"> <input name="delivery_address" value="Kuuse 3">

<input name="delivery_city" value="Tallinn"> <input name="delivery_country" value="EE"> <input name="delivery_postcode" value="12345"> <input name="email" value="[email protected]">

<input name="nonce" value="d6e33441e0171249e71992946896f754">

<input name="order_reference" value="98c9fa2e52f0679610935497ff4da714"> <input name="timestamp" value="1397038382">

<input name="user_ip" value="82.131.119.82">

<input class="btn btn-danger" type="submit" value="Proceed to Payment"> </form>

Embedded payment form using iFrame

Parameters

If you don’t want buyers to redirect away from your site during the payment process then just embed the iFrame in payment flow to take care of collecting the payment information and charge the user.

Field name Optional Description

skin_name To get it, go to merchant portal and create skin under ‘IFrame skins’ tab.

(7)

Embedding iFrame

<iframe id="iframe-payment-container" name="iframe-payment-container", width="460", height="400"></iframe>

<form action="https://igw.every-pay.dev/transactions" id="iframe_form" method="post" style="display: none" target="iframe-payment-container">

<input name="hmac" value="75ed21e06d7e3ed26d1eb8b3fab24bdf3d73df20"> <input name="transaction_type" value="authorisation">

<input name="locale" value="en"> <input name="amount" value="1.0">

<input name="api_username" value="b3616e26a91d3cb4"> <input name="account_id" value="EUR1">

<input name="callback_url"

value="https://merchantshop.com/shop/payment_callbacks?order_reference=98c9fa2e52f0679610935497 ff4da714">

<input name="customer_url" value="https://merchantshop.com/shop/orders/44"> <input name="nonce" value="30d7810d31dbb77d4300fd3f6a59ff11">

<input name="order_reference" value="98c9fa2e52f0679610935497ff4da714"> <input name="timestamp" value="1437488204">

<input name="user_ip" value="82.131.119.82"> <input name="skin_name" value="default"> </form>

<script>

window.onload = function() { document.getElementById("iframe_form").submit(); } </script>

Automatic Callback to E-shop with Transaction Results

Parameters

Field name Optional Description

api_username Merchant API username

account_id Processing account ID that was used to process the transaction

nonce Random unique value to prevent replay attacks. Validating the uniqueness of the returned 'nonce' value on

merchant's side will add an extra layer of security.

timestamp Seconds from January 1, 1970 UTC

amount Transaction amount

order_reference Order reference

payment_reference Payment reference ID

(8)

● ‘settled’ ● ‘authorised’ ● ‘failed’

processing_errors Array of error hashes in JSON format.

Note: Don’t use code escapes for HMAC calculation.

processing_warnings Hash of fraud check warnings in JSON format.

Note: Don’t use code escapes for HMAC calculation.

hmac Calculated HMAC for request authenticity verification over the fields in the response message. Use only the fields listed in hmac_fields for HMAC calculation, all the other fields should be ignored. The HMAC must be generated based on the exact returned fields, i.e. without code escapes for processing_errors and processing_warnings fields.

hmac_fields It is a string which contains all fields (keys) that are going to be used in hmac calculation, separated by comma. “hmac_fields” contains a key “hmac_fields” and does not contain a key “hmac”.

E.g:

"account_id,nonce,timestamp,amount,order_reference,us er_ip,payment_reference,payment_state,api_username,tr ansaction_result,hmac_fields"

transaction_result Result of the transaction. Possible values are: ● ‘completed’

● ‘failed’

cc_token O cc_token will be returned only if it was requested in the Payment Initiation.

(9)

Redirect to E-shop After Payment Attempt

Parameters

Once the buyer has been redirected back to the merchant's shop after the payment attempt, the following parameters will posted to the redirect URL (customer_url):

Field name Description

api_username Merchant API username

account_id Processing account ID that was used to process the transaction nonce Random unique value to prevent replay attacks. Validating the

uniqueness of the returned 'nonce' value on merchant's side will add an extra layer of security.

timestamp Seconds from January 1, 1970 UTC

amount Transaction amount

order_reference Order reference payment_reference Payment reference ID payment_state Current state of the payment

hmac Calculated HMAC for request authenticity verification. Use only the fields listed in hmac_fields for HMAC calculation, all the other fields should be ignored.

hmac_fields It is a string which contains all fields (keys) that are going to be used in hmac calculation, separated by comma. “hmac_fields” contains a key “hmac_fields” and does not contain a key “hmac”.

E.g:

"account_id,nonce,timestamp,amount,order_reference,user_ip,payme nt_reference,payment_state,api_username,transaction_result,hmac_fi elds"

transaction_result

Result of the transaction. Possible values ● ‘failed’ - if the transaction failed

(10)

Payment cancellation

Parameters

If the buyer decides to cancel the payment and move back to the merchant’s e-shop, the following parameters will posted to the given URL (customer_url):

Field name Description

nonce Random unique value to prevent replay attacks. Validating the uniqueness of the returned 'nonce' value on merchant's side will add an extra layer of security.

timestamp Seconds from January 1, 1970 UTC order_reference Order reference

payment_state Current state of the payment. In case of a cancellation the value is ‘cancelled’.

hmac Calculated HMAC for request authenticity verification. Use only the fields listed in hmac_fields for HMAC calculation, all the other fields should be ignored.

hmac_fields t is a string which contains all fields (keys) that are going to be used in hmac calculation, separated by comma. “hmac_fields” contains a key “hmac_fields” and does not contain a key “hmac”.

E.g:

"api_username,payment_state,timestamp,nonce,transaction_result,order_r eference,hmac_fields"

transaction_result Result of the transaction. In case of a cancellation the value is ‘cancelled’. api_username Merchant API username

(11)

Tailoring the integration

nonce

All Everypay message responses contain the ‘nonce’ field, that can be used to verify

uniqueness of the response message. This approach helps to prevent possible message replay attacks.

Validating the uniqueness of the returned ‘nonce’ value on merchant's side will add an extra layer of security. It requires storing ‘nonce’ values of the received messages and comparing the ‘nonce’ values of the received messages against the stored ‘nonce’ values.

order_reference

The main purpose of ‘order_reference’ parameter is to match the payment in EveryPay’s system to the correct corresponding order in merchant’s e-shop. ‘order_reference’ must be unique. As an additional benefit, matching the ‘order_reference’ and validating its uniqueness in merchant’s e-shop provides an extra layer of security against tampering attacks.

HMAC

HMAC calculation can be tricky and it’s important to pay extra attention to which API parameters and how should be included in HMAC calculations. For example:

● the hmac_fields field is used in all stages of the payment (initiation, callback, redirect, cancellation) to assist with providing required information about which fields are included in HMAC calculation

● the JSON contents of ‘processing_errors’ and ‘processing_warnings’ fields in callback should not be escaped

Changelog

Date Change

2015-07-24 Added hmac_fields field

2015-07-21 Added iFrame integrated payment form feature 2015-07-10 Added token payment parameters:

● cc_token

● request_cc_token ● cc_last_four_digits 2015-06-01 Initial document

References

Related documents

Mere is that way [masculine] on and off the field. But Mere can’t say that she’s lesbian. In 20xx, her uncle found out that she was lesbian. … She got chased from her home and went

expressly understands and agrees that any performance bond or insurance protection required by this Contract, or otherwise provided by the Contractor, does not limit the

from the cost of capital for debt (like gains and losses on financial items) is pure transitory and does not affect the forecast of future residual income (or expense) from

Indian geothermal provinces have the capacity to produce 10,600 MW of power- a figure which is five time greater than the combined power being produced from non-conventional

-files &lt;comma separated list of files&gt; specify comma separated files to be copied to the map reduce cluster. -libjars &lt;comma separated list of jars&gt; specify comma

In view of the wide variations in the levels of free chlorine, pH and cyanuric acid in the Oregon study, it is remarkable that the key indicator of bacteriological water quality was

The code field should contain the product code of the billing product to display in place of the dues items, and the description field should contain a comma separated list of

 Comma-delimited Text File: a data file consisting of fields and records, stored as text, in.. which the fields are separated