1.3.1. Card mapping API¶
Create card mapping¶
Create card mapping¶
Creates a card mapping. This causes one or more cardholder identifiers (phone, email, twitter name) to be mapped to card data. Card mappings can later be used to transfer funds using Money Transfer from the card or to the card.
Card mapping is given an alias (or name).
Card mapping is created for sending, receiving or both sending and receiving funds.
Request¶
HTTP Request
POST https://${hostname}/paynet/api/v3/card-mapping/create/{endpointId}/{clientOrderId}
Request body
In the request body, supply data with the following structure:
{
"address": {
"city": {string},
"country": {string},
"postcodeZip": {string},
"state": {string},
"street": {string},
"street2": {string}
},
"accountUsage": {enum},
"defaultMapping": {boolean},
"phone": {string},
"email": {string},
"twitterName": {string},
"alias": {string},
"dateOfBirth": {string},
"customerIpAddress": {string},
"card": {
"expiry": {
"month": {integer},
"year": {integer}
},
"holder":{
"firstName": {string},
"middleInitial", {string},
"lastName": {string}
},
"number": {string},
"securityCode": {string}
},
"urls": {
"redirectUrl": {string},
"callbackUrl": {string}
}
}
Property name | Value | Description |
---|---|---|
Required properties | ||
address | object | |
address.city | string(1-100) | |
address.country | string(3) | ISO 3166-1 alpha-3 code |
address.postcodeZip | string(1-10) | |
address.street | string(1-50) | |
accountUsage | enum | Possible values: SENDING, RECEIVING, SEND_RECV |
alias | string(1-20) | Alias of the created mapping |
customerIpAddress | string(7-45) | Customer IP address |
card | object | |
card.expiry | object | |
card.expiry.month | integer(2) | |
card.expiry.year | integer(4) | |
card.holder | object | |
card.holder.firstName | string(1-50) | |
card.holder.lastName | string(1-50) | |
card.number | string(9-19) | the card number (PAN) |
card.securityCode | string(3-4) | |
urls | object | |
urls.redirectUrl | string(1-128) | URL to which cardholder will be returned after the mapping has been finished |
Conditional properties | ||
address.state | string(2) | State code. Required if country has states |
phone | string(4-20) | Phone number to which to map card number. One of phone, email, twitterName must be specified |
string(4-99) | Email address to which to map card number. One of phone, email, twitterName must be specified | |
twitterName | string(1-99) | Twitter name to which to map card number. One of phone, email, twitterName must be specified |
Optional properties | ||
address.street2 | string(1-50) | |
defaultMapping | boolean | Whether created mapping will be made default for the account. False by default |
dateOfBirth | string(8) | The cardholder’s birth day in format “YYYYMMDD” |
card.holder.middleInitial | string(1) | |
urls.callbackUrl | string(1-128) | Callback URL to which notification will be made on the mapping outcome |
Response¶
If successful, this method returns the following response body:
{
"clientOrderId": {string},
"paynetOrderId": {long},
"sessionToken": {string},
"requestSerialNumber": {string}
}
Property name | Value | Description |
---|---|---|
clientOrderId | string | order identifier assigned by the caller |
paynetOrderId | string | order identifier assigned by the server |
sessionToken | string | the session token which is to be used when calling Card mapping creation status |
In case of a failure, this method returns the following response body:
{
"error": {
"code": {string},
"message": {string}
},
"clientOrderId": {string}
}
Property name | Value | Description |
---|---|---|
error | object | |
error.code | string | the error code |
error.message | string | the description of the error |
clientOrderId | string | order identifier assigned by the caller |
Create card mapping form¶
Card mapping form template may be configured (see Card Mapping Form Template).
Request¶
HTTP Request
POST https://${hostname}/paynet/api/v3/card-mapping/create-form/{endpointId}/{clientOrderId}
Request body
In the request body, supply data with the following structure:
{
"address": {
"city": {string},
"country": {string},
"postcodeZip": {string},
"state": {string},
"street": {string},
"street2": {string}
},
"accountUsage": {enum},
"defaultMapping": {boolean},
"phone": {string},
"email": {string},
"twitterName": {string},
"dateOfBirth": {string},
"customerIpAddress": {string},
"urls": {
"redirectUrl": {string},
"callbackUrl": {string}
}
}
Property name | Value | Description |
---|---|---|
Required properties | ||
address | object | |
address.city | string(1-100) | |
address.country | string(3) | ISO 3166-1 alpha-3 code |
address.postcodeZip | string(1-10) | |
address.street | string(1-50) | |
accountUsage | enum | Possible values: SENDING, RECEIVING, SEND_RECV |
customerIpAddress | string(7-45) | Customer IP address |
urls | object | |
urls.redirectUrl | string(1-128) | URL to which cardholder will be returned after the mapping has been finished |
Conditional properties | ||
address.state | string(2) | State code. Required if country has states |
phone | string(4-20) | Phone number to which to map card number. One of phone, email, twitterName must be specified |
string(4-99) | Email address to which to map card number. One of phone, email, twitterName must be specified | |
twitterName | string(1-99) | Twitter name to which to map card number. One of phone, email, twitterName must be specified |
Optional properties | ||
billing.phone | string(1-20) | |
address.street2 | string(1-50) | |
defaultMapping | boolean | Whether created mapping will be made default for the account. False by default |
dateOfBirth | string(8) | The cardholder’s birth day in format “YYYYMMDD” |
urls.callbackUrl | string(1-128) | Callback URL to which notification will be made on the mapping outcome |
Response¶
If successful, this method returns the following response body:
{
"clientOrderId": {string},
"paynetOrderId": {long},
"sessionToken": {string},
"requestSerialNumber": {string},
"redirectUrl": {string}
}
Property name | Value | Description |
---|---|---|
clientOrderId | string | order identifier assigned by the caller |
paynetOrderId | string | order identifier assigned by the server |
sessionToken | string | the session token which is to be used when calling Card mapping creation status |
redirectUrl | string | URL to which cardholder needs to be redirected to fill card mapping form |
In case of a failure, this method returns the following response body:
{
"error": {
"code": {string},
"message": {string}
},
"clientOrderId": {string}
}
Property name | Value | Description |
---|---|---|
error | object | |
error.code | string | the error code |
error.message | string | the description of the error |
clientOrderId | string | order identifier assigned by the caller |
Card mapping creation status¶
Request¶
HTTP Request
POST https://${hostname}/paynet/api/v3/card-mapping/create-status/{endpointId}/{clientOrderId}
Request body
In the request body, supply data with the following structure:
{
"sessionToken": {string}
}
Property name | Value | Description |
---|---|---|
Required properties | ||
sessionToken | string(16-36) | the session token of card mapping transaction |
Response¶
If successful, this method returns the following response body:
{
"bankOrderId": {string},
"clientOrderId": {string},
"redirectUrl": {string},
"state": {enum},
"errorCode": {integer}
"errorMessage": {string},
"phoneMappingId": {long},
"emailMappingId": {long},
"twitterNameMappingId": {long}
}
Property name | Value | Description |
---|---|---|
clientOrderId | string | order identifier assigned by the caller |
state | enum | possible values: PROCESSING , REDIRECT_REQUEST , APPROVED , DECLINED , |
FILTERED , ERROR , UNKNOWN |
||
Conditional properties | ||
bankOrderId | string(128) | required if state is APPROVED or DECLINED |
redirectUrl | string(128) | required if state is REDIRECT_REQUEST |
Optional properties | ||
errorCode | int | error code (in case of error) |
errorMessage | string(256) | error message (in case of error) |
phoneMappingId | long | ID of a phone mapping |
emailMappingId | long | ID of an email mapping |
twitterNameMappingId | long | ID of a twitter name mapping |
In case of a failure, this method returns the following response body:
{
"error": {
"code": {string},
"message": {string}
},
"clientOrderId": {string}
}
Property name | Value | Description |
---|---|---|
error | object | |
error.code | string | the error code |
error.message | string | the description of the error |
clientOrderId | string | order identifier assigned by the caller |
Retrieve card mapping¶
Retrieve card mappings¶
Allows to retrieve card mappings.
Request¶
HTTP Request
POST https://${hostname}/paynet/api/v3/card-mapping/retrieve/{endpointId}/{clientOrderId}
Request body
In the request body, supply data with the following structure:
{
"subscriberId": {string},
"subscriberType": {enum},
"alias": {string},
"accountUsage": {enum}
}
Property name | Value | Description |
---|---|---|
Required properties | ||
subscriberId | string(1-99) | Cardholder identifier (phone number, email address or twitter name, depending on subscriberType |
subscriberType | enum | Possible values: PHONE_NUMBER , EMAIL_ADDRESS , TWITTER |
Optional properties | ||
alias | string(1-20) | Alias of the mapping to retrieve |
accountUsage | enum | Possible values: SENDING , RECEIVING , SEND_RECV |
Response¶
If successful, this method returns the following response body:
{
"clientOrderId": {string},
"paynetOrderId": {long},
"sessionToken": {string},
"requestSerialNumber": {string}
}
Property name | Value | Description |
---|---|---|
clientOrderId | string | order identifier assigned by the caller |
paynetOrderId | string | order identifier assigned by the server |
sessionToken | string | the session token which is to be used when calling Card mapping retrieval status |
In case of a failure, this method returns the following response body:
{
"error": {
"code": {string},
"message": {string}
},
"clientOrderId": {string}
}
Property name | Value | Description |
---|---|---|
error | object | |
error.code | string | the error code |
error.message | string | the description of the error |
clientOrderId | string | order identifier assigned by the caller |
Card mapping retrieval status¶
Request¶
HTTP Request
POST https://${hostname}/paynet/api/v3/card-mapping/retrieve-status/{endpointId}/{clientOrderId}
Request body
In the request body, supply data with the following structure:
{
"sessionToken": {string}
}
Property name | Value | Description |
---|---|---|
Required properties | ||
sessionToken | string(16-36) | the session token of card mapping transaction |
Response¶
If successful, this method returns the following response body:
{
"bankOrderId": {string},
"clientOrderId": {string},
"redirectUrl": {string},
"state": {enum},
"errorCode": {integer}
"errorMessage": {string},
"mappings": [
"mappingId": {long},
"subscriberId": {string},
"subscriberType": {enum},
"accountUsage": {enum},
"defaultMapping": {boolean},
"alias": {string},
"address": {
"city": {string},
"country": {string},
"postcodeZip": {string},
"state": {string},
"street": {string},
"street2": {string}
},
"card": {
"expiry": {
"month": {integer},
"year": {integer}
},
"holder":{
"firstName": {string},
"middleInitial", {string},
"lastName": {string}
},
"number": {string}
},
"dateOfBirth": {string},
"receivingEligibility": {
"eligible": {boolean},
"currencyCode": {string},
"countryCode": {string},
"acceptanceBrandCode": {string},
"acceptanceBrandName": {string},
"productBrandCode": {string},
"productBrandName": {string}
}
]
}
Property name | Value | Description |
---|---|---|
clientOrderId | string | order identifier assigned by the caller |
state | enum | possible values: PROCESSING , REDIRECT_REQUEST , APPROVED , DECLINED , |
FILTERED , ERROR , UNKNOWN |
||
Conditional properties | ||
bankOrderId | string(128) | required if state is APPROVED or DECLINED |
redirectUrl | string(128) | required if state is REDIRECT_REQUEST |
Optional properties | ||
errorCode | int | error code (in case of error) |
errorMessage | string(256) | error message (in case of error) |
mappings | object | filled when data is ready |
In case of a failure, this method returns the following response body:
{
"error": {
"code": {string},
"message": {string}
},
"clientOrderId": {string}
}
Property name | Value | Description |
---|---|---|
error | object | |
error.code | string | the error code |
error.message | string | the description of the error |
clientOrderId | string | order identifier assigned by the caller |
Update card mapping¶
Update card mapping¶
Updates a card mapping, changing its attributes.
Request¶
HTTP Request
POST https://${hostname}/paynet/api/v3/card-mapping/update/{endpointId}/{clientOrderId}
Request body
In the request body, supply data with the following structure:
{
"address": {
"city": {string},
"country": {string},
"postcodeZip": {string},
"state": {string},
"street": {string},
"street2": {string}
},
"accountUsage": {enum},
"defaultMapping": {boolean},
"mappingId": {long},
"alias": {string},
"dateOfBirth": {string},
"customerIpAddress": {string},
"card": {
"expiry": {
"month": {integer},
"year": {integer}
},
"holder":{
"firstName": {string},
"middleInitial", {string},
"lastName": {string}
},
"number": {string},
"securityCode": {string}
},
"urls": {
"redirectUrl": {string},
"callbackUrl": {string}
}
}
Property name | Value | Description |
---|---|---|
Required properties | ||
address | object | |
address.city | string(1-100) | |
address.country | string(3) | ISO 3166-1 alpha-3 code |
address.postcodeZip | string(1-10) | |
address.street | string(1-50) | |
accountUsage | enum | Possible values: SENDING, RECEIVING, SEND_RECV |
alias | string(1-20) | New alias for the mapping |
customerIpAddress | string(7-45) | Customer IP address |
card | object | |
card.expiry | object | |
card.expiry.month | integer(2) | |
card.expiry.year | integer(4) | |
card.holder | object | |
card.holder.firstName | string(1-50) | |
card.holder.lastName | string(1-50) | |
card.number | string(9-19) | the card number (PAN) |
card.securityCode | string(3-4) | |
mappingId | long | ID of the mapping to be updated |
urls | object | |
urls.redirectUrl | string(1-128) | URL to which cardholder will be returned after the mapping has been finished |
Optional properties | ||
address.street2 | string(1-50) | |
defaultMapping | boolean | Whether update mapping will be made default for the account. False by default |
dateOfBirth | string(8) | The cardholder’s birth day in format “YYYYMMDD” |
card.holder.middleInitial | string(1) | |
urls.callbackUrl | string(1-128) | Callback URL to which notification will be made on the mapping outcome |
Response¶
If successful, this method returns the following response body:
{
"clientOrderId": {string},
"paynetOrderId": {long},
"sessionToken": {string},
"requestSerialNumber": {string}
}
Property name | Value | Description |
---|---|---|
clientOrderId | string | order identifier assigned by the caller |
paynetOrderId | string | order identifier assigned by the server |
sessionToken | string | the session token which is to be used when calling Card mapping updating status |
In case of a failure, this method returns the following response body:
{
"error": {
"code": {string},
"message": {string}
},
"clientOrderId": {string}
}
Property name | Value | Description |
---|---|---|
error | object | |
error.code | string | the error code |
error.message | string | the description of the error |
clientOrderId | string | order identifier assigned by the caller |
Update card mapping form¶
Card mapping form template may be configured (see Card Mapping Form Template).
Request¶
HTTP Request
POST https://${hostname}/paynet/api/v3/card-mapping/update-form/{endpointId}/{clientOrderId}
Request body
In the request body, supply data with the following structure:
{
"address": {
"city": {string},
"country": {string},
"postcodeZip": {string},
"state": {string},
"street": {string},
"street2": {string}
},
"accountUsage": {enum},
"defaultMapping": {boolean},
"mappingId": {long},
"dateOfBirth": {string},
"customerIpAddress": {string},
"urls": {
"redirectUrl": {string},
"callbackUrl": {string}
}
}
Property name | Value | Description |
---|---|---|
Required properties | ||
address | object | |
address.city | string(1-100) | |
address.country | string(3) | ISO 3166-1 alpha-3 code |
address.postcodeZip | string(1-10) | |
address.street | string(1-50) | |
accountUsage | enum | Possible values: SENDING, RECEIVING, SEND_RECV |
customerIpAddress | string(7-45) | Customer IP address |
mappingId | long | ID of the mapping to be updated |
urls | object | |
urls.redirectUrl | string(1-128) | URL to which cardholder will be returned after the mapping has been finished |
Optional properties | ||
billing.phone | string(1-20) | |
address.street2 | string(1-50) | |
defaultMapping | boolean | Whether updated mapping will be made default for the account. False by default |
dateOfBirth | string(8) | The cardholder’s birth day in format “YYYYMMDD” |
urls.callbackUrl | string(1-128) | Callback URL to which notification will be made on the mapping outcome |
Response¶
If successful, this method returns the following response body:
{
"clientOrderId": {string},
"paynetOrderId": {long},
"sessionToken": {string},
"requestSerialNumber": {string},
"redirectUrl": {string}
}
Property name | Value | Description |
---|---|---|
clientOrderId | string | order identifier assigned by the caller |
paynetOrderId | string | order identifier assigned by the server |
sessionToken | string | the session token which is to be used when calling Card mapping updating status |
redirectUrl | string | URL to which cardholder needs to be redirected to fill card mapping form |
In case of a failure, this method returns the following response body:
{
"error": {
"code": {string},
"message": {string}
},
"clientOrderId": {string}
}
Property name | Value | Description |
---|---|---|
error | object | |
error.code | string | the error code |
error.message | string | the description of the error |
clientOrderId | string | order identifier assigned by the caller |
Card mapping updating status¶
Request¶
HTTP Request
POST https://${hostname}/paynet/api/v3/card-mapping/update-status/{endpointId}/{clientOrderId}
Request body
In the request body, supply data with the following structure:
{
"sessionToken": {string}
}
Property name | Value | Description |
---|---|---|
Required properties | ||
sessionToken | string(16-36) | the session token of card mapping transaction |
Response¶
If successful, this method returns the following response body:
{
"bankOrderId": {string},
"clientOrderId": {string},
"redirectUrl": {string},
"state": {enum},
"errorCode": {integer}
"errorMessage": {string},
"phoneMappingId": {long},
"emailMappingId": {long},
"twitterNameMappingId": {long}
}
Property name | Value | Description |
---|---|---|
clientOrderId | string | order identifier assigned by the caller |
state | enum | possible values: PROCESSING , REDIRECT_REQUEST , APPROVED , DECLINED , |
FILTERED , ERROR , UNKNOWN |
||
Conditional properties | ||
bankOrderId | string(128) | required if state is APPROVED or DECLINED |
redirectUrl | string(128) | required if state is REDIRECT_REQUEST |
Optional properties | ||
errorCode | int | error code (in case of error) |
errorMessage | string(256) | error message (in case of error) |
phoneMappingId | long | ID of a phone mapping |
emailMappingId | long | ID of an email mapping |
twitterNameMappingId | long | ID of a twitter name mapping |
In case of a failure, this method returns the following response body:
{
"error": {
"code": {string},
"message": {string}
},
"clientOrderId": {string}
}
Property name | Value | Description |
---|---|---|
error | object | |
error.code | string | the error code |
error.message | string | the description of the error |
clientOrderId | string | order identifier assigned by the caller |
Delete card mapping¶
Delete card mapping¶
Deletes a card mapping created earlier. This causes card to not be mapped to cardholder identifier (phone number, email address, twitter account) used when that mapping was created.
Request¶
HTTP Request
POST https://${hostname}/paynet/api/v3/card-mapping/delete/{endpointId}/{clientOrderId}
Request body
In the request body, supply data with the following structure:
{
"mappingId": {long}
}
Property name | Value | Description |
---|---|---|
Required properties | ||
mappingId | long | ID of the mapping to be deleted |
Response¶
If successful, this method returns the following response body:
{
"clientOrderId": {string},
"paynetOrderId": {long},
"sessionToken": {string},
"requestSerialNumber": {string}
}
Property name | Value | Description |
---|---|---|
clientOrderId | string | order identifier assigned by the caller |
paynetOrderId | string | order identifier assigned by the server |
sessionToken | string | the session token which is to be used when calling Card mapping deletion status |
In case of a failure, this method returns the following response body:
{
"error": {
"code": {string},
"message": {string}
},
"clientOrderId": {string}
}
Property name | Value | Description |
---|---|---|
error | object | |
error.code | string | the error code |
error.message | string | the description of the error |
clientOrderId | string | order identifier assigned by the caller |
Delete card mappings by the user identifier¶
Deletes all card mappings mapped to the given cardholder identifier (phone number, email number, or twitter name).
Request¶
HTTP Request
POST https://${hostname}/paynet/api/v3/card-mapping/delete-subscriber-id/{endpointId}/{clientOrderId}
Request body
In the request body, supply data with the following structure:
{
"subscriberId": {string},
"subscriberType": {enum}
}
Property name | Value | Description |
---|---|---|
Required properties | ||
subscriberId | string(1-99) | Cardholder identifier (phone number, email address or twitter name, depending on subscriberType |
subscriberType | enum | Possible values: PHONE_NUMBER , EMAIL_ADDRESS , TWITTER |
Response¶
If successful, this method returns the following response body:
{
"clientOrderId": {string},
"paynetOrderId": {long},
"sessionToken": {string},
"requestSerialNumber": {string}
}
Property name | Value | Description |
---|---|---|
clientOrderId | string | order identifier assigned by the caller |
paynetOrderId | string | order identifier assigned by the server |
sessionToken | string | the session token which is to be used when calling Card mapping deletion status |
In case of a failure, this method returns the following response body:
{
"error": {
"code": {string},
"message": {string}
},
"clientOrderId": {string}
}
Property name | Value | Description |
---|---|---|
error | object | |
error.code | string | the error code |
error.message | string | the description of the error |
clientOrderId | string | order identifier assigned by the caller |
Card mapping deletion status¶
Request¶
HTTP Request
POST https://${hostname}/paynet/api/v3/card-mapping/delete-status/{endpointId}/{clientOrderId}
Request body
In the request body, supply data with the following structure:
{
"sessionToken": {string}
}
Property name | Value | Description |
---|---|---|
Required properties | ||
sessionToken | string(16-36) | the session token of card mapping transaction |
Response¶
If successful, this method returns the following response body:
{
"bankOrderId": {string},
"clientOrderId": {string},
"redirectUrl": {string},
"state": {enum},
"errorCode": {integer}
"errorMessage": {string}
}
Property name | Value | Description |
---|---|---|
clientOrderId | string | order identifier assigned by the caller |
state | enum | possible values: PROCESSING , REDIRECT_REQUEST , APPROVED , DECLINED , |
FILTERED , ERROR , UNKNOWN |
||
Conditional properties | ||
bankOrderId | string(128) | required if state is APPROVED or DECLINED |
redirectUrl | string(128) | required if state is REDIRECT_REQUEST |
Optional properties | ||
errorCode | int | error code (in case of error) |
errorMessage | string(256) | error message (in case of error) |
In case of a failure, this method returns the following response body:
{
"error": {
"code": {string},
"message": {string}
},
"clientOrderId": {string}
}
Property name | Value | Description |
---|---|---|
error | object | |
error.code | string | the error code |
error.message | string | the description of the error |
clientOrderId | string | order identifier assigned by the caller |
Card Mapping Form Template¶
When a card mapping is created (Create card mapping form) or updated (Update card mapping form) using a Form, that form is being generated using a Form Template. There exists a default Form Template which is used when Form Template is not customized.
Form template is a Velocity template containing the following placeholders:
Placeholder | Description |
---|---|
ACTION | This placeholder must be put into action attribute of the <form> tag |
CARDNO | Name of the field in which card number will be entered |
EXPMONTH | Name of the field in which expiration month will be entered |
EXPYEAR | Name of the field in which expiration year will be entered |
CARDHOLDER_FIRSTNAME | Name of the field in which cardholder first name will be entered |
CARDHOLDER_MIDDLE_INITIAL | Name of the field in which cardholder middle initial will be entered |
CARDHOLDER_LASTNAME | Name of the field in which cardholder last name will be entered |
CARDHOLDER_FIRSTNAME_VALUE | Cardholder first name (entered on previous attempt to submit the form) |
CARDHOLDER_MIDDLE_INITIAL_VALUE | Cardholder middle initial (entered on previous attempt to submit the form) |
CARDHOLDER_LASTNAME_VALUE | Cardholder last name (entered on previous attempt to submit the form) |
CVV2 | Name of the field in which security code will be entered |
ALIAS | Name of the field in which card mapping alias will be entered |
EXPIRE_YEARS | <select> tag with expiration years |
SKIN_VERSION | Version of the Paynet CSS Skin |
PAYNET_ORDER_ID | Order ID assigned to this order by Paynet |
MERCHANT_ORDER_ID | Order ID assigned to this order by the Merchant |
REQUEST_REMOTE_HOST | Remote host from which the request is made |
MERCHANT | Either endpoint’s Payment Form Header (if defined), or endpoint’s Display Name |
USER_IDENTIFIERS | List of user identifiers; see User identifiers |
INTERNAL_SECTION | Internal section which must be inserted into the form so that it functions properly |
User identifiers¶
A list of user identifiers, each of them contains the following properties:
Property name | Description |
---|---|
subscriberType | Type of the user identifier: this can be EMAIL_ADDRESS , PHONE_NUMBER ,
TWITTER |
subscriberId | Identifier of the corresponding type, i.e. email, phone number, or Twitter user name |
Default form template¶
Default form template follows. It can also be used as a basis for extension and customization.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Pay securely with credit card</title>
<link rel="stylesheet" type="text/css" href="/paynet-ui-skin/${SKIN_VERSION}/d/css/processing-form.css"/>
</head>
<body>
<div class="container">
<!-- HEADER -->
<div class="header">
<div class="header-logo"></div>
<div class="header-merchant-label">Merchant:</div>
<div class="header-merchant-name as-title" >$MERCHANT</div>
</div>
<div class="main">
<!-- Order Summary -->
<div class="summary">
<h2 class="summary-title as-title">Order summary</h2>
<div class="summary-description">$!ORDERDESCRIPTION</div>
<div class="summary-total">
<span class="summary-total-label">Total:</span>
<span class="summary-total-value">$!AMOUNT $!CURRENCY</span>
</div>
</div>
<!-- Pay form -->
<form class="form" action="${ACTION}" method="post">
<h2 class="form-title as-title">Pay secure with credit card</h2>
<ul class="form-ul">
<!-- Card Number -->
<li class="form-li">
<label class="form-label" for="${CARDNO}">Credit or Debit card number:</label>
<input class="form-number-field" id="${CARDNO}" name="${CARDNO}" type="text" maxlength="19" autocomplete="off" />
</li>
<!-- Valid thru -->
<li class="form-li">
<label class="form-label" for="${EXPMONTH}">Card expiration date:</label>
<select class="form-expire-month" id="${EXPMONTH}" name="${EXPMONTH}" size="1" >
<option value="01">01 / January</option>
<option value="02">02 / February</option>
<option value="03">03 / March</option>
<option value="04">04 / April</option>
<option value="05">05 / May</option>
<option value="06">06 / June</option>
<option value="07">07 / July</option>
<option value="08">08 / August</option>
<option value="09">09 / September</option>
<option value="10">10 / October</option>
<option value="11">11 / November</option>
<option value="12">12 / December</option>
</select>
<!--suppress HtmlFormInputWithoutLabel -->
<select class="form-expire-year" name="${EXPYEAR}" id="${EXPYEAR}" size="1">
${EXPIRE_YEARS}
</select>
</li>
<!-- Card printed name -->
<li class="form-li">
<label class="form-label" for="${CARDHOLDER}">Card printed name:</label>
<input class="form-name-field" id="${CARDHOLDER}" name="${CARDHOLDER}" type="text" maxlength="50" autocomplete="off" value="${CARDHOLDER_VALUE}" />
</li>
<!-- CVV -->
<li class="form-li">
<label class="form-label" for="${CVV2}">Card security code (CVV2/CVC2):</label>
<input class="form-cvv-field" name="${CVV2}" id="${CVV2}" type="password" maxlength="4" autocomplete="off" />
</li>
<!-- Destination Card Number -->
#if($!DESTINATIONCARDNO)
<li class="form-li">
<label class="form-label" for="${DESTINATIONCARDNO}">Destination card number:</label>
<input class="form-number-field" id="${DESTINATIONCARDNO}" name="${DESTINATIONCARDNO}" type="text" maxlength="19" autocomplete="off" />
</li>
#end
$!{INTERNAL_SECTION}
#if($!card_error)
<div class="form-error">
$!card_error
</div>
#end
<li class="form-li-buttons">
<span class="form-secure-connection">SECURE CONNECTION</span>
<!--suppress HtmlFormInputWithoutLabel -->
<input name="submit" type="submit" class="form-button form-button-ok" value="Process payment" />
<!--suppress HtmlFormInputWithoutLabel -->
<input name="cancel" type="submit" class="form-button form-button-cancel" value="Cancel" />
</li>
</ul>
<div class="form-card-info"></div>
</form>
</div>
</div>
</body>
</html>