Payment Gateway HTTP and XML API Developers Documentation. HTTP/XML API 1.2.0 Last Modified: 28 September 2015



Similar documents
Credomatic Integration Resources. Browser Redirect API Documentation June 2007

Process Transaction API

Merchant One Payment Systems Integration Resources. Direct Post API Documentation June 2007

Swedbank Payment Portal Implementation Overview

A: This will depend on a number of factors. Things to consider and discuss with a member of our ANZ Merchant Services team are:

PROCESS TRANSACTION API

Network Merchants Inc (NMI) Integration Resources. Direct Post API Documentation April 2010

Netswipe Processing Implementation

Gateway Direct Post API

MasterCard In tern et Gateway Service (MIGS)

EMS E-COMMERCE GATEWAY API TECHNICAL INSTALLATION MANUAL FEBRUARY 2016

Three Step Redirect API V2.0 Patent Pending

GSPAY Merchant Manual

ipay Checkout API (IPC API)

Programming for the Netregistry E-commerce Gateway

ANZ egate Virtual Payment Client

PAY BUTTON USER GUIDE PAY BUTTON USER GUIDE. Version: 1.2

Recurring Credit Card Billing

Elavon Payment Gateway- 3D Secure

COMMERCIAL-IN-CONFIDENCE

First Data Global Gateway Integration Guide Connect 2.0

First Data Global Gateway Connect User Manual. Version 1.3

iyzico one-off payment and installment easy payment integration

Java SFA merchant integration guide

How To Integrate Your Website Into The First Data Internet Payment Gateway (Emea) With A Credit Card And A Creditcard (First Data) (Emma) (Firstdata) (Uk) (European) (For A Credit Union

ipayment Gateway API (IPG API)

AliPay International Services

AliPay International Services

Three Step Redirect API

MiGS Virtual Payment Client Integration Guide. July 2011 Software version: MR 27

Direct Post. Integration Guide

DIRECT INTEGRATION GUIDE DIRECT INTEGRATION GUIDE. Version: 9.16

Volume PLANETAUTHORIZE PAYMENT GATEWAY. vtiger CRM Payment Module. User Guide

mpos Solution A: Visa, MasterCard and JCB are supported. Both Debit & Credit Cards which is supported by any of this Card Type can be accepted.

Implementation guide Web Services V4. Version 1.4b

GoCoin: Merchant integration guide

Unified Payment Platform Payment Pos Server Fraud Detection Server Reconciliation Server Autobill Server e-point Server Mobile Payment Server

Payvision Payment Processor. Technical Integration

MyGate Response Codes. Version 2.1

Hosted Credit Card Forms Implementation Guide

INTRODUCTION MERCHANT INTEGRATION. Ha noi, 10/7/2012

eway AU Hosted Payment Page

Merchant e-solutions Payment Gateway FX Processing. Merchant e-solutions October 2008 Version 1.3

Durango Merchant Services Customer Vault API

Server Protocol and Integration Guideline (Protocol v3.00) Published Date 27/08/2013

SENTRY Payment Gateway

e Merchant Plug-in (MPI) Integration & User Guide

Installation and Integration Manual TRANZILA Secure 5

GENERAL ADMINISTRATION - SHOPPING CART

MIGS Payment Client Installation Guide. EGate User Manual

Pensio Payment Gateway Merchant API Integration Guide

MONETA.Assistant API Reference

INTEGRATION PROCEDURES AND SPECIFICATIONS

Transaction Details Guide

Realex Payments. Magento Community / Enterprise Plugin. Configuration Guide. Version: 1.1

Merchant Web Services API

1. Introduction to CardPay

CPAY MERCHANT INTEGRATION SPECIFICATION

Your guide to epdq moto

Web Services Credit Card Errors A Troubleshooter

Visa Checkout September 2015

Rapid 3.0 Transparent Redirect API. Official eway Documentation. Version 0.82

PaperCut Payment Gateway Module CyberSource Quick Start Guide

MasterCard In tern et Gatew ay Service (MIGS)

Merchant Console User Guide. November 2013 CRXE-MCNT-MCON-UG07

Sage Pay Fraud Prevention Guide

Elavon Payment Gateway- Reporting User Guide

Payment Processor Errors A Troubleshooter

GTPayment Merchant Integration Manual

Realex Payments Integration Guide - Ecommerce Remote Integration. Version: v1.1

DalPay Internet Billing. Checkout Integration Guide Recurring Billing

Connect Getting Started Guide. Connect Getting Started Guide

Web Services Credit Card Errors A Troubleshooter

Gateway Control Panel Quick Start Instructions

TED 5000 Third Party Posting API

Title Page. Hosted Payment Page Guide ACI Commerce Gateway

User s Guide Simple Order API Version 1.14 May 2005

The University of Georgia Credit/Debit Card Processing Procedures

Requirements Collax Security Gateway Collax Business Server or Collax Platform Server including Collax SSL VPN module

A BETTER WAY TO PAY Unified Merchants API (UMAPI).Net Integration Manual

GUIDE TO WEBSITES AND E-COMMERCE

Web Services Credit Card Errors A Troubleshooter

DeltaPAY v2 Merchant Integration Specifications (HTML - v1.9)

Fortigate SSL VPN 4 With PINsafe Installation Notes

Implementation guide - Interface with the payment gateway PayZen 2.5

Magensa Services. Administrative Account Services API Documentation for Informational Purposes Only. September Manual Part Number:

Elavon Payment Gateway Integration Guide- Remote

Payflow Link User s Guide

itransact Gateway Fast Start Guide

Alpha e-pay v2 Merchant User Manual (v1.9)

Server-to-Server Credit Card Implementation Guide

An access number, dialed by a modem, that lets a computer communicate with an Internet Service Provider (ISP) or some other service provider.

Merchant Application Form

Secure Payment Form User s Guide

How to complete the Secure Internet Site Declaration (SISD) form

Cardsave Payment Gateway

Payment solutions for online commerce. Web Hosted Integration Guide. (Gateway Hosted)

Transcription:

Payment Gateway HTTP and XML API Developers Documentation HTTP/XML API 1.2.0 Last Modified: 28 September 2015

Preface This document supersedes any previous documentation on the GSPAY Payment Gateway XML APIs. Please send any comments and questions to info@gspay.com Chapter 1. Introduction The purpose of this document is to integrate the processing of real time credit and debit card transactions for developers into their e-commerce systems using the GSPAY Payment Gateway HTTP API protocol. The Payment Gateway API allows remote applications to pass payment requests to the payment servers and subsequently to the acquiring bank. The Gateway performs validation, security checking and transaction logging. Payment requests are performed by conducting a transaction request containing payment details using SSL encryption (HTTPS) to the Payment Gateway. When the transaction has completed, the Gateway will return an XML document which can then be parsed for data collection on the Merchant's side. Chapter 2. Transaction Processing A transaction starts when a cardholder keys in the data required into the Merchant's site. On receipt of the transaction the GSPAY API will check for the following: The Card details are valid The Merchant is valid The transaction amount is a valid amount Fraud Check is performed Validation Transaction/Validation Declined Transaction Approved Constructing a request The GSPAY payment gateway accepts requests in the format of a HTTP request post. Use this URL to post your payment requests https://secure.gspay.com/payment/api.php The API interface accepts the parameters illustrated in the following table.

Chapter 2.1 HTTP Request Parameters Parameter name Description merchantid merchantpassword merchantsiteid transactiontype merchantamount transactionorderid transactionaffiliateid transactiondescription customercardnumber customercardtype The Merchant ID issued by GSPAY The Merchant password assigned by merchant The Site ID in control panel Transaction type may be sale for sale transaction and refund for refund transaction The payment amount must be provided with decimal point. For example with USD $9.95 insert amount=9.95 Transaction Order ID set by a Merchant. This can be used to lookup the transaction in the Merchant Panel if it is unique. A returned transaction number will uniquely identify a transaction to a Merchant. If you have affiliate partners in GSPAY system, insert here its id. Order description. Example: Viagra Generic 200mg The credit/debit card number with a variable length to a maximum of 16 digits in numerical form. Available card types Visa, MasterCard. customerexpiremonth The month of expiry. The month value should be a numerical value between 01 and 12. customerexpireyear The year of expiry. The year value may be in a 4 digit year value. (Example: 2007). customercvc2 customercardholder customerfullname customerphone customeraddress customercity The CV2/CVV2 number from the card, this number can be found on the back of a Credit/Debit card and is completely unique to that card. The card holder's name. Customer s full name may be the same as card holder name. Customer s phone Customer s address Customer s city customerstatecode Customer s state code. List of state codes see in Chapter 5. customerzip Customer s zip code customercountrycode Customer s country code. List of country codes see in Chapter 5. customeremail customershippingfullname customershippingphone customershippingaddress customershippingcity customershippingstatecode Customer s email Customer s shipping Full name, optional Customer s shipping phone, optional Customer s shipping address, optional Customer s shipping city, optional Customer s shipping state code, optional customershippingcountrycode Customer s shipping country code, optional customerip customerbrowser customerlanguage customerscreenresolution Customer s IP. Customer s browser string. See Chapter 2.2. for details. Customer s system language string. See Chapter 2.2. for details. Customer s screen resolution. See Chapter 2.2. for details. Chapter 2.2 Additional security parameters Our system requires the following additional parameters of customer s computer submitting transaction: customerbrowser Example: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; HbTools 4.7.3)

customerlanguage Example: en-us customerscreenresolution Example: 1440x900 depth=32 These parameters can be retrieved by using Java script and language variables. Here is example for those parameters: customerbrowser PHP: $_SERVER['HTTP_USER_AGENT'] Perl: $ENV{'HTTP_USER_AGENT'} ASP: Request.ServerVariables("HTTP_USER_AGENT") customerlanguage PHP: $_SERVER['HTTP_ACCEPT-LANGUAGE ] Perl: $ENV{ HTTP_ACCEPT-LANGUAGE } ASP: Request.ServerVariables( HTTP_ACCEPT-LANGUAGE ) customerscreenresolution <script language="javascript"> var height=0; var width=0; if (self.screen) { // for NN4 and IE4 width = screen.width height = screen.height depth = screen.colordepth; } else if (self.java) { // for NN3 with enabled Java var jkit = java.awt.toolkit.getdefaulttoolkit(); var scrsize = jkit.getscreensize(); width = scrsize.width; height = scrsize.height; depth = scrsize.colordepth; } if (width > 0 && height > 0) { document.writeln (',width,'x',height,' depth=',depth,') } else { document.writeln('') } </script> Chapter 2.3 Transaction Response A gateway response contains a series of parameters that identifies the success or failure of a transaction. The response contains the parameters listed in the following table:

Parameter Description resultstatus resultstatuscode resultdescription transactionid There are several status of transactions: approved, declined, failed, test, fraud You can as well determine transaction status by code: failed=0, approved =1, test=2, declined=3, fraud=4 A text message relating to the result of the transaction The resulting unique transaction number, assigned by GSPAY. Chapter 3. Test transactions The API uses a test mode to enable a developer implementing the GSPAY gateway to perform simple tests using the API interface. This mode allows the developer to perform a request on the gateway and to be returned a valid formatted response. Please note that any transactions performed in test mode will touch the API only and not route through the bank therefore transactions performed in test mode will not credit your balance in the merchant panel. You may perform as many test transactions as you wish even in Live mode. Use the following card numbers for test transactions: 4444445555555555 for Approved 4444446666666666 for Declined Chapter 4. Export transaction data. The API allows a Merchant to export data according to processed transactions. To get a data the parameter transactiontype should be set to export. In addition optional parameters could be used. exporttype enddate enddate siteid Transaction Type. Possible values: sale, refund, chargeback Start date in the absolute (2015-05-12) or relative ( -2 weeks) format End date in the absolute (2015-05-12) or relative ( -2 weeks) format Site ID <request> <merchant> <merchantid>5000</merchantid> <merchantpassword>12345</merchantpassword> <siteid>65535(optional)</siteid> </merchant> <transaction> <transactiontype>export</transactiontype> <exporttype>chargeback(optional)</exporttype> <startdate>-1 year(optional,default=-1 month)</startdate> <enddate>today(optional,default=today)</enddate> </transaction> </request> The API will return an XML response with transactions data.

Chapter 5. Examples. The XML Response API returns the transaction response parameters into a valid XML document. An example of a transaction response appears below. This document can be then parsed by your XML parser in order to recognize the completed transaction. Successful transaction <result> <resultstatus>approved</resultstatus> <resultstatuscode>1</resultstatuscode> <resultdescription>transaction complete</resultdescription> <transactionid>tr1143627034548</transactionid> </result> Declined transaction <result> <resultstatus>declined</resultstatus> <resultstatuscode>3</resultstatuscode> <resultdescription>transaction declined. GW capture - 098</resultDescription> <transactionid>tr1143627034548</transactionid> </result> An example of a Charge transaction request appears below. <request> <merchant> <merchantid>5000</merchantid> <merchantpassword>11111</merchantpassword> <merchantsiteid>6000</merchantsiteid> </merchant> <transaction> <transactiontype>sale</transactiontype> <transactionamount>56.00</transactionamount> <transactionorderid>#2234223</transactionorderid> <transactionaffiliateid></transactionaffiliateid> <transactiondescription>viagra 200mg, Cialis 100mg (Order #2234223)</transactionDescription> </transaction> <customer> <customercardnumber>4444333322221111</customercardnumber> <customercardtype>visa</customercardtype> <customerexpiremonth>07</customerexpiremonth> <customerexpireyear>2008</customerexpireyear> <customercvc2>124</customercvc2> <customercardholder>alex Rich</customerCardHolder> <customerfullname> Alex Rich</customerFullName> <customerphone>+1 834 2567798</customerPhone> <customeraddress>fireside Ct 18-270</customerAddress> <customercity>viena</customercity> <customerstatecode>va</customerstatecode> <customerzip>43321</customerzip> <customercountrycode>us</customercountrycode> <customeremail>alex@rich.com</customeremail> <customershippingfullname></customershippingfullname> <customershippingphone></customershippingphone> <customershippingaddress></customershippingaddress> <customershippingcity></customershippingcity> <customershippingstatecode></customershippingstatecode> <customershippingcountrycode></customershippingcountrycode> <customerip>127.0.0.1</customerip> <customerbrowser>mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)</customerBrowser>

<customerlanguage>en-us</customerlanguage> <customerscreenresolution>1024x768 depth=32</customerscreenresolution> </customer> </request> An example of a Refund transaction request appears below. <request> <merchant> <merchantid>5000</merchantid> <merchantpassword>111</merchantpassword> <merchantsiteid>6006</merchantsiteid> </merchant> <transaction> <transactiontype>refund</transactiontype> <transactiontransactionid>tr1141993277423</transactiontransactionid> <transactionreason>customer not satisfied</transactionreason> <refundblockcustomer>1</refundblockcustomer> </transaction> </request> Parameter name Description transactiontype transactiontransactionid transactionreason refundblockcustomer refund Transaction ID assigned by GSPAY Reason why you refund transaction 1= Block customer from future purchases, 0 = Don t block customer. Request should be named by request as in the following example: <input type=hidden name="request" value="... "> Appendix A. Country and States codes. Bellow you will find valid ISO2 countries codes: "Afghanistan"=>"AF" "Albania"=>"AL" "Algeria"=>"DZ" "American Samoa"=>"AS" "Andorra"=>"AD" "Angola"=>"AO" "Anguilla"=>"AI" "Antarctica"=>"AQ" "Antigua and Barbuda"=>"AG" "Argentina"=>"AR" "Armenia"=>"AM" "Aruba"=>"AW" "Australia"=>"AU" "Austria"=>"AT" "Azerbaijan"=>"AZ" "Bahamas"=>"BS" "Bahrain"=>"BH" "Bangladesh"=>"BD" "Barbados"=>"BB" "Belarus"=>"BY" "Belgium"=>"BE" "Belize"=>"BZ" "Benin"=>"BJ" "Bermuda"=>"BM" "Bhutan"=>"BT" "Bolivia"=>"BO" "Bosnia and Herzegovina"=>"BA" "Botswana"=>"BW" "Bouvet Island"=>"BV" "Brazil"=>"BR" "British Indian Ocean Territory"=>"IO" "Brunei Darussalam"=>"BN" "Bulgaria"=>"BG" "Burkina Faso"=>"BF" "Burundi"=>"BI" "Cambodia"=>"KH" "Cameroon"=>"CM" "Canada"=>"CA" "Cape Verde"=>"CV" "Cayman Islands"=>"KY" "Central African Republic"=>"CF" "Chad"=>"TD" "Chile"=>"CL" "China"=>"CN" "Christmas Island"=>"CX" "Cocos (Keeling) Islands"=>"CC" "Colombia"=>"CO" "Comoros"=>"KM" "Congo"=>"CG" "Congo the the"=>"cd" "Cook Islands"=>"CK" "Costa Rica"=>"CR" "Cote D'Ivoire"=>"CI" "Croatia"=>"HR" "Cuba"=>"CU" "Cyprus"=>"CY" "Czech Republic"=>"CZ" "Denmark"=>"DK" "Djibouti"=>"DJ" "Dominica"=>"DM" "Dominican Republic"=>"DO" "Ecuador"=>"EC" "Egypt"=>"EG" "El Salvador"=>"SV" "Equatorial Guinea"=>"GQ" "Eritrea"=>"ER" "Estonia"=>"EE" "Ethiopia"=>"ET" "Falkland Islands (Malvinas)"=>"FK" "Faroe Islands"=>"FO" "Fiji"=>"FJ" "Finland"=>"FI" "France"=>"FR" "French Guiana"=>"GF" "French Polynesia"=>"PF" "French Southern Territories"=>"TF" "Gabon"=>"GA" "Gambia"=>"GM" "Georgia"=>"GE" "Germany"=>"DE" "Ghana"=>"GH"

"Gibraltar"=>"GI" "Greece"=>"GR" "Greenland"=>"GL" "Grenada"=>"GD" "Guadeloupe"=>"GP" "Guam"=>"GU" "Guatemala"=>"GT" "Guinea"=>"GN" "Guinea-Bissau"=>"GW" "Guyana"=>"GY" "Haiti"=>"HT" "Heard Island and Mcdonald Islands"=>"HM" "Holy See (Vatican City State)"=>"VA" "Honduras"=>"HN" "Hong Kong"=>"HK" "Hungary"=>"HU" "Iceland"=>"IS" "India"=>"IN" "Indonesia"=>"ID" "Iran Islamic Republic of"=>"ir" "Iraq"=>"IQ" "Ireland"=>"IE" "Israel"=>"IL" "Italy"=>"IT" "Jamaica"=>"JM" "Japan"=>"JP" "Jordan"=>"JO" "Kazakhstan"=>"KZ" "Kenya"=>"KE" "Kiribati"=>"KI" "Korea People's Republic of"=>"kp" "Korea Republic of"=>"kr" "Kuwait"=>"KW" "Kyrgyzstan"=>"KG" "Lao People's Republic"=>"LA" "Latvia"=>"LV" "Lebanon"=>"LB" "Lesotho"=>"LS" "Liberia"=>"LR" "Libyan Arab Jamahiriya"=>"LY" "Liechtenstein"=>"LI" "Lithuania"=>"LT" "Luxembourg"=>"LU" "Macao"=>"MO" "Macedonia the Former Yugoslav Republic of"=>"mk" "Madagascar"=>"MG" "Malawi"=>"MW" "Malaysia"=>"MY" "Maldives"=>"MV" "Mali"=>"ML" "Malta"=>"MT" "Marshall Islands"=>"MH" "Martinique"=>"MQ" "Mauritania"=>"MR" "Mauritius"=>"MU" "Mayotte"=>"YT" "Mexico"=>"MX" "Micronesia Federated States of"=>"fm" "Moldova Republic of"=>"md" "Monaco"=>"MC" "Mongolia"=>"MN" "Montserrat"=>"MS" "Morocco"=>"MA" "Mozambique"=>"MZ" "Myanmar"=>"MM" "Namibia"=>"NA" "Nauru"=>"NR" "Nepal"=>"NP" "Netherlands"=>"NL" "Netherlands Antilles"=>"AN" "New Caledonia"=>"NC" "New Zealand"=>"NZ" "Nicaragua"=>"NI" "Niger"=>"NE" "Nigeria"=>"NG" "Niue"=>"NU" "Norfolk Island"=>"NF" "Northern Mariana Islands"=>"MP" "Norway"=>"NO" "Oman"=>"OM" "Pakistan"=>"PK" "Palau"=>"PW" "Palestinian Territory Occupied"=>"PS" "Panama"=>"PA" "Papua New Guinea"=>"PG" "Paraguay"=>"PY" "Peru"=>"PE" "Philippines"=>"PH" "Pitcairn"=>"PN" "Poland"=>"PL" "Portugal"=>"PT" "Puerto Rico"=>"PR" "Qatar"=>"QA" "Reunion"=>"RE" "Romania"=>"RO" "Russian Federation"=>"RU" "Rwanda"=>"RW" "Saint Helena"=>"SH" "Saint Kitts and Nevis"=>"KN" "Saint Lucia"=>"LC" "Saint Pierre and Miquelon"=>"PM" "Saint Vincent and the Grenadines"=>"VC" "Samoa"=>"WS" "San Marino"=>"SM" "Sao Tome and Principe"=>"ST" "Saudi Arabia"=>"SA" "Senegal"=>"SN" "Serbia and Montenegro"=>"CS" "Seychelles"=>"SC" "Sierra Leone"=>"SL" "Singapore"=>"SG" "Slovakia"=>"SK" "Slovenia"=>"SI" "Solomon Islands"=>"SB" "Somalia"=>"SO" "South Africa"=>"ZA" "South Georgiaand the South Sandwich Islands"=>"GS" "Spain"=>"ES" "Sri Lanka"=>"LK" "Sudan"=>"SD" "Suriname"=>"SR" "Svalbard and Jan Mayen"=>"SJ" "Swaziland"=>"SZ" "Sweden"=>"SE" "Switzerland"=>"CH" "Syrian Arab Republic"=>"SY" "Taiwan Province of China"=>"TW" "Tajikistan"=>"TJ" "Tanzania United Republic of"=>"tz" "Thailand"=>"TH" "Timor-Leste"=>"TL" "Togo"=>"TG" "Tokelau"=>"TK" "Tonga"=>"TO" "Trinidad and Tobago"=>"TT" "Tunisia"=>"TN" "Turkey"=>"TR" "Turkmenistan"=>"TM" "Turks and Caicos Islands"=>"TC" "Tuvalu"=>"TV" "Uganda"=>"UG" "Ukraine"=>"UA" "United Arab Emirates"=>"AE" "United Kingdom"=>"UK" "United States"=>"US" "United States Minor Outlying Islands"=>"UM" "Uruguay"=>"UY" "Uzbekistan"=>"UZ" "Vanuatu"=>"VU" "Venezuela"=>"VE" "Viet Nam"=>"VN" "Virgin Islands British"=>"VG" "Virgin Islands U.s."=>"VI" "Wallis and Futuna"=>"WF" "Western Sahara"=>"EH" "Yemen"=>"YE" "Zambia"=>"ZM" "Zimbabwe"=>"ZW" Bellow you will find valid US states codes: "AL"=>"Alabama" "AK"=>"Alaska" "AB"=>"Alberta" "AS"=>"American Samoa" "AZ"=>"Arizona" "AR"=>"Arkansas" "AA"=>"Armed Forces - Americas" "AE"=>"Armed Forces - Europe" "AP"=>"Armed Forces - Pacific" "BC"=>"British Columbia" "CA"=>"California" "CO"=>"Colorado" "CT"=>"Connecticut" "DE"=>"Delaware" "DC"=>"District of Columbia" "FM"=>"Federated States of Micronesia" "FL"=>"Florida" "GA"=>"Georgia" "GU"=>"Guam" "HI"=>"Hawaii" "ID"=>"Idaho" "IL"=>"Illinois" "IN"=>"Indiana" "IA"=>"Iowa" "KS"=>"Kansas" "KY"=>"Kentucky" "LA"=>"Louisiana" "ME"=>"Maine" "MB"=>"Manitoba" "MH"=>"Marshall Islands" "MD"=>"Maryland" "MA"=>"Massachusetts" "MI"=>"Michigan" "MN"=>"Minnesota" "MS"=>"Mississippi" "MO"=>"Missouri" "MT"=>"Montana" "NE"=>"Nebraska" "NV"=>"Nevada" "NB"=>"New Brunswick" "NH"=>"New Hampshire" "NJ"=>"New Jersey" "NM"=>"New Mexico" "NY"=>"New York" "NF"=>"Newfoundland" "NC"=>"North Carolina" "ND"=>"North Dakota" "MP"=>"Northern Mariana Islands" "NT"=>"Northwest Territories" "NS"=>"Nova Scotia" "OH"=>"Ohio" "OK"=>"Oklahoma" "ON"=>"Ontario" "OR"=>"Oregon" "PW"=>"Palau" "PA"=>"Pennsylvania" "PE"=>"Prince Edward Island" "PR"=>"Puerto Rico" "QC"=>"Quebec" "RI"=>"Rhode Island" "SK"=>"Saskatchewan" "SC"=>"South Carolina" "SD"=>"South Dakota" "TN"=>"Tennessee" "TX"=>"Texas" "UT"=>"Utah" "VT"=>"Vermont" "VI"=>"Virgin Islands" "VA"=>"Virginia" "WA"=>"Washington" "WV"=>"West Virginia" "WI"=>"Wisconsin" "WY"=>"Wyoming" "YT"=>"Yukon"