' ***** DISCLAIMER *****
' This code is to be used as an example and not in production.
' It lacks thorough testing and debugging. The Results below will be
' returned when posting against a gateway Test Account or an Active Account with Test Mode Enabled
GatewayUsername = "[[Gateway Username Here]]"
GatewayPassword = "[[Gateway Password Here]]"
' Returns True on Success, False on Failure
Function GatewaySale(amount, ccnumber, ccexp, cvv, name, address, zip)
Set OGateway = Server.CreateObject("MSXML2.ServerXMLHTTP")
OGateway.Open "POST", "https://secure.cyogate.net/api/transact.php", false
OGateway.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
DataToSend = "username=" & Server.URLEncode(GatewayUsername) &_
"&password=" & Server.URLEncode(GatewayPassword) &_
"&ccnumber=" & Server.URLEncode(ccnumber) &_
"&ccexp=" & Server.URLEncode(ccexp) &_
"&cvv=" & Server.URLEncode(cvv) &_
"&amount=" & Server.URLEncode(amount) &_
"&firstname=" & Server.URLEncode(name) &_
"&address1=" & Server.URLEncode(address) &_
"&zip=" & Server.URLEncode(zip)
OGateway.Send DataToSend
ResponseString = OGateway.responseText
Results = Split(ResponseString, "&")
GatewaySale = False
For Each i in Results
Result = Split(i,"=")
If UBound(Result)>0 Then
If LCase(Result(0))="response" Then
If Result(1) = "1" Then
GatewaySale = True
End If
End If
End If
Next
End Function
Results = GatewaySale("10.00","4111111111111111","0112","","John Smith","123 Main St", "60123")
Response.Write("This should be true: " & Results & "
")
Results = GatewaySale("0.99","4111111111111111","0112","","John Smith","123 Main St", "60123")
Response.Write("This should be false: " & Results & "
")
///###########################################################
///# #
///# D I S C L A I M E R #
///# #
///# WARNING: ANY USE BY YOU OF THE SAMPLE CODE PROVIDED #
///# IS AT YOUR OWN RISK. #
///# #
///# This code is provided "as is" without #
///# warranty of any kind, either express or implied, #
///# including but not limited to the implied warranties #
///# of merchantability and/or fitness for a particular #
///# purpose. #
///# #
///# #
///###########################################################
///###########################################################
///# #
///# Direct Post Transaction Submission Methodology #
///# #
///###########################################################
///# #
///# 1. You gather all the required transaction data on #
///# your secure web site. #
///# #
///# 2. The transaction data gets submitted (via HTTPS #
///# POST) to the gateway as one long string, consisting #
///# of specific name/value pairs. #
///# #
///# 3. When performing the HTTPS POST operation, you #
///# remain on the same web page from which you?ve #
///# performed the operation. #
///# #
///# 4. NMI.com immediately returns a transaction #
///# response string to the same web page from which you #
///# have performed the HTTPS POST operation. #
///# #
///# 5. You may then parse the response string and act #
///# upon certain response criteria, according to your #
///# business needs. #
///# #
///# #
///###########################################################
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>
<script language="C#" runat="server">
void Page_Load(Object Src, EventArgs E) {
// Process readHtmlPage function
myPage.Text = readHtmlPage("https://secure.cyogate.net/api/transact.php");
}
private String readHtmlPage(string url)
{
//setup some variables
String username = "demo";
String password = "password";
String firstname = "John";
String lastname = "Smith";
String address1 = "1234 Main St.";
String city = "Chicago";
String state = "IL";
String zip = "60193";
//setup some variables end
String result = "";
String strPost = "username="+username+"&password="+password+"&firstname="+firstname+"&lastname="+lastname+"&address1="+address1+"&city="+city+"&state="+state+"&zip="+zip+"&payment=creditcard&type=sale&amount=1.00&ccnumber=4111111111111111&ccexp=1015&cvv=123";
StreamWriter myWriter = null;
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.Method = "POST";
objRequest.ContentLength = strPost.Length;
objRequest.ContentType = "application/x-www-form-urlencoded";
try
{
myWriter = new StreamWriter(objRequest.GetRequestStream());
myWriter.Write(strPost);
}
catch (Exception e)
{
return e.Message;
}
finally {
myWriter.Close();
}
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
using (StreamReader sr =
new StreamReader(objResponse.GetResponseStream()) )
{
result = sr.ReadToEnd();
// Close and clean up the StreamReader
sr.Close();
}
return result;
}
</script>
<html>
<body>
<b>The content on this web page is the result of an HTTP POST operation to NMI.com, using the Direct Post method.<br>
<br/>
</b><hr/>
<asp:literal id="myPage" runat="server"/>
</body>
</html>
import java.util.*;
import java.io.*;
import java.net.*;
import java.security.*;
import java.text.*;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;
class PaymentGateway {
protected String server;
protected String port;
protected String path;
protected String username;
protected String password;
public PaymentGateway(String user, String pass)
{
server = "secure.cyogate.net";
port = "443";
path = "https://secure.cyogate.net/api/transact.php";
username = user;
password = pass;
}
public HashMap doSale( double amount,
String ccNumber,
String ccExp
) throws Exception
{
HashMap result = new HashMap();
HashMap request = new HashMap();
DecimalFormat form = new DecimalFormat("#.00");
request.put("amount", form.format(amount));
request.put("type", "sale");
request.put("ccnumber", ccNumber);
request.put("ccexp", ccExp);
String data_out = prepareRequest(request);
String error = "";
String data_in = "";
boolean success = true;
try {
HashMap retval = postForm(data_out);
data_in = (String)retval.get("response");
result.put("transactionid", retval.get("transactionid"));
} catch (IOException e) {
success = false;
error = "Connect error, " + e.getMessage();
} catch (Exception e) {
success = false;
error = e.getMessage();
}
if (!success) {
throw new Exception(error);
}
return result;
}
// Utility Functions
public String prepareRequest(HashMap request) {
if (request.size() == 0) {
return "";
}
request.put("username", username);
request.put("password", password);
Set s = request.keySet();
Iterator i = s.iterator();
Object key = i.next();
StringBuffer buffer = new StringBuffer();
buffer.append(key).append("=")
.append(URLEncoder.encode((String) request.get(key)));
while (i.hasNext()) {
key = i.next();
buffer.append("&").append(key).append("=")
.append(URLEncoder.encode((String) request.get(key)));
}
return buffer.toString();
}
protected HashMap postForm(String data) throws Exception {
HashMap result = new HashMap();
HttpURLConnection postConn;
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String urlHostName, SSLSession session) {
return true;
}
};
HttpsURLConnection.setDefaultHostnameVerifier(hv);
URL post = new URL("https", server, Integer.parseInt(port), path);
postConn = (HttpURLConnection)post.openConnection();
postConn.setRequestMethod("POST");
postConn.setDoOutput(true);
PrintWriter out = new PrintWriter(postConn.getOutputStream());
out.print(data);
out.close();
BufferedReader in =
new BufferedReader(new InputStreamReader(postConn.getInputStream()));
String inputLine;
StringBuffer buffer = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
buffer.append(inputLine);
}
in.close();
String response = buffer.toString();
result.put("response", response);
// Parse Result
StringTokenizer st = new StringTokenizer(response, "&");
while (st.hasMoreTokens()) {
String varString = st.nextToken();
StringTokenizer varSt = new StringTokenizer(varString, "=");
if (varSt.countTokens() > 2 || varSt.countTokens()<1) {
throw new Exception("Bad variable from processor center: " + varString);
}
if (varSt.countTokens()==1) {
result.put(varSt.nextToken(), "");
} else {
result.put(varSt.nextToken(), varSt.nextToken());
}
}
if (result.get("response")=="") {
throw new Exception("Bad response from processor center" + response);
}
if (!result.get("response").toString().equals("1")) {
throw new Exception(result.get("responsetext").toString());
}
return result;
}
}
public class TestPaymentGateway
{
public static void main(String arg[])
{
HashMap retval = new HashMap();
PaymentGateway gw = new PaymentGateway("demo", "password");
try {
retval = gw.doSale(10.05, "4111111111111111", "0909");
System.out.println("Success\nTransId: " + retval.get("transactionid") + "\n");
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
}
define("APPROVED", 1);
define("DECLINED", 2);
define("ERROR", 3);
class gwapi {
// Initial Setting Functions
function setLogin($username, $password) {
$this->login['username'] = $username;
$this->login['password'] = $password;
}
function setOrder($orderid,
$orderdescription,
$tax,
$shipping,
$ponumber,
$ipaddress) {
$this->order['orderid'] = $orderid;
$this->order['orderdescription'] = $orderdescription;
$this->order['tax'] = $tax;
$this->order['shipping'] = $shipping;
$this->order['ponumber'] = $ponumber;
$this->order['ipaddress'] = $ipaddress;
}
function setBilling($firstname,
$lastname,
$company,
$address1,
$address2,
$city,
$state,
$zip,
$country,
$phone,
$fax,
$email,
$website) {
$this->billing['firstname'] = $firstname;
$this->billing['lastname'] = $lastname;
$this->billing['company'] = $company;
$this->billing['address1'] = $address1;
$this->billing['address2'] = $address2;
$this->billing['city'] = $city;
$this->billing['state'] = $state;
$this->billing['zip'] = $zip;
$this->billing['country'] = $country;
$this->billing['phone'] = $phone;
$this->billing['fax'] = $fax;
$this->billing['email'] = $email;
$this->billing['website'] = $website;
}
function setShipping($firstname,
$lastname,
$company,
$address1,
$address2,
$city,
$state,
$zip,
$country,
$email) {
$this->shipping['firstname'] = $firstname;
$this->shipping['lastname'] = $lastname;
$this->shipping['company'] = $company;
$this->shipping['address1'] = $address1;
$this->shipping['address2'] = $address2;
$this->shipping['city'] = $city;
$this->shipping['state'] = $state;
$this->shipping['zip'] = $zip;
$this->shipping['country'] = $country;
$this->shipping['email'] = $email;
}
// Transaction Functions
function doSale($amount, $ccnumber, $ccexp, $cvv="") {
$query = "";
// Login Information
$query .= "username=" . urlencode($this->login['username']) . "&";
$query .= "password=" . urlencode($this->login['password']) . "&";
// Sales Information
$query .= "ccnumber=" . urlencode($ccnumber) . "&";
$query .= "ccexp=" . urlencode($ccexp) . "&";
$query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&";
$query .= "cvv=" . urlencode($cvv) . "&";
// Order Information
$query .= "ipaddress=" . urlencode($this->order['ipaddress']) . "&";
$query .= "orderid=" . urlencode($this->order['orderid']) . "&";
$query .= "orderdescription=" . urlencode($this->order['orderdescription']) . "&";
$query .= "tax=" . urlencode(number_format($this->order['tax'],2,".","")) . "&";
$query .= "shipping=" . urlencode(number_format($this->order['shipping'],2,".","")) . "&";
$query .= "ponumber=" . urlencode($this->order['ponumber']) . "&";
// Billing Information
$query .= "firstname=" . urlencode($this->billing['firstname']) . "&";
$query .= "lastname=" . urlencode($this->billing['lastname']) . "&";
$query .= "company=" . urlencode($this->billing['company']) . "&";
$query .= "address1=" . urlencode($this->billing['address1']) . "&";
$query .= "address2=" . urlencode($this->billing['address2']) . "&";
$query .= "city=" . urlencode($this->billing['city']) . "&";
$query .= "state=" . urlencode($this->billing['state']) . "&";
$query .= "zip=" . urlencode($this->billing['zip']) . "&";
$query .= "country=" . urlencode($this->billing['country']) . "&";
$query .= "phone=" . urlencode($this->billing['phone']) . "&";
$query .= "fax=" . urlencode($this->billing['fax']) . "&";
$query .= "email=" . urlencode($this->billing['email']) . "&";
$query .= "website=" . urlencode($this->billing['website']) . "&";
// Shipping Information
$query .= "shipping_firstname=" . urlencode($this->shipping['firstname']) . "&";
$query .= "shipping_lastname=" . urlencode($this->shipping['lastname']) . "&";
$query .= "shipping_company=" . urlencode($this->shipping['company']) . "&";
$query .= "shipping_address1=" . urlencode($this->shipping['address1']) . "&";
$query .= "shipping_address2=" . urlencode($this->shipping['address2']) . "&";
$query .= "shipping_city=" . urlencode($this->shipping['city']) . "&";
$query .= "shipping_state=" . urlencode($this->shipping['state']) . "&";
$query .= "shipping_zip=" . urlencode($this->shipping['zip']) . "&";
$query .= "shipping_country=" . urlencode($this->shipping['country']) . "&";
$query .= "shipping_email=" . urlencode($this->shipping['email']) . "&";
$query .= "type=sale";
return $this->_doPost($query);
}
function doAuth($amount, $ccnumber, $ccexp, $cvv="") {
$query = "";
// Login Information
$query .= "username=" . urlencode($this->login['username']) . "&";
$query .= "password=" . urlencode($this->login['password']) . "&";
// Sales Information
$query .= "ccnumber=" . urlencode($ccnumber) . "&";
$query .= "ccexp=" . urlencode($ccexp) . "&";
$query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&";
$query .= "cvv=" . urlencode($cvv) . "&";
// Order Information
$query .= "ipaddress=" . urlencode($this->order['ipaddress']) . "&";
$query .= "orderid=" . urlencode($this->order['orderid']) . "&";
$query .= "orderdescription=" . urlencode($this->order['orderdescription']) . "&";
$query .= "tax=" . urlencode(number_format($this->order['tax'],2,".","")) . "&";
$query .= "shipping=" . urlencode(number_format($this->order['shipping'],2,".","")) . "&";
$query .= "ponumber=" . urlencode($this->order['ponumber']) . "&";
// Billing Information
$query .= "firstname=" . urlencode($this->billing['firstname']) . "&";
$query .= "lastname=" . urlencode($this->billing['lastname']) . "&";
$query .= "company=" . urlencode($this->billing['company']) . "&";
$query .= "address1=" . urlencode($this->billing['address1']) . "&";
$query .= "address2=" . urlencode($this->billing['address2']) . "&";
$query .= "city=" . urlencode($this->billing['city']) . "&";
$query .= "state=" . urlencode($this->billing['state']) . "&";
$query .= "zip=" . urlencode($this->billing['zip']) . "&";
$query .= "country=" . urlencode($this->billing['country']) . "&";
$query .= "phone=" . urlencode($this->billing['phone']) . "&";
$query .= "fax=" . urlencode($this->billing['fax']) . "&";
$query .= "email=" . urlencode($this->billing['email']) . "&";
$query .= "website=" . urlencode($this->billing['website']) . "&";
// Shipping Information
$query .= "shipping_firstname=" . urlencode($this->shipping['firstname']) . "&";
$query .= "shipping_lastname=" . urlencode($this->shipping['lastname']) . "&";
$query .= "shipping_company=" . urlencode($this->shipping['company']) . "&";
$query .= "shipping_address1=" . urlencode($this->shipping['address1']) . "&";
$query .= "shipping_address2=" . urlencode($this->shipping['address2']) . "&";
$query .= "shipping_city=" . urlencode($this->shipping['city']) . "&";
$query .= "shipping_state=" . urlencode($this->shipping['state']) . "&";
$query .= "shipping_zip=" . urlencode($this->shipping['zip']) . "&";
$query .= "shipping_country=" . urlencode($this->shipping['country']) . "&";
$query .= "shipping_email=" . urlencode($this->shipping['email']) . "&";
$query .= "type=auth";
return $this->_doPost($query);
}
function doCredit($amount, $ccnumber, $ccexp) {
$query = "";
// Login Information
$query .= "username=" . urlencode($this->login['username']) . "&";
$query .= "password=" . urlencode($this->login['password']) . "&";
// Sales Information
$query .= "ccnumber=" . urlencode($ccnumber) . "&";
$query .= "ccexp=" . urlencode($ccexp) . "&";
$query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&";
// Order Information
$query .= "ipaddress=" . urlencode($this->order['ipaddress']) . "&";
$query .= "orderid=" . urlencode($this->order['orderid']) . "&";
$query .= "orderdescription=" . urlencode($this->order['orderdescription']) . "&";
$query .= "tax=" . urlencode(number_format($this->order['tax'],2,".","")) . "&";
$query .= "shipping=" . urlencode(number_format($this->order['shipping'],2,".","")) . "&";
$query .= "ponumber=" . urlencode($this->order['ponumber']) . "&";
// Billing Information
$query .= "firstname=" . urlencode($this->billing['firstname']) . "&";
$query .= "lastname=" . urlencode($this->billing['lastname']) . "&";
$query .= "company=" . urlencode($this->billing['company']) . "&";
$query .= "address1=" . urlencode($this->billing['address1']) . "&";
$query .= "address2=" . urlencode($this->billing['address2']) . "&";
$query .= "city=" . urlencode($this->billing['city']) . "&";
$query .= "state=" . urlencode($this->billing['state']) . "&";
$query .= "zip=" . urlencode($this->billing['zip']) . "&";
$query .= "country=" . urlencode($this->billing['country']) . "&";
$query .= "phone=" . urlencode($this->billing['phone']) . "&";
$query .= "fax=" . urlencode($this->billing['fax']) . "&";
$query .= "email=" . urlencode($this->billing['email']) . "&";
$query .= "website=" . urlencode($this->billing['website']) . "&";
$query .= "type=credit";
return $this->_doPost($query);
}
function doOffline($authorizationcode, $amount, $ccnumber, $ccexp) {
$query = "";
// Login Information
$query .= "username=" . urlencode($this->login['username']) . "&";
$query .= "password=" . urlencode($this->login['password']) . "&";
// Sales Information
$query .= "ccnumber=" . urlencode($ccnumber) . "&";
$query .= "ccexp=" . urlencode($ccexp) . "&";
$query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&";
$query .= "authorizationcode=" . urlencode($authorizationcode) . "&";
// Order Information
$query .= "ipaddress=" . urlencode($this->order['ipaddress']) . "&";
$query .= "orderid=" . urlencode($this->order['orderid']) . "&";
$query .= "orderdescription=" . urlencode($this->order['orderdescription']) . "&";
$query .= "tax=" . urlencode(number_format($this->order['tax'],2,".","")) . "&";
$query .= "shipping=" . urlencode(number_format($this->order['shipping'],2,".","")) . "&";
$query .= "ponumber=" . urlencode($this->order['ponumber']) . "&";
// Billing Information
$query .= "firstname=" . urlencode($this->billing['firstname']) . "&";
$query .= "lastname=" . urlencode($this->billing['lastname']) . "&";
$query .= "company=" . urlencode($this->billing['company']) . "&";
$query .= "address1=" . urlencode($this->billing['address1']) . "&";
$query .= "address2=" . urlencode($this->billing['address2']) . "&";
$query .= "city=" . urlencode($this->billing['city']) . "&";
$query .= "state=" . urlencode($this->billing['state']) . "&";
$query .= "zip=" . urlencode($this->billing['zip']) . "&";
$query .= "country=" . urlencode($this->billing['country']) . "&";
$query .= "phone=" . urlencode($this->billing['phone']) . "&";
$query .= "fax=" . urlencode($this->billing['fax']) . "&";
$query .= "email=" . urlencode($this->billing['email']) . "&";
$query .= "website=" . urlencode($this->billing['website']) . "&";
// Shipping Information
$query .= "shipping_firstname=" . urlencode($this->shipping['firstname']) . "&";
$query .= "shipping_lastname=" . urlencode($this->shipping['lastname']) . "&";
$query .= "shipping_company=" . urlencode($this->shipping['company']) . "&";
$query .= "shipping_address1=" . urlencode($this->shipping['address1']) . "&";
$query .= "shipping_address2=" . urlencode($this->shipping['address2']) . "&";
$query .= "shipping_city=" . urlencode($this->shipping['city']) . "&";
$query .= "shipping_state=" . urlencode($this->shipping['state']) . "&";
$query .= "shipping_zip=" . urlencode($this->shipping['zip']) . "&";
$query .= "shipping_country=" . urlencode($this->shipping['country']) . "&";
$query .= "shipping_email=" . urlencode($this->shipping['email']) . "&";
$query .= "type=offline";
return $this->_doPost($query);
}
function doCapture($transactionid, $amount =0) {
$query = "";
// Login Information
$query .= "username=" . urlencode($this->login['username']) . "&";
$query .= "password=" . urlencode($this->login['password']) . "&";
// Transaction Information
$query .= "transactionid=" . urlencode($transactionid) . "&";
if ($amount>0) {
$query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&";
}
$query .= "type=capture";
return $this->_doPost($query);
}
function doVoid($transactionid) {
$query = "";
// Login Information
$query .= "username=" . urlencode($this->login['username']) . "&";
$query .= "password=" . urlencode($this->login['password']) . "&";
// Transaction Information
$query .= "transactionid=" . urlencode($transactionid) . "&";
$query .= "type=void";
return $this->_doPost($query);
}
function doRefund($transactionid, $amount = 0) {
$query = "";
// Login Information
$query .= "username=" . urlencode($this->login['username']) . "&";
$query .= "password=" . urlencode($this->login['password']) . "&";
// Transaction Information
$query .= "transactionid=" . urlencode($transactionid) . "&";
if ($amount>0) {
$query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&";
}
$query .= "type=refund";
return $this->_doPost($query);
}
function _doPost($query) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://secure.cyogate.net/api/transact.php");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
curl_setopt($ch, CURLOPT_POST, 1);
if (!($data = curl_exec($ch))) {
return ERROR;
}
curl_close($ch);
unset($ch);
print "\n$data\n";
$data = explode("&",$data);
for($i=0;$i<count($data);$i++) {
$rdata = explode("=",$data[$i]);
$this->responses[$rdata[0]] = $rdata[1];
}
return $this->responses['response'];
}
}
$gw = new gwapi;
$gw->setLogin("demo", "password");
$gw->setBilling("John","Smith","Acme, Inc.","123 Main St","Suite 200", "Beverly Hills",
"CA","90210","US","555-555-5555","555-555-5556","support@example.com",
"www.example.com");
$gw->setShipping("Mary","Smith","na","124 Shipping Main St","Suite Ship", "Beverly Hills",
"CA","90210","US","support@example.com");
$gw->setOrder("1234","Big Order",1, 2, "PO1234","65.192.14.10");
$r = $gw->doSale("50.00","4111111111111111","1010");
print $gw->responses['responsetext'];
###########################################################
# #
# D I S C L A I M E R #
# #
# WARNING: ANY USE BY YOU OF THE SAMPLE CODE PROVIDED #
# IS AT YOUR OWN RISK. #
# #
# The code is provided "as is" without #
# warranty of any kind, either express or implied, #
# including but not limited to the implied warranties #
# of merchantability and/or fitness for a particular #
# purpose. #
# #
# #
###########################################################
import pycurl
import urllib
import urlparse
import StringIO
class gwapi():
def __init__(self):
self.login= dict()
self.order = dict()
self.billing = dict()
self.shipping = dict()
self.responses = dict()
def setLogin(self,username,password):
self.login['password'] = password
self.login['username'] = username
def setOrder(self, orderid, orderdescription, tax, shipping, ponumber,ipadress):
self.order['orderid'] = orderid;
self.order['orderdescription'] = orderdescription
self.order['shipping'] = '{0:.2f}'.format(float(shipping))
self.order['ipaddress'] = ipadress
self.order['tax'] = '{0:.2f}'.format(float(tax))
self.order['ponumber'] = ponumber
def setBilling(self,
firstname,
lastname,
company,
address1,
address2,
city,
state,
zip,
country,
phone,
fax,
email,
website):
self.billing['firstname'] = firstname
self.billing['lastname'] = lastname
self.billing['company'] = company
self.billing['address1'] = address1
self.billing['address2'] = address2
self.billing['city'] = city
self.billing['state'] = state
self.billing['zip'] = zip
self.billing['country'] = country
self.billing['phone'] = phone
self.billing['fax'] = fax
self.billing['email'] = email
self.billing['website'] = website
def setShipping(self,firstname,
lastname,
company,
address1,
address2,
city,
state,
zipcode,
country,
email):
self.shipping['firstname'] = firstname
self.shipping['lastname'] = lastname
self.shipping['company'] = company
self.shipping['address1'] = address1
self.shipping['address2'] = address2
self.shipping['city'] = city
self.shipping['state'] = state
self.shipping['zip'] = zipcode
self.shipping['country'] = country
self.shipping['email'] = email
def doSale(self,amount, ccnumber, ccexp, cvv=''):
query = ""
# Login Information
query = query + "username=" + urllib.quote(self.login['username']) + "&"
query += "password=" + urllib.quote(self.login['password']) + "&"
# Sales Information
query += "ccnumber=" + urllib.quote(ccnumber) + "&"
query += "ccexp=" + urllib.quote(ccexp) + "&"
query += "amount=" + urllib.quote('{0:.2f}'.format(float(amount))) + "&"
if (cvv!=''):
query += "cvv=" + urllib.quote(cvv) + "&"
# Order Information
for key,value in self.order.iteritems():
query += key +"=" + urllib.quote(str(value)) + "&"
# Billing Information
for key,value in self.billing.iteritems():
query += key +"=" + urllib.quote(str(value)) + "&"
# Shipping Information
for key,value in self.shipping.iteritems():
query += key +"=" + urllib.quote(str(value)) + "&"
query += "type=sale"
return self.doPost(query)
def doPost(self,query):
responseIO = StringIO.StringIO()
curlObj = pycurl.Curl()
curlObj.setopt(pycurl.POST,1)
curlObj.setopt(pycurl.CONNECTTIMEOUT,15)
curlObj.setopt(pycurl.TIMEOUT,15)
curlObj.setopt(pycurl.HEADER,0)
curlObj.setopt(pycurl.SSL_VERIFYPEER,0)
curlObj.setopt(pycurl.WRITEFUNCTION,responseIO.write);
curlObj.setopt(pycurl.URL,"https://secure.cyogate.net/api/transact.php")
curlObj.setopt(pycurl.POSTFIELDS,query)
curlObj.perform()
data = responseIO.getvalue()
temp = urlparse.parse_qs(data)
for key,value in temp.iteritems():
self.responses[key] = value[0]
return self.responses['response']
# NOTE: your username and password should replace the ones below
gw = gwapi()
gw.setLogin("demo", "password");
gw.setBilling("John","Smith","Acme, Inc.","123 Main St","Suite 200", "Beverly Hills",
"CA","90210","US","555-555-5555","555-555-5556","support@example.com",
"www.example.com")
gw.setShipping("Mary","Smith","na","124 Shipping Main St","Suite Ship", "Beverly Hills",
"CA","90210","US","support@example.com")
gw.setOrder("1234","Big Order",1, 2, "PO1234","65.192.14.10")
r = gw.doSale("5.00","4111111111111111","1212",'999')
print gw.responses['response']
if (int(gw.responses['response']) == 1) :
print "Approved"
elif (int(gw.responses['response']) == 2) :
print "Declined"
elif (int(gw.responses['response']) == 3) :
print "Error"
###########################################################
# #
# D I S C L A I M E R #
# #
# WARNING: ANY USE BY YOU OF THE SAMPLE CODE PROVIDED #
# IS AT YOUR OWN RISK. #
# #
# The code is provided "as is" without #
# warranty of any kind, either express or implied, #
# including but not limited to the implied warranties #
# of merchantability and/or fitness for a particular #
# purpose. #
# #
# #
###########################################################
require 'rubygems'
require 'curb'
require 'uri'
require 'addressable/uri'
class GwApi
def initialize()
@login = {}
@order = {}
@billing = {}
@shipping = {}
@responses = {}
end
def setLogin(username,password)
@login['password'] = password
@login['username'] = username
end
def setOrder( orderid, orderdescription, tax, shipping, ponumber,ipadress)
@order['orderid'] = orderid;
@order['orderdescription'] = orderdescription
@order['shipping'] = "%.2f" % shipping
@order['ipaddress'] = ipadress
@order['tax'] = "%.2f" % tax
@order['ponumber'] = ponumber
end
def setBilling(
firstname,
lastname,
company,
address1,
address2,
city,
state,
zip,
country,
phone,
fax,
email,
website)
@billing['firstname'] = firstname
@billing['lastname'] = lastname
@billing['company'] = company
@billing['address1'] = address1
@billing['address2'] = address2
@billing['city'] = city
@billing['state'] = state
@billing['zip'] = zip
@billing['country'] = country
@billing['phone'] = phone
@billing['fax'] = fax
@billing['email'] = email
@billing['website'] = website
end
def setShipping(firstname,
lastname,
company,
address1,
address2,
city,
state,
zipcode,
country,
email)
@shipping['firstname'] = firstname
@shipping['lastname'] = lastname
@shipping['company'] = company
@shipping['address1'] = address1
@shipping['address2'] = address2
@shipping['city'] = city
@shipping['state'] = state
@shipping['zip'] = zipcode
@shipping['country'] = country
@shipping['email'] = email
end
def doSale(amount, ccnumber, ccexp, cvv='')
query = ""
# Login Information
query = query + "username=" + URI.escape(@login['username']) + "&"
query += "password=" + URI.escape(@login['password']) + "&"
# Sales Information
query += "ccnumber=" + URI.escape(ccnumber) + "&"
query += "ccexp=" + URI.escape(ccexp) + "&"
query += "amount=" + URI.escape("%.2f" %amount) + "&"
if (cvv!='')
query += "cvv=" + URI.escape(cvv) + "&"
end
# Order Information
@order.each do | key,value|
query += key +"=" + URI.escape(value) + "&"
end
# Billing Information
@billing.each do | key,value|
query += key +"=" + URI.escape(value) + "&"
end
# Shipping Information
@shipping.each do | key,value|
query += key +"=" + URI.escape(value) + "&"
end
query += "type=sale"
return doPost(query)
end
def doPost(query)
curlObj = Curl::Easy.new("https://secure.cyogate.net/api/transact.php")
curlObj.connect_timeout = 15
curlObj.timeout = 15
curlObj.header_in_body = false
curlObj.ssl_verify_peer=false
curlObj.post_body = query
curlObj.perform()
data = curlObj.body_str
# NOTE: The domain name below is simply used to create a full URI to allow URI.parse to parse out the query values
# for us. It is not used to send any data
data = '"https://secure.cyogate.net/api/transact.php?' + data
uri = Addressable::URI.parse(data)
@responses = uri.query_values
return @responses['response']
end
def getResponses()
return @responses
end
end
gw = GwApi.new()
# NOTE: your username and password should replace the ones below
gw.setLogin("demo", "password");
gw.setBilling("John","Smith","Acme, Inc.","123 Main St","Suite 200", "Beverly Hills",
"CA","90210","US","555-555-5555","555-555-5556","support@example.com",
"www.example.com")
gw.setShipping("Mary","Smith","na","124 Shipping Main St","Suite Ship", "Beverly Hills",
"CA","90210","US","support@example.com")
gw.setOrder("1234","Big Order",1, 2, "PO1234","65.192.14.10")
r = gw.doSale("5.00","4111111111111111","1212",'999')
myResponses = gw.getResponses
print myResponses['response'] + " "
if (myResponses['response'] == '1')
print "Approved \n"
elsif (myResponses['response'] == '2')
print "Declined \n"
elsif (myResponses['response'] == '3')
print "Error \n"
end
Apply for a Merchant Account
Signup for the Payment Gateway
An Internet Merchant Account is sometimes referred to as a "MOTO" (Mail Order & Telephone Order) Account because they all require the ability to process a credit card payment when there is no physical credit card present to be swiped. A standard retail "swipe" merchant account does not allow processing of these "card-not-present" transactions.
If the domestic banks are denying your merchant application because they believe your industry is considered high risk, CyoGate can help! We have an offshore network of merchant processing partners that enable us to provide low cost, high risk merchant solutions to a much wider range of businesses and industries.
The CyoGate Internet Payment Gateway offers one of the quickest and most cost effective ways to accept and process credit card and electronic check payments online. Our payment gateway works with most existing merchant accounts and supports hundreds of popular web shopping carts and eCommerce platforms.