Overview
Introduction
Prizm Pay is a powerful online payment services platform, which provides secure, multi-channel, multi-lingual and multi-currency payment services. It is used by many renowned companies and organizations in the region.
Purpose and Objective
The main purpose of this document is to provide merchants with the necessary technical information during their credit card payment gateway implementation for their applications and platforms. This manual contains a technical overview, the payment flows as well as the API formats required between Prizm Pay and the merchant system. This guide also provides setup instructions and sample scripts which merchants will find useful with the integration.
Contact Information
Prizm Pay Limited
16/F SML Tower, 165 Hoi Bun Road
Kwun Tong, Kowloon, Hong Kong S.A.R.
Technical questions: [email protected]
Getting Started
Below you'll find tutorials that will teach you how to use Prizm Pay, and reference documentation for all the moving part.
Merchant Account
The account provided by Prizm Pay via email or letter. The account includes:
Merchant ID (MID)
The unique identifier for your account, the most important value and needed for a lot of places.
Login ID & Password
The master Login ID and Password for login Merchant Panel.
Merchant Panel
The online interfaces for manage your merchant account, you can …
- View and update account information
- View transactions summary and details
- Process refund
- Create other users and user groups
- Custom payment settings
- More ...
Production Merchant Panel
https://backend.prizmmpay.com/merchant/
Testing Merchant Panel
https://backend-test.prizmmpay.com/merchant/
Secure Hash
SHA-256 Hash feature allows you to authenticate that transaction responses are securely received from Prizm Pay. Prizm Pay uses the hash field for this feature.
How It Works
The SHA-256 is a specific way of encrypting information to make it unreadable but unique to a given transaction. It allows a merchant to verify that the results of the transaction are actually from Prizm Pay. Since every scripting language supports SHA-256 Hashes, you can create your SHA-256 hash value using the same information that we used for the encryption. If the SHA-256 Hash that you create matches the SHA-256 Hash that you received, then you know that only Prizm Pay could have sent the transaction response.
Creating the SHA-256 Hash
A static secret key is required to create the SHA-256 Hash and it is assigned to a merchant by the Prizm Pay. The merchant must use this key to create the hash value.
Example
Key |
Value |
Description |
SECRET_KEY |
key |
The key from Prizm Pay |
UNIX_TIMESTAMP |
1406780084 |
Current UNIX timestamp |
MERCHANT_ID |
8888 |
Merchant ID |
DATA |
Hello World |
Data |
Hash = sha256 (SECRET_KEY + UNIX_TIMESTAMP + MERCHANT_ID + DATA)
Concatenate values
Hash = sha256 ("key" + "1406780084" + "8888" + Hello World")
SHA256 hashing
Hash = sha256 ("key14067800848888Hello World")
Result
Hash = "0a0017d13b8b666cdbe1278cf745eac32c635fb38ca941032f7a94b9853d6d45"
Payment Page
It is the most popular connection method among merchants. The advantage of this connection method is simple and speedy. On the other hand, payment transaction flow is ready to use. Merchant can kick off the web site on-the-fly with just a small scale integration.
Scope and Compatibility
This connection is designed for merchants who have Online Shopping Cart System. The routine is HTML-based with JavaScript and should be widely applicable to on-line shopping cart software and architecture, whose technical specifications and varieties are beyond the scope of this document. Compatibility with shopping cart software is yet to be exhaustively given and would not be included in the scope of this document.
The compatible version of the software code is as follow:
Software Code |
Version |
HTML |
4 |
JavaScript |
1.3 |
The version compatibility of the software code with popular browser software is as follow:
Browser |
Version |
Internet Explorer |
6.0 or above |
Chrome |
All supported |
Firefox |
All supported |
Safari on iOS |
iOS 5 or above |
Android |
2.3 or above |
Netscape Navigator |
1.3 |
Preparation
Before implementation, you should have the following information:
Merchant ID
Please refer to Getting Started section.
Secret Key
You may find the secret key in Merchant Panel.
- Login Merchant Panel
- Open `Merchant` in menu
- Open `Payment Page` in sub menu
- Copy `Secret Key` field
Payment Page URL
Production URL
Testing URL
Open Payment Page
Definition of Parameters
The following are the parameters for integration. Prizm Pay is case sensitive. Make sure the typeface is correct.
Parameters in GET
Parameter |
Type |
Description |
mid |
Number (11) |
Prizm Pay Merchant ID |
time |
Number (11) |
Current Unix timestamp |
hash |
String (64) |
Hash string using SHA-256 (Please refer to Secret Hash section) |
Parameters in POST
All parameters should be stored in a field named `data`.
Parameter |
Type |
Description |
merchant_referenceCode |
String (30) |
Merchant‘s order unique reference number |
merchant_invoiceId |
String (25) |
Merchant‘s order invoice number (Optional) |
purchaseTotals_currency |
String (3) |
The currency code (ISO 4217) of the payment. Currency will remain as is initial setup (Please refer to Appendix A.1) |
purchaseTotals_grandTotalAmount |
Number(15,2) |
Total amount of whole payment |
billTo[firstName] |
String (50) |
First name of billing contact |
billTo[lastName] |
String (50) |
Last name of billing contact |
billTo[email] |
String (150) |
Email of billing contact |
billTo[phoneNumber] |
String (25) |
Phone number of billing contact |
billTo[street1] |
String (100) |
Line 1 of billing address |
billTo[street2] |
String (100) |
Line 2 of billing address (Optional) |
billTo[city] |
String (50) |
City of billing address |
billTo[state] |
String (50) |
State of billing address (Required for transactions in the U.S. and Canada) (Please refer to Appendix A.3) |
billTo[country] |
String (2) |
Country of billing address in ISO 3166-1 alpha-2 code (Please refer to Appendix A.2) |
billTo[postalCode] |
String (10) |
Postal code of billing address |
shipTo[firstName] |
String (50) |
First name of shipping contact |
shipTo[lastName] |
String (50) |
Last name of shipping contact |
shipTo[email] |
String (150) |
Email of shipping contact |
shipTo[phoneNumber] |
String (25) |
Phone number of shipping contact |
shipTo[street1] |
String (100) |
Line 1 of shipping address |
shipTo[street2] |
String (100) |
Line 2 of shipping address (Optional) |
shipTo[city] |
String (50) |
City of shipping address |
shipTo[state] |
String (50) |
State of shipping address |
shipTo[country] |
String (2) |
Country of shipping address in ISO 3166-1 alpha-2 code (Please refer to Appendix A.2) |
shipTo[postalCode] |
String (10) |
Postal code of shipping address |
item |
Text |
Item details including name, unitPrice, quantity in JSON format |
Example
The following is a sample HTML form with values. The form will be auto submit Prizm Pay Standard Payment Page by JavaScript in POST method.
<form id="form" name="form" method="post" action="https://pp-test.prizmmpay.com/pay?mid=1102&time=1405934494&hash=c1b4b82448923e0fa52a7a41921561aaa3516abf78fb0d3daae214deb84921bc">
<input type="hidden" name="data[merchant_referenceCode]" value="53ccdb9e4ef121405934494" />
<input type="hidden" name="data[merchant_invoiceId]" value="53ccdb9e4f3021405934494" />
<input type="hidden" name="data[purchaseTotals_grandTotalAmount]" value="0.3" />
<input type="hidden" name="data[purchaseTotals_currency]" value="USD" />
<input type="hidden" name="data[item][0][name]" value="item 1" />
<input type="hidden" name="data[item][0][quantity]" value="1" />
<input type="hidden" name="data[item][0][unitPrice]" value="0.1" />
<input type="hidden" name="data[item][1][name]" value="item 2" />
<input type="hidden" name="data[item][1][quantity]" value="2" />
<input type="hidden" name="data[item][1][unitPrice]" value="0.1" />
<input type="hidden" name="data[billTo][firstName]" value="John" />
<input type="hidden" name="data[billTo][lastName]" value="Doe" />
<input type="hidden" name="data[billTo][email]" value="[email protected]" />
<input type="hidden" name="data[billTo][phoneNumber]" value="650-965-6000" />
<input type="hidden" name="data[billTo][street1]" value="1295 Charleston Rd." />
<input type="hidden" name="data[billTo][street2]" value="" />
<input type="hidden" name="data[billTo][city]" value="Mountain View" />
<input type="hidden" name="data[billTo][state]" value="CA" />
<input type="hidden" name="data[billTo][country]" value="US" />
<input type="hidden" name="data[billTo][postalCode]" value="94043" />
<input type="hidden" name="data[shipTo][firstName]" value="John" />
<input type="hidden" name="data[shipTo][lastName]" value="Doe" />
<input type="hidden" name="data[shipTo][email]" value="[email protected]" />
<input type="hidden" name="data[shipTo][phoneNumber]" value="650-965-6000" />
<input type="hidden" name="data[shipTo][street1]" value="1295 Charleston Rd." />
<input type="hidden" name="data[shipTo][street2]" value="" />
<input type="hidden" name="data[shipTo][city]" value="Mountain View" />
<input type="hidden" name="data[shipTo][state]" value="CA" />
<input type="hidden" name="data[shipTo][country]" value="US" />
<input type="hidden" name="data[shipTo][postalCode]" value="94043" />
</form>
<script type="text/javascript">
// The JavaScript for auto submit
document.getElementById('form').submit();
</script>
Payment API
This method is used for the merchant if they want to capture the credit card information from their web page instead of using our standard payment page. This connection method only applies to credit card transaction. The requirement of using this method is to install a SSL Certificate to your domain in order to protect your customer's credit card information.
Preparation
Before implementation, you should have the following information:
Merchant ID
Please refer to Getting Started section.
Secret Key
You may find the secret key in Merchant Panel.
- Login to the Merchant Panel
- Open `Merchant` in menu
- Open `Payment Page` in sub menu
- Copy `Secret Key` field
API URL
Production URL
Testing URL
https://api-test.prizmmpay.com/
Device Fingerprint ID
Please refer to the next section about Device Fingerprint.
Device Fingerprint
The device fingerprint is a unique identifier derived from persistent cookies set during profiling. This computer identifier can be the single constant element that you use to identify morphing and the true location of a computer. With this type of identity morphing, customer and order data may seem completely random, but the fingerprint does not change.
The fingerprint enables you to identify many characteristics of a computer, for example:
- Connections between accounts and other customer data
- True locations of devices when they are hidden behind a proxy
- Suspicious configurations of computers, such as language settings inconsistent with the country
Adding the Fingerprint
You must add a 1-pixel image, which is not displayed, and two code segments to the <body> tag of your checkout page, ensuring that 3 to 5 seconds elapse between the execution of the code and the submission of the order.
Adding the Code Segments
Add the code segments to your checkout page immediately above the closing </body> tag to ensure that web pages render correctly. Do not enclose the segments in visible HTML elements. The code segments must be loaded before the customer submits an order. Otherwise, you receive an error message.
Replacing the Variables
You can copy the code segments shown below. In each code segment, replace the variables with your values:
Parameter |
Type |
Description |
<MERCHANT_ID> |
Number (11) |
Prizm Pay Merchant ID |
<MERCHANT_REF> |
String (30) |
Merchant‘s order unique reference number |
<SESSION_ID> |
String (64) |
HTTP Session ID |
<ORG_ID> |
String (10) |
Test Org ID: 1snn5n9w Production Org ID: k8vif92e |
<DF_ID> |
String (128) |
The value concatenated with MERCHANT_ID, MERCHANT _REF and SESSION_ID .
Format: "<MERCHANT_ID>_<MERCHANT_REF>_<SESSION_ID>" |
<DF_PARAMS> |
String (256) |
The value concatenated with static string and DF_ID.
Format: "org_id=<ORG_ID>&session_id=prizmm<DF_ID>" |
Code Segments
<p style="background:url(http://h.online-metrix.net/fp/clear.png?<DF_PARAMS>&m=1)"></p>
<img src="http://h.online-metrix.net/fp/clear.png?<DF_PARAMS>&m=2" alt="">
<object type="application/x-shockwave-flash" data="http://h.online-metrix.net/fp/fp.swf?<DF_PARAMS>" width="1" height="1" id="thm_fp">
<param name="movie" value="http://h.online-metrix.net/fp/fp.swf?<DF_PARAMS>" />
</object>
<script src="http://h.online-metrix.net/fp/check.js?<DF_PARAMS>" type="text/javascript"></script>
Authorizing a Payment
Authorization means that when you submit an order using a credit card, you receive an immediate confirmation about the availability of the funds. If the funds are available, the issuing bank reduces your customer’s open to buy, which is the amount of credit available on the card. Most of the common credit cards are processed online. For authorizations, you will typically start the process of order fulfillment soon after you receive confirmation of the order.
Authorizations expire with the issuing bank after a specific length of time if they have not been captured and settled. Most authorizations expire within five to seven days. The issuing bank sets the length of time.
Authorization Request
Definition of Parameters
Parameters in HTTP Request Header
Parameter | Type | Description |
API_VERSION | Number (4) | API Version (Default is 100) |
API_MID | Number (11) | Prizm Pay Merchant ID |
API_TIME | Number (11) | Current Unix timestamp |
API_HASH | String (64) | Hash string using SHA-256 (Please refer to Secret Hash section) |
Parameters in POST
All parameters should be stored into a field named `data` in JSON format.
Parameter | Type | Description |
merchantID | Number (10) | Merchant‘s ID |
merchantReferenceCode | String (30) | Merchant‘s order unique reference number |
merchantInvoiceID | String (25) | Merchant‘s order invoice number (Optional) |
deviceFingerprintID | String 128() | Device Fingerprint ID (Please refer to Device Fingerprint section, <DF_ID>) |
purchaseTotals[currency] | String (3) | The currency code (ISO 4217) of the payment. Currency will remain as is initial setup (Please refer to Appendix A.1) |
purchaseTotals[grandTotalAmount] | Number (15,2) | Total amount of whole payment |
billTo[firstName] | String (50) | First name of billing contact |
billTo[lastName] | String (50) | Last name of billing contact |
billTo[email] | String (150) | Email of billing contact |
billTo[phoneNumber] | String (25) | Phone number of billing contact |
billTo[street1] | String (100) | Line 1 of billing address |
billTo[street2] | String (100) | Line 2 of billing address (Optional) |
billTo[city] | String (50) | City of billing address |
billTo[state] | String (50) | State of billing address (Required for transactions in the U.S. and Canada) (Please refer to Appendix A.3) |
billTo[country] | String (2) | Country of billing address in ISO 3166-1 alpha-2 code (Please refer to Appendix A.2) |
billTo[postalCode] | String (10) | Postal code of billing address |
shipTo[firstName] | String (50) | First name of shipping contact |
shipTo[lastName] | String (50) | Last name of shipping contact |
shipTo[email] | String (150) | Email of shipping contact |
shipTo[phoneNumber] | String (25) | Phone number of shipping contact |
shipTo[street1] | String (100) | Line 1 of shipping address |
shipTo[street2] | String (100) | Line 2 of shipping address (Optional) |
shipTo[city] | String (50) | City of shipping address |
shipTo[state] | String (50) | State of shipping address |
shipTo[country] | String (2) | Country of shipping address in ISO 3166-1 alpha-2 code (Please refer to Appendix A.2) |
shipTo[postalCode] | String (10) | Postal code of shipping address |
cardHolder[firstName] | String (50) | First name of card holder |
cardHolder[lastName] | String (50) | Last name of card holder |
cardHolder[email] | String (150) | Email of card holder |
cardHolder[phoneNumber] | String (25) | Phone number of card holder |
cardHolder[street1] | String (100) | Line 1 of card holder address |
cardHolder[street2] | String (100) | Line 2 of card holder address (Optional) |
cardHolder[city] | String (50) | City of card holder address |
cardHolder[state] | String (50) | State of card holder address |
cardHolder[country] | String (2) | Country of card holder address in ISO 3166-1 alpha-2 code (Please refer to Appendix A.2) |
cardHolder[postalCode] | String (10) | Postal code of card holder address |
item | Text | Item details including name, unitPrice, quantity JSON format string |
card[fullName] | String (50) | Credit card holder’s full name |
card[accountNumber] | String (12) | Credit card account number |
card[cvNumber] | String (3) | Card Verification Value of card |
card[cardType] | String (10) | Type of credit card Value: visa / mastercard |
card[expirationMonth] | Number (2) | Expiration month of card (MM) |
card[expirationYear] | Number (4) | Expiration year of card (YYYY) |
Example (JSON Format)
{
"item":[
{
"name":"Orange",
"quantity":"1",
"unitPrice":"1"
},
{
"name":"Apple",
"quantity":"2",
"unitPrice":"3"
}
],
"billTo":{
"firstName":"John",
"lastName":"Doe",
"email":"[email protected]",
"phoneNumber":"650-965-6000",
"street1":"1295 Charleston Rd.",
"street2":"",
"city":"Mountain View",
"state":"CA",
"country":"US",
"postalCode":"94043"
},
"shipTo":{
"firstName":"John",
"lastName":"Doe",
"email":"[email protected]",
"phoneNumber":"650-965-6000",
"street1":"1295 Charleston Rd.",
"street2":"",
"city":"Mountain View",
"state":"CA",
"country":"US",
"postalCode":""
},
"cardHolder":{
"firstName":"John",
"lastName":"Doe",
"email":"[email protected]",
"phoneNumber":"650-965-6000",
"street1":"1295 Charleston Rd.",
"street2":"",
"city":"Mountain View",
"state":"CA",
"country":"US",
"postalCode":"94043"
},
"card":{
"cardType":"visa",
"fullName":"John Doe",
"accountNumber":"4111111111111111",
"cvNumber":"413",
"expirationMonth":"06",
"expirationYear":"2016"
},
"deviceFingerprintID":"2_53e498ba21fdc_amp03rp64m3frajj7r23vrqjd1",
"merchantID":"2",
"merchantReferenceCode":"53e498ba21fdc",
"purchaseTotals":{
"grandTotalAmount":"7",
"currency":"HKD"
},
"merchantInvoiceID":"53e498ba21fdc"
}
Authorization Response
Definition of Response Parameters
Parameter |
Type |
Description |
status |
Number(1) |
The status of request result 0: Failure 1: Success |
message |
String (255) |
Short description of response |
data[transactionID] |
Number (20) |
Prizm Pay Transaction ID |
data[reasonCode] |
Number (3) |
Response reason code |
data[reasonMessage] |
String (100) |
Response reason message |
data[datafeed][client_id] |
Number (11) |
Merchant ID |
data[datafeed][client_ref] |
String (30) |
Merchant order reference |
data[datafeed][transaction_id] |
Number (20) |
Prizm Pay Transaction ID |
data[datafeed][action] |
String (30) |
Data feed action |
data[datafeed][details] |
Text |
Transaction details in JSON format |
Example
status:1,
message:"ACCEPT",
data:{
transactionID:"71",
resaonCode:100,
reasionMessage:"",
datafeed:{
client_id:1,
client_ref:"53e475c3eb0c8",
transaction_id:"70",
action:"UPDATE STATUS",
details:{
currency:USD,
amount:57.52,
status:1
}
}
}
Capturing an Authorization
When you are ready to fulfill a customer’s order and transfer funds from the customer’s bank to your bank, capture the authorization for that order.
Capture Request
Definition of Parameters
Parameters in HTTP Request Header
Parameter | Type | Description |
API_VERSION | Number (4) | API Version (Default is 100) |
API_MID | Number (11) | Prizm Pay Merchant ID |
API_TIME | Number (11) | Current Unix timestamp |
API_HASH | String (64) | Hash string using SHA-256 (Please refer to Secret Hash section) |
Parameters in POST
All parameters should be stored into a field named `data` in JSON format.
Parameter | Type | Description |
merchantID | Number (10) | Merchant‘s ID |
merchantReferenceCode | String (30) | Merchant‘s reference code, must be as same as authorized merchant’s reference code |
Example (JSON Format)
{
"merchantID":"2",
"merchantReferenceCode":"53e498ba21fdc"
}
Capture Response
Definition of Parameters
Parameter |
Type |
Description |
status |
Number(1) |
The status of request result 0: Failure 1: Success |
message |
String (255) |
Short description of response |
data[transactionID] |
Number (20) |
Prizm Pay Transaction ID |
data[reasonCode] |
Number (3) |
Response reason code |
data[reasonMessage] |
String (100) |
Response reason message |
Response Example
status:1,
message:"ACCEPT",
data:{
transactionID:"72",
resaonCode:100,
reasionMessage:""
}
Reversing an Authorization
The full authorization reversal service releases the hold that the authorization placed on the customer’s credit card funds. Use this service to reverse an unnecessary or undesired authorization. You can use full authorization reversal only for an authorization that has not been captured and settled.
Reverse Request
Definition of Parameters
Parameters in HTTP Request Header
Parameter |
Type |
Description |
API_VERSION |
Number (4) |
API Version (Default is 100) |
API_MID |
Number (11) |
Prizm Pay Merchant ID |
API_TIME |
Number (11) |
Current Unix timestamp |
API_HASH |
String (64) |
Hash string using SHA-256 (Please refer to Secret Hash section) |
Parameters in POST
All parameters should be stored into a field named `data` in JSON format.
Parameter |
Type |
Description |
merchantID |
Number (10) |
Merchant‘s ID |
merchantReferenceCode |
String (30) |
Merchant‘s reference code, must be as same as authorized merchant’s reference code |
Response Example
status:1,
message:"ACCEPT",
data:{
transactionID:"73",
resaonCode:100,
reasionMessage:""
}
Reverse Response
Definition of Parameters
Parameter |
Type |
Description |
status |
Number(1) |
The status of request result 0: Failure 1: Success |
message |
String (255) |
Short description of response |
data[transactionID] |
Number (20) |
Prizm Pay Transaction ID |
data[reasonCode] |
Number (3) |
Response reason code |
data[reasonMessage] |
String (100) |
Response reason message |
Response Example
status:1,
message:"ACCEPT",
data:{
transactionID:"73",
resaonCode:100,
reasionMessage:""
}
Performing a Sale
A sale is a bundled authorization and capture. You can use a sale instead of a separate authorization and capture if there is no delay between taking a customer’s order and shipping the goods. A sale is typically used for electronic goods and for services that you can turn on immediately.
To perform a sale, request the authorization and capture services at the same time. Include the request fields that are required for the authorization. No additional fields are required for the capture. If the authorization is successful, Prizm Pay processes the capture immediately and the reply message includes results for the authorization and for the capture. If the authorization is declined, Prizm Pay does not process the capture and the reply message includes results only for the authorization.
Sale Request
Definition of Parameters
Parameters in HTTP Request Header
Parameter | Type | Description |
API_VERSION | Number (4) | API Version (Default is 100) |
API_MID | Number (11) | Prizm Pay Merchant ID |
API_TIME | Number (11) | Current Unix timestamp |
API_HASH | String (64) | Hash string using SHA-256 (Please refer to Secret Hash section) |
Parameters in POST
All parameters should be stored into a field named `data` in JSON format.
Parameter | Type | Description |
merchantID | Number (10) | Merchant‘s ID |
merchantReferenceCode | String (30) | Merchant‘s order unique reference number |
merchantInvoiceID | String (25) | Merchant‘s order invoice number (Optional) |
deviceFingerprintID | String 128() | Device Fingerprint ID (Please refer to Device Fingerprint section, <DF_ID>) |
purchaseTotals[currency] | String (3) | The currency code (ISO 4217) of the payment. Currency will remain as is initial setup (Please refer to Appendix A.1) |
purchaseTotals[grandTotalAmount] | Number (15,2) | Total amount of whole payment |
billTo[firstName] | String (50) | First name of billing contact |
billTo[lastName] | String (50) | Last name of billing contact |
billTo[email] | String (150) | Email of billing contact |
billTo[phoneNumber] | String (25) | Phone number of billing contact |
billTo[street1] | String (100) | Line 1 of billing address |
billTo[street2] | String (100) | Line 2 of billing address (Optional) |
billTo[city] | String (50) | City of billing address |
billTo[state] | String (50) | State of billing address (Required for transactions in the U.S. and Canada) (Please refer to Appendix A.3) |
billTo[country] | String (2) | Country of billing address in ISO 3166-1 alpha-2 code (Please refer to Appendix A.2) |
billTo[postalCode] | String (10) | Postal code of billing address |
shipTo[firstName] | String (50) | First name of shipping contact |
shipTo[lastName] | String (50) | Last name of shipping contact |
shipTo[email] | String (150) | Email of shipping contact |
shipTo[phoneNumber] | String (25) | Phone number of shipping contact |
shipTo[street1] | String (100) | Line 1 of shipping address |
shipTo[street2] | String (100) | Line 2 of shipping address (Optional) |
shipTo[city] | String (50) | City of shipping address |
shipTo[state] | String (50) | State of shipping address |
shipTo[country] | String (2) | Country of shipping address in ISO 3166-1 alpha-2 code (Please refer to Appendix A.2) |
shipTo[postalCode] | String (10) | Postal code of shipping address |
cardHolder[firstName] | String (50) | First name of card holder |
cardHolder[lastName] | String (50) | Last name of card holder |
cardHolder[email] | String (150) | Email of card holder |
cardHolder[phoneNumber] | String (25) | Phone number of card holder |
cardHolder[street1] | String (100) | Line 1 of card holder address |
cardHolder[street2] | String (100) | Line 2 of card holder address (Optional) |
cardHolder[city] | String (50) | City of card holder address |
cardHolder[state] | String (50) | State of card holder address |
cardHolder[country] | String (2) | Country of card holder address in ISO 3166-1 alpha-2 code (Please refer to Appendix A.2) |
cardHolder[postalCode] | String (10) | Postal code of card holder address |
item | Text | Item details including name, unitPrice, quantity JSON format string |
card[fullName] | String (50) | Credit card holder’s full name |
card[accountNumber] | String (12) | Credit card account number |
card[cvNumber] | String (3) | Card Verification Value of card |
card[cardType] | String (10) | Type of credit card Value: visa / mastercard |
card[expirationMonth] | Number (2) | Expiration month of card (MM) |
card[expirationYear] | Number (4) | Expiration year of card (YYYY) |
Example (JSON Format)
{
"item":[
{
"name":"Orange",
"quantity":"1",
"unitPrice":"1"
},
{
"name":"Apple",
"quantity":"2",
"unitPrice":"3"
}
],
"billTo":{
"firstName":"John",
"lastName":"Doe",
"email":"[email protected]",
"phoneNumber":"650-965-6000",
"street1":"1295 Charleston Rd.",
"street2":"",
"city":"Mountain View",
"state":"CA",
"country":"US",
"postalCode":"94043"
},
"shipTo":{
"firstName":"John",
"lastName":"Doe",
"email":"[email protected]",
"phoneNumber":"650-965-6000",
"street1":"1295 Charleston Rd.",
"street2":"",
"city":"Mountain View",
"state":"CA",
"country":"US",
"postalCode":""
},
"cardHolder":{
"firstName":"John",
"lastName":"Doe",
"email":"[email protected]",
"phoneNumber":"650-965-6000",
"street1":"1295 Charleston Rd.",
"street2":"",
"city":"Mountain View",
"state":"CA",
"country":"US",
"postalCode":"94043"
},
"card":{
"cardType":"visa",
"fullName":"John Doe",
"accountNumber":"4111111111111111",
"cvNumber":"413",
"expirationMonth":"06",
"expirationYear":"2016"
},
"deviceFingerprintID":"2_53e498ba21fdc_amp03rp64m3frajj7r23vrqjd1",
"merchantID":"2",
"merchantReferenceCode":"53e498ba21fdc",
"purchaseTotals":{
"grandTotalAmount":"7",
"currency":"HKD"
},
"merchantInvoiceID":"53e498ba21fdc"
}
Sale Response
Definition of Parameters
Parameter |
Type |
Description |
status |
Number(1) |
The status of request result 0: Failure 1: Success |
message |
String (255) |
Short description of response |
data[transactionID] |
Number (20) |
Prizm Pay Transaction ID |
data[reasonCode] |
Number (3) |
Response reason code |
data[reasonMessage] |
String (100) |
Response reason message |
data[datafeed][client_id] |
Number (11) |
Merchant ID |
data[datafeed][client_ref] |
String (30) |
Merchant order reference |
data[datafeed][transaction_id] |
Number (20) |
Prizm Pay Transaction ID |
data[datafeed][action] |
String (30) |
Data feed action |
data[datafeed][details] |
Text |
Transaction details in JSON format |
Example
status:1,
message:"ACCEPT",
data:{
transactionID:"70",
resaonCode:100,
reasionMessage:"",
datafeed:{
client_id:1,
client_ref:"53e475c3eb0c8",
transaction_id:"70",
action:"UPDATE STATUS",
details:{
currency:USD,
amount:57.52,
status:1
}
}
}
Recurring Payments via Credit Card Vault
For the recurring payment, you may need setup Credit Card Vault and store all required informations (e.g. billing address, shipping address ...) on first payment request.
The steps as below:
- Include the field named `cardVault_setup` with value `1` and `cardVault_secretKey` in first Sale/Auth API request.
- When this payment success, additional parameters named `cardVault_token` in the response.
- Include `cardVault_token` and `cardVault_secretKey` in your follow-on Sale/Auth API requests.
Refund or Credit
Refund Request
Definition of Parameters
Parameters in HTTP Request Header
Parameter |
Type |
Description |
API_VERSION |
Number (4) |
API Version (Default is 100) |
API_MID |
Number (11) |
Prizm Pay Merchant ID |
API_TIME |
Number (11) |
Current Unix timestamp |
API_HASH |
String (64) |
Hash string using SHA-256 (Please refer to Secret Hash section) |
Parameters in POST
All parameters should be stored into a field named `data` in JSON format.
Parameter |
Type |
Description |
merchantID |
Number (10) |
Merchant‘s ID |
merchantReferenceCode |
String (30) |
Merchant‘s reference code, must be as same as authorized merchant’s reference code |
refundAmount |
Number (15,2) |
The refund amount, must be equal or less than the SALE amount |
Example (JSON Format)
{
"merchantID":"2",
"merchantReferenceCode":"53e498ba21fdc",
"refundAmount":"9.99"
}
Refund Response
Definition of Parameters
Parameter |
Type |
Description |
status |
Number(1) |
The status of request result 0: Failure 1: Success |
message |
String (255) |
Short description of response |
data[transactionID] |
Number (20) |
Prizm Pay Transaction ID |
data[reasonCode] |
Number (3) |
Response reason code |
data[reasonMessage] |
String (100) |
Response reason message |
Response Example
status:1,
message:"ACCEPT",
data:{
transactionID:"72",
resaonCode:100,
reasionMessage:""
}
Payment Apps
We have different payment methods can be used instantly without integration.
Payment Link
Payment Link can help you to process ad-hoc payment, like order deposit, additional charge etc ...
You just need modify some parameters in the link, and request your client open and fill-in the payment form. You can send the link to your customers via email, Skype, WhatsApp, SMS, etc ...
The format of Payment Link:
https://pp.prizmmpay.com/link?mid=[YOUR_MERCHANT_ID]¤cy=[CURRENCY_CODE]&amount=[AMOUNT]
The format of Payment Link for testing:
https://pp-test.prizmmpay.com/link?mid=[YOUR_MERCHANT_ID]¤cy=[CURRENCY_CODE]&amount=[AMOUNT]
Definition of Parameters
Parameter |
Type |
Description |
[YOUR_MERCHANT_ID] |
Number (11) |
Prizm Pay Merchant ID |
[CURRENCY_CODE] |
String |
The currency code (ISO 4217) of the payment. (Please refer to Appendix A.1) |
[AMOUNT] |
Number (15,2) |
Total amount of whole payment Format: 12345.67 CANNOT equal and less than 0 CONNOT contain comma(,) |
Examples:
Merchant: 88888, Currency: HKD, Amount: 799.99
https://pp-test.prizmmpay.com/link?mid=88888¤cy=HKD&amount=799.99
Merchant: 88889, Currency: USD, Amount: 799.99
https://pp-test.prizmmpay.com/link?mid=88889¤cy=USD&amount=799.99
Merchant: 88890, Currency: AUD, Amount: 19.99
https://pp-test.prizmmpay.com/link?mid=88890¤cy=AUD&amount=19.99
Merchant: 88891, Currency: CAD, Amount: 1819.99
https://pp-test.prizmmpay.com/link?mid=88891¤cy=CAD&amount=1819.99
Merchant: 88892, Currency: AED, Amount: 1549.09
https://pp-test.prizmmpay.com/link?mid=88892¤cy=AED&amount=1549.09
Data Feed
Merchant is required to setup Datafeed URL at the Merchant Panel. In order to ensure merchant can receive the payment result notification, payment result will be sent via http POST from payment server directly to merchant’s Datafeed URL.
This is independent with the action of redirect shoppers to Success URL after payment is done. In case shoppers cannot be redirected successfully to your Success URL, you can still receive payment result at your Datafeed URL.
Print out 'PRIZMPAY' (without any spacing) in your Data Feed Page to notify us you have received the payment result.
Setup Datafeed URL
- Login Merchant Panel
- Open `Merchant`
- Open `Payment Page`
- Enter your `Datafeed URL`
- Click `Submit` button
Datafeed Format
Definition of Parameters
Parameters in POST
Parameter |
Type |
Description |
data[client_id] |
Number (11) |
Prizm Pay Merchant ID |
data[client_ref] |
String (50) |
Merchant‘s Order Reference Number |
data[transaction_id] |
String (50) |
Prizm Pay Transaction ID |
data[action] |
String (50) |
Current action of each Datafeed |
data[details][currency] |
String (3) |
The currency code (ISO 4217) of the payment. Currency will remain as is initial setup (Please refer to Appendix A.1) |
data[details][amount] |
Number (15,2) |
The effective amount of each Datafeed |
data[details][status] |
String (50) |
Status of each Datafeed 1 = Success |
mid |
Number (11) |
Prizm Pay Merchant ID |
time |
Number (11) |
Current Unix timestamp |
hash |
String (64) |
Hash string using SHA-256 Message should contain feedback in JSON formation, encrypted by merchant key. |
Datafeed Example
data:{
"client_id":"1102",
"client_ref":"53db16ba6ae111406867130",
"transaction_id":"218",
"action":"UPDATE STATUS",
"details":{
"currency":"USD",
"amount":"0.10",
"status":1
}
},
mid: 1102,
time: 1406867125,
hash:"eadb0a2bcc77db51c954c882e8b9f8f03fa60dd261cdbd9032ebe52aeab80daa"
Handling Program
PHP Example
<?php
define('MERCHANT_ID', 'YOUR_MERCHANT_ID');
define('MERCHANT_SECRET_KEY', 'YOUR_SECRET_KEY');
function datafeed($merchantID, $secretKey, $expiry = 900) {
$time = filter_input(INPUT_POST, 'time');
// check timeout
if ($time && (abs($time - time()) > $expiry)) {
return FALSE;
}
$data = filter_input(INPUT_POST, 'data');
$hash = filter_input(INPUT_POST, 'hash');
// check secret hash
$localHash = secretHash($merchantID, $secretKey, $data, $time);
if ($localHash != $hash) {
return FALSE;
}
// return decoded datafeed
return json_decode($data, TRUE);
}
function secretHash($merchantID, $secretKey, $data, $timestamp) {
return hash('sha256', $secretKey . $timestamp . $merchantID . $data);
}
if (datafeed(MERCHANT_ID, MERCHANT_SECRET_KEY)) {
exit('PRIZMPAY'); // echo success code
} else {
exit('ERROR'); // echo failure code
}
Testing
To ensure that your requests are processed correctly, you need to test the basic success and error conditions for each service you plan to use.
Requirements
- Unless otherwise specified, use test credit card numbers, not real ones.
- Use a real combination for the city, state, and postal code.
- Use a real combination for the area code and telephone number.
- Use a nonexistent account and domain name for the customer’s email address.
- When testing, use the test URL.
Credit Card Services
Use the credit card numbers in the following table to test the services. Do not use real credit card numbers. To test card types not listed in the table, use an account number that is within the card’s bin range. For best results, try each test with a different service request and with different test credit card numbers.
Test Credit Card Numbers
Credit Card Type |
Test Account Number |
Visa |
4111 1111 1111 1111 |
MasterCard |
5555 5555 5555 4444 |
APPENDIX A
1. Currency Code
Currency Code |
Currency Name |
AED |
United Arab Emirates Dirham |
AFN |
Afghanistan Afghani |
ALL |
Albania Lek |
AMD |
Armenia Dram |
ANG |
Netherlands Antilles Guilder |
AOA |
Angola Kwanza |
ARS |
Argentina Peso |
AUD |
Australia Dollar |
AWG |
Aruba Guilder |
AZN |
Azerbaijan New Manat |
BAM |
Bosnia and Herzegovina Convertible Marka |
BBD |
Barbados Dollar |
BDT |
Bangladesh Taka |
BGN |
Bulgaria Lev |
BHD |
Bahrain Dinar |
BIF |
Burundi Franc |
BMD |
Bermuda Dollar |
BND |
Brunei Darussalam Dollar |
BOB |
Bolivia Boliviano |
BRL |
Brazil Real |
BSD |
Bahamas Dollar |
BTN |
Bhutan Ngultrum |
BWP |
Botswana Pula |
BYR |
Belarus Ruble |
BZD |
Belize Dollar |
CAD |
Canada Dollar |
CDF |
Congo/Kinshasa Franc |
CHF |
Switzerland Franc |
CLP |
Chile Peso |
CNY |
China Yuan Renminbi |
COP |
Colombia Peso |
CRC |
Costa Rica Colon |
CUC |
Cuba Convertible Peso |
CUP |
Cuba Peso |
CVE |
Cape Verde Escudo |
CZK |
Czech Republic Koruna |
DJF |
Djibouti Franc |
DKK |
Denmark Krone |
DOP |
Dominican Republic Peso |
DZD |
Algeria Dinar |
EGP |
Egypt Pound |
ERN |
Eritrea Nakfa |
ETB |
Ethiopia Birr |
EUR |
Euro Member Countries |
FJD |
Fiji Dollar |
FKP |
Falkland Islands (Malvinas) Pound |
GBP |
United Kingdom Pound |
GEL |
Georgia Lari |
GGP |
Guernsey Pound |
GHS |
Ghana Cedi |
GIP |
Gibraltar Pound |
GMD |
Gambia Dalasi |
GNF |
Guinea Franc |
GTQ |
Guatemala Quetzal |
GYD |
Guyana Dollar |
HKD |
Hong Kong Dollar |
HNL |
Honduras Lempira |
HRK |
Croatia Kuna |
HTG |
Haiti Gourde |
HUF |
Hungary Forint |
IDR |
Indonesia Rupiah |
ILS |
Israel Shekel |
IMP |
Isle of Man Pound |
INR |
India Rupee |
IQD |
Iraq Dinar |
IRR |
Iran Rial |
ISK |
Iceland Krona |
JEP |
Jersey Pound |
JMD |
Jamaica Dollar |
JOD |
Jordan Dinar |
JPY |
Japan Yen |
KES |
Kenya Shilling |
KGS |
Kyrgyzstan Som |
KHR |
Cambodia Riel |
KMF |
Comoros Franc |
KPW |
Korea (North) Won |
KRW |
Korea (South) Won |
KWD |
Kuwait Dinar |
KYD |
Cayman Islands Dollar |
KZT |
Kazakhstan Tenge |
LAK |
Laos Kip |
LBP |
Lebanon Pound |
LKR |
Sri Lanka Rupee |
LRD |
Liberia Dollar |
LSL |
Lesotho Loti |
LTL |
Lithuania Litas |
LYD |
Libya Dinar |
MAD |
Morocco Dirham |
MDL |
Moldova Leu |
MGA |
Madagascar Ariary |
MKD |
Macedonia Denar |
MMK |
Myanmar (Burma) Kyat |
MNT |
Mongolia Tughrik |
MOP |
Macau Pataca |
MRO |
Mauritania Ouguiya |
MUR |
Mauritius Rupee |
MVR |
Maldives (Maldive Islands) Rufiyaa |
MWK |
Malawi Kwacha |
MXN |
Mexico Peso |
MYR |
Malaysia Ringgit |
MZN |
Mozambique Metical |
NAD |
Namibia Dollar |
NGN |
Nigeria Naira |
NIO |
Nicaragua Cordoba |
NOK |
Norway Krone |
NPR |
Nepal Rupee |
NZD |
New Zealand Dollar |
OMR |
Oman Rial |
PAB |
Panama Balboa |
PEN |
Peru Nuevo Sol |
PGK |
Papua New Guinea Kina |
PHP |
Philippines Peso |
PKR |
Pakistan Rupee |
PLN |
Poland Zloty |
PYG |
Paraguay Guarani |
QAR |
Qatar Riyal |
RON |
Romania New Leu |
RSD |
Serbia Dinar |
RUB |
Russia Ruble |
RWF |
Rwanda Franc |
SAR |
Saudi Arabia Riyal |
SBD |
Solomon Islands Dollar |
SCR |
Seychelles Rupee |
SDG |
Sudan Pound |
SEK |
Sweden Krona |
SGD |
Singapore Dollar |
SHP |
Saint Helena Pound |
SLL |
Sierra Leone Leone |
SOS |
Somalia Shilling |
SPL* |
Seborga Luigino |
SRD |
Suriname Dollar |
STD |
São Tomé and Príncipe Dobra |
SVC |
El Salvador Colon |
SYP |
Syria Pound |
SZL |
Swaziland Lilangeni |
THB |
Thailand Baht |
TJS |
Tajikistan Somoni |
TMT |
Turkmenistan Manat |
TND |
Tunisia Dinar |
TOP |
Tonga Pa'anga |
TRY |
Turkey Lira |
TTD |
Trinidad and Tobago Dollar |
TVD |
Tuvalu Dollar |
TWD |
Taiwan New Dollar |
TZS |
Tanzania Shilling |
UAH |
Ukraine Hryvnia |
UGX |
Uganda Shilling |
USD |
United States Dollar |
UYU |
Uruguay Peso |
UZS |
Uzbekistan Som |
VEF |
Venezuela Bolivar |
VND |
Viet Nam Dong |
VUV |
Vanuatu Vatu |
WST |
Samoa Tala |
XAF |
Communauté Financière Africaine (BEAC) CFA Franc BEAC |
XCD |
East Caribbean Dollar |
XDR |
International Monetary Fund (IMF) Special Drawing Rights |
XOF |
Communauté Financière Africaine (BCEAO) Franc |
XPF |
Comptoirs Français du Pacifique (CFP) Franc |
YER |
Yemen Rial |
ZAR |
South Africa Rand |
ZMW |
Zambia Kwacha |
ZWD |
Zimbabwe Dollar |
2. Country Code
Country Code |
Country Name |
High Risk |
AD |
Andorra |
|
AE |
United Arab Emirates |
|
AF |
Afghanistan |
|
AG |
Antigua and Barbuda |
|
AI |
Anguilla |
|
AL |
Albania |
|
AM |
Armenia |
|
AO |
Angola |
|
AQ |
Antarctica |
|
AR |
Argentina |
|
AS |
American Samoa |
|
AT |
Austria |
|
AU |
Australia |
|
AW |
Aruba |
|
AX |
Åland Islands |
|
AZ |
Azerbaijan |
|
BA |
Bosnia and Herzegovina |
|
BB |
Barbados |
|
BD |
Bangladesh |
|
BE |
Belgium |
|
BF |
Burkina Faso |
|
BG |
Bulgaria |
*** |
BH |
Bahrain |
|
BI |
Burundi |
|
BJ |
Benin |
|
BM |
Bermuda |
|
BN |
Brunei Darussalam |
|
BO |
Bolivia, Plurinational State of |
|
BQ |
Bonaire, Sint Eustatius and Saba |
|
BR |
Brazil |
|
BS |
Bahamas |
|
BT |
Bhutan |
|
BV |
Bouvet Island |
|
BW |
Botswana |
|
BY |
Belarus |
|
BZ |
Belize |
|
CA |
Canada |
|
CC |
Cocos (Keeling) Islands |
|
CD |
Congo, the Democratic Republic of the |
|
CF |
Central African Republic |
|
CG |
Congo |
|
CH |
Switzerland |
|
CI |
Côte d'Ivoire |
|
CK |
Cook Islands |
|
CL |
Chile |
|
CM |
Cameroon |
*** |
CN |
China |
|
CO |
Colombia |
|
CR |
Costa Rica |
|
CU |
Cuba |
|
CV |
Cabo Verde |
|
CW |
Curaçao |
|
CX |
Christmas Island |
|
CY |
Cyprus |
|
CZ |
Czech Republic |
|
DE |
Germany |
|
DJ |
Djibouti |
|
DK |
Denmark |
|
DM |
Dominica |
|
DO |
Dominican Republic |
|
DZ |
Algeria |
|
EC |
Ecuador |
|
EE |
Estonia |
|
EG |
Egypt |
*** |
EH |
Western Sahara |
|
ER |
Eritrea |
|
ES |
Spain |
|
ET |
Ethiopia |
|
FI |
Finland |
|
FJ |
Fiji |
|
FK |
Falkland Islands (Malvinas) |
|
FM |
Micronesia, Federated States of |
|
FO |
Faroe Islands |
|
FR |
France |
|
GA |
Gabon |
|
GB |
United Kingdom |
|
GD |
Grenada |
|
GE |
Georgia |
|
GF |
French Guiana |
|
GG |
Guernsey |
|
GH |
Ghana |
*** |
GI |
Gibraltar |
|
GL |
Greenland |
|
GM |
Gambia |
*** |
GN |
Guinea |
|
GP |
Guadeloupe |
|
GQ |
Equatorial Guinea |
|
GR |
Greece |
|
GS |
South Georgia and the South Sandwich Islands |
|
GT |
Guatemala |
|
GU |
Guam |
|
GW |
Guinea-Bissau |
|
GY |
Guyana |
|
HK |
Hong Kong |
|
HM |
Heard Island and McDonald Islands |
|
HN |
Honduras |
|
HR |
Croatia |
|
HT |
Haiti |
|
HU |
Hungary |
|
ID |
Indonesia |
*** |
IE |
Ireland |
|
IL |
Israel |
*** |
IM |
Isle of Man |
|
IN |
India |
|
IO |
British Indian Ocean Territory |
|
IQ |
Iraq |
|
IR |
Iran, Islamic Republic of |
*** |
IS |
Iceland |
|
IT |
Italy |
|
JE |
Jersey |
|
JM |
Jamaica |
|
JO |
Jordan |
|
JP |
Japan |
|
KE |
Kenya |
|
KG |
Kyrgyzstan |
|
KH |
Cambodia |
|
KI |
Kiribati |
|
KM |
Comoros |
|
KN |
Saint Kitts and Nevis |
|
KP |
Korea, Democratic People's Republic of |
|
KR |
Korea, Republic of |
|
KW |
Kuwait |
|
KY |
Cayman Islands |
|
KZ |
Kazakhstan |
|
LA |
Lao People's Democratic Republic |
|
LB |
Lebanon |
|
LC |
Saint Lucia |
|
LI |
Liechtenstein |
|
LK |
Sri Lanka |
|
LR |
Liberia |
|
LS |
Lesotho |
|
LT |
Lithuania |
*** |
LU |
Luxembourg |
|
LV |
Latvia |
|
LY |
Libya |
|
MA |
Morocco |
*** |
MC |
Monaco |
|
MD |
Moldova, Republic of |
|
ME |
Montenegro |
|
MF |
Saint Martin (French part) |
|
MG |
Madagascar |
|
MH |
Marshall Islands |
|
MK |
Macedonia, the former Yugoslav Republic of |
|
ML |
Mali |
|
MM |
Myanmar |
|
MN |
Mongolia |
|
MO |
Macao |
|
MP |
Northern Mariana Islands |
|
MQ |
Martinique |
|
MR |
Mauritania |
|
MS |
Montserrat |
|
MT |
Malta |
|
MU |
Mauritius |
|
MV |
Maldives |
|
MW |
Malawi |
|
MX |
Mexico |
|
MY |
Malaysia |
*** |
MZ |
Mozambique |
|
NA |
Namibia |
|
NC |
New Caledonia |
|
NE |
Niger |
|
NF |
Norfolk Island |
|
NG |
Nigeria |
*** |
NI |
Nicaragua |
|
NL |
Netherlands |
|
NO |
Norway |
|
NP |
Nepal |
|
NR |
Nauru |
|
NU |
Niue |
|
NZ |
New Zealand |
|
OM |
Oman |
|
PA |
Panama |
|
PE |
Peru |
|
PF |
French Polynesia |
|
PG |
Papua New Guinea |
|
PH |
Philippines |
|
PK |
Pakistan |
*** |
PL |
Poland |
|
PM |
Saint Pierre and Miquelon |
|
PN |
Pitcairn |
|
PR |
Puerto Rico |
|
PS |
Palestine, State of |
|
PT |
Portugal |
|
PW |
Palau |
|
PY |
Paraguay |
|
QA |
Qatar |
|
RE |
Réunion |
|
RO |
Romania |
*** |
RS |
Serbia |
|
RU |
Russian Federation |
*** |
RW |
Rwanda |
|
SA |
Saudi Arabia |
|
SB |
Solomon Islands |
|
SC |
Seychelles |
|
SD |
Sudan |
|
SE |
Sweden |
|
SG |
Singapore |
|
SH |
Saint Helena, Ascension and Tristan da Cunha |
|
SI |
Slovenia |
|
SJ |
Svalbard and Jan Mayen |
|
SK |
Slovakia |
|
SL |
Sierra Leone |
|
SM |
San Marino |
|
SN |
Senegal |
|
SO |
Somalia |
|
SR |
Suriname |
|
SS |
South Sudan |
|
ST |
Sao Tome and Principe |
|
SV |
El Salvador |
|
SX |
Sint Maarten (Dutch part) |
|
SY |
Syrian Arab Republic |
|
SZ |
Swaziland |
|
TC |
Turks and Caicos Islands |
|
TD |
Chad |
|
TF |
French Southern Territories |
|
TG |
Togo |
|
TH |
Thailand |
|
TJ |
Tajikistan |
|
TK |
Tokelau |
|
TL |
Timor-Leste |
|
TM |
Turkmenistan |
|
TN |
Tunisia |
|
TO |
Tonga |
|
TR |
Turkey |
*** |
TT |
Trinidad and Tobago |
|
TV |
Tuvalu |
|
TW |
Taiwan, Province of China |
|
TZ |
Tanzania, United Republic of |
|
UA |
Ukraine |
*** |
UG |
Uganda |
|
UM |
United States Minor Outlying Islands |
|
US |
United States |
|
UY |
Uruguay |
|
UZ |
Uzbekistan |
|
VA |
Holy See (Vatican City State) |
|
VC |
Saint Vincent and the Grenadines |
|
VE |
Venezuela, Bolivarian Republic of |
|
VG |
Virgin Islands, British |
|
VI |
Virgin Islands, U.S. |
|
VN |
Viet Nam |
*** |
VU |
Vanuatu |
|
WF |
Wallis and Futuna |
|
WS |
Samoa |
|
YE |
Yemen |
|
YT |
Mayotte |
|
YU |
Yugoslavia |
*** |
ZA |
South Africa |
|
ZM |
Zambia |
|
ZW |
Zimbabwe |
|
3. State / Province / Territory
The following tables provide the two-character state, province, and territory codes for the United States and Canada.
I. United States Postal Service (USPS) Abbreviations
For a complete list of United States Postal Service abbreviations, see https://www.usps.com/ship/official-abbreviations.htm
State |
Code |
Alabama |
AL |
Alaska |
AK |
American Samoa |
AS |
Arizona |
AZ |
Arkansas |
AR |
Armed Forces Africa |
AE |
Armed Forces Americas |
AA |
Armed Forces Canada |
AE |
Armed Forces Europe |
AE |
Armed Forces Middle East |
AE |
Armed Forces Pacific |
AP |
California |
CA |
Colorado |
CO |
Connecticut |
CT |
Delaware |
DE |
District of Columbia |
DC |
Florida |
FL |
Georgia |
GA |
Guam |
GU |
Hawaii |
HI |
Idaho |
ID |
Illinois |
IL |
Indiana |
IN |
Iowa |
IA |
Kansas |
KS |
Kentucky |
KY |
Louisiana |
LA |
Maine |
ME |
Marshall Islands |
MH |
Maryland |
MD |
Massachusetts |
MA |
Michigan |
MI |
Micronesia |
FM |
Minnesota |
MN |
Minor Outlying Islands |
UM |
Mississippi |
MS |
Missouri |
MO |
Montana |
MT |
Nebraska |
NE |
Nevada |
NV |
New Hampshire |
NH |
New Jersey |
NJ |
New Mexico |
NM |
New York |
NY |
North Carolina |
NC |
North Dakota |
ND |
Northern Mariana Islands |
MP |
Ohio |
OH |
Oklahoma |
OK |
Oregon |
OR |
Palau |
PW |
Pennsylvania |
PA |
Puerto Rico |
PR |
Rhode Island |
RI |
South Carolina |
SC |
South Dakota |
SD |
Tennessee |
TN |
Texas |
TX |
Utah |
UT |
Vermont |
VT |
Virginia |
VA |
Virgin Islands |
VI |
Washington |
WA |
West Virginia |
WV |
Wisconsin |
WI |
Wyoming |
WY |
II. Canadian Provinces and Territories
For more information about Canadian addresses, see the Canada Post Canada Postal Guide and Reference Tools at http://www.canadapost.ca/tools/pg/manual/PGaddress-e.asp
Province or Territory |
Abbreviation |
Alberta |
AB |
British Columbia |
BC |
Manitoba |
MB |
New Brunswick |
NB |
Newfoundland and Labrador |
NL |
Northwest Territories |
NT |
Nova Scotia |
NS |
Nunavut |
NU |
Ontario |
ON |
Prince Edward Island |
PE |
Québec |
QC |
Saskatchewan |
SK |
Yukon |
YT |
APPENDIX R
The resources could be help for integration
Demo Projects
PHP
Requirements:
- PHP version >= 5.1.2
- cURL support
For Payment Page
For Payment API
For Apple Pay
Payment Modules
Prizm Pay payment module enables merchant integrate with Prizm Pay payment page from the open source shopping cart.