<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Abdullah Al Mamun</title>
	<atom:link href="http://www.abdullahalmamun.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.abdullahalmamun.com</link>
	<description>Sr. Software Engineer</description>
	<lastBuildDate>Fri, 12 Mar 2010 06:26:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP Payment Library for Paypal, Authorize.net and 2Checkout (2CO)</title>
		<link>http://www.abdullahalmamun.com/?p=147</link>
		<comments>http://www.abdullahalmamun.com/?p=147#comments</comments>
		<pubDate>Fri, 12 Mar 2010 05:21:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.abdullahalmamun.com/?p=147</guid>
		<description><![CDATA[



Whenever you need to work with a 3rd party API or a
gateway, you’d first search in Google for a possible wrapper for it in
PHP. When it comes to supporting payment gateways, you get bunch of
libraries in the search results who are fundamentally different. Some
of them are old PHP 3/4 ones, some are new, some may ]]></description>
			<content:encoded><![CDATA[<div id="content-wrapper">
<div id="content">
<div class="post-wrapper">
<div class="post">
<p>Whenever you need to work with a 3rd party API or a<br />
gateway, you’d first search in Google for a possible wrapper for it in<br />
PHP. When it comes to supporting payment gateways, you get bunch of<br />
libraries in the search results who are fundamentally different. Some<br />
of them are old PHP 3/4 ones, some are new, some may need PEAR, etc.</p>
<p>As they were not required together in one single project, I used<br />
them whenever needed. But in one project, I needed them all. I thoughts<br />
it’s a chance and decided to stop using them and wrote my own ones<br />
where I can use the same methods for all the gateways.</p>
<p>So, here is an abstract PaymentGateway library which is being extended to be used for three popular payment gateways (<a href="http://www.paypal.com/">Paypal</a>, <a href="http://www.authorize.net/">Authorize.net</a>, and <a href="http://www.2checkout.com/">2Checkout</a>)<br />
in order to provide you with a similar way of using them. Note that the<br />
libraries are for basic usage only and do not contain options for<br />
recurring payments. Without much babble, let’s see a few examples of<br />
how you can use them.</p>
<p><strong>Paypal</strong></p>
<p>In order to process payments using Paypal, you’ll need to follow these steps:</p>
<p>1. Send the required information to Paypal (snippet 1). Be sure to<br />
specify your Paypal email where you want to receive the funds, the<br />
success and failure pages, the IPN page, and the product information.<br />
The example has the test mode ON, which you will not need in real<br />
scenario.</p>
<p>2. Create a payment success page where Paypal will send your customer after payment.</p>
<p>3. Create a payment failure page where Paypal will send your customer after failed payment.</p>
<p>4. Create a IPN page where Paypal will send payment notification in<br />
the background. Make sure you use/remove the test mode in conjunction<br />
with step 1. (snippet 2)</p>
<div id="highlighter_117619" class="syntaxhighlighter ">
<div class="bar">
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">&lt;?php</code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">03.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Include the paypal library</code></span></span></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="keyword">include_once</code> <code class="plain">(</code><code class="string">'Paypal.php'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">05.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Create an instance of the paypal library</code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code> <code class="plain">= </code><code class="keyword">new</code> <code class="plain">Paypal();</code></span></span></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">09.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify your paypal email</code></span></span></div>
<div class="line alt2"><code class="number">10.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code><code class="plain">-&gt;addField(</code><code class="string">'business'</code><code class="plain">, </code><code class="string">'YOUR_PAYPAL_EMAIL'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify the currency</code></span></span></div>
<div class="line alt1"><code class="number">13.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code><code class="plain">-&gt;addField(</code><code class="string">'currency_code'</code><code class="plain">, </code><code class="string">'USD'</code><code class="plain">);</code></span></span></div>
<div class="line alt2"><code class="number">14.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify the url where paypal will send the user on success/failure</code></span></span></div>
<div class="line alt2"><code class="number">16.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code><code class="plain">-&gt;addField(</code><code class="string">'return'</code><code class="plain">, </code><code class="string">'<a href="http://your_host/payment/paypal_success.php">http://YOUR_HOST/payment/paypal_success.php</a>'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">17.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code><code class="plain">-&gt;addField(</code><code class="string">'cancel_return'</code><code class="plain">, </code><code class="string">'<a href="http://your_host/payment/paypal_failure.php">http://YOUR_HOST/payment/paypal_failure.php</a>'</code><code class="plain">);</code></span></span></div>
<div class="line alt2"><code class="number">18.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">19.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify the url where paypal will send the IPN</code></span></span></div>
<div class="line alt2"><code class="number">20.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code><code class="plain">-&gt;addField(</code><code class="string">'notify_url'</code><code class="plain">, </code><code class="string">'<a href="http://your_host/payment/paypal_ipn.php">http://YOUR_HOST/payment/paypal_ipn.php</a>'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">21.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">22.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify the product information</code></span></span></div>
<div class="line alt1"><code class="number">23.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code><code class="plain">-&gt;addField(</code><code class="string">'item_name'</code><code class="plain">, </code><code class="string">'T-Shirt'</code><code class="plain">);</code></span></span></div>
<div class="line alt2"><code class="number">24.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code><code class="plain">-&gt;addField(</code><code class="string">'amount'</code><code class="plain">, </code><code class="string">'9.99'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">25.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code><code class="plain">-&gt;addField(</code><code class="string">'item_number'</code><code class="plain">, </code><code class="string">'001'</code><code class="plain">);</code></span></span></div>
<div class="line alt2"><code class="number">26.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">27.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify any custom value</code></span></span></div>
<div class="line alt2"><code class="number">28.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code><code class="plain">-&gt;addField(</code><code class="string">'custom'</code><code class="plain">, </code><code class="string">'muri-khao'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">29.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">30.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Enable test mode if needed</code></span></span></div>
<div class="line alt1"><code class="number">31.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code><code class="plain">-&gt;enableTestMode();</code></span></span></div>
<div class="line alt2"><code class="number">32.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">33.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Let's start the train!</code></span></span></div>
<div class="line alt2"><code class="number">34.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code><code class="plain">-&gt;submitPayment();</code></span></span></div>
</div>
</div>
<p><em>Snippet 1</em></p>
<p><span id="more-207"> </span></p>
<div id="highlighter_944098" class="syntaxhighlighter ">
<div class="bar">
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">&lt;?php</code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">03.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Include the paypal library</code></span></span></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="keyword">include_once</code> <code class="plain">(</code><code class="string">'Paypal.php'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">05.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Create an instance of the paypal library</code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code> <code class="plain">= </code><code class="keyword">new</code> <code class="plain">Paypal();</code></span></span></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">09.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Log the IPN results</code></span></span></div>
<div class="line alt2"><code class="number">10.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code><code class="plain">-&gt;ipnLog = TRUE;</code></span></span></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Enable test mode if needed</code></span></span></div>
<div class="line alt1"><code class="number">13.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myPaypal</code><code class="plain">-&gt;enableTestMode();</code></span></span></div>
<div class="line alt2"><code class="number">14.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Check validity and write down it</code></span></span></div>
<div class="line alt2"><code class="number">16.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="keyword">if</code> <code class="plain">(</code><code class="variable">$myPaypal</code><code class="plain">-&gt;validateIpn())</code></span></span></div>
<div class="line alt1"><code class="number">17.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">{</code></span></span></div>
<div class="line alt2"><code class="number">18.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 24px;"><code class="keyword">if</code> <code class="plain">(</code><code class="variable">$myPaypal</code><code class="plain">-&gt;ipnData[</code><code class="string">'payment_status'</code><code class="plain">] == </code><code class="string">'Completed'</code><code class="plain">)</code></span></span></div>
<div class="line alt1"><code class="number">19.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 24px;"><code class="plain">{</code></span></span></div>
<div class="line alt2"><code class="number">20.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 54px;"><code class="functions">file_put_contents</code><code class="plain">(</code><code class="string">'paypal.txt'</code><code class="plain">, </code><code class="string">'SUCCESS'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">21.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 24px;"><code class="plain">}</code></span></span></div>
<div class="line alt2"><code class="number">22.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 24px;"><code class="keyword">else</code></span></span></div>
<div class="line alt1"><code class="number">23.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 24px;"><code class="plain">{</code></span></span></div>
<div class="line alt2"><code class="number">24.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 54px;"><code class="functions">file_put_contents</code><code class="plain">(</code><code class="string">'paypal.txt'</code><code class="plain">, </code><code class="string">"FAILURE\n\n"</code> <code class="plain">. </code><code class="variable">$myPaypal</code><code class="plain">-&gt;ipnData);</code></span></span></div>
<div class="line alt1"><code class="number">25.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 24px;"><code class="plain">}</code></span></span></div>
<div class="line alt2"><code class="number">26.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">}</code></span></span></div>
</div>
</div>
<p><em>Snippet 2</em></p>
<p><strong>Authorize.net</strong></p>
<p>In order to process payments using Authorize.net, you’ll need to follow these steps:</p>
<p>1. Send the required information to Authorize.net(snippet 3). Be<br />
sure to specify your Authorize.net login and secret key, the<br />
success/failure pages, the IPN page, and the product information. The<br />
example has the test mode ON, which you will not need in real scenario.</p>
<p>2. Create a payment success/failure page where Authorize.net will send your customer after payment.</p>
<p>3. Create a IPN page where Authorize.net will send payment<br />
notification in the background. Make sure you use/remove the test mode<br />
in conjunction with step 1. (snippet 4)</p>
<p>4. In order to set the secret key, log into your authorize.net<br />
merchant account. Go to “MD5 Hash” menu and set a secret word to<br />
desired values and use that in the “setUserInfo” function showed in the<br />
example.</p>
<div id="highlighter_616723" class="syntaxhighlighter ">
<div class="bar">
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">&lt;?php</code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">03.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Include the paypal library</code></span></span></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="keyword">include_once</code> <code class="plain">(</code><code class="string">'Authorize.php'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">05.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Create an instance of the authorize.net library</code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code> <code class="plain">= </code><code class="keyword">new</code> <code class="plain">Authorize();</code></span></span></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">09.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify your authorize.net login and secret</code></span></span></div>
<div class="line alt2"><code class="number">10.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code><code class="plain">-&gt;setUserInfo(</code><code class="string">'YOUR_LOGIN'</code><code class="plain">, </code><code class="string">'YOUR_SECRET_KEY'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify the url where authorize.net will send the user on success/failure</code></span></span></div>
<div class="line alt1"><code class="number">13.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code><code class="plain">-&gt;addField(</code><code class="string">'x_Receipt_Link_URL'</code><code class="plain">, </code><code class="string">'<a href="http://your_host/payment/authorize_success.php">http://YOUR_HOST/payment/authorize_success.php</a>'</code><code class="plain">);</code></span></span></div>
<div class="line alt2"><code class="number">14.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify the url where authorize.net will send the IPN</code></span></span></div>
<div class="line alt2"><code class="number">16.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code><code class="plain">-&gt;addField(</code><code class="string">'x_Relay_URL'</code><code class="plain">, </code><code class="string">'<a href="http://your_host/payment/authorize_ipn.php">http://YOUR_HOST/payment/authorize_ipn.php</a>'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">17.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">18.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify the product information</code></span></span></div>
<div class="line alt1"><code class="number">19.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code><code class="plain">-&gt;addField(</code><code class="string">'x_Description'</code><code class="plain">, </code><code class="string">'T-Shirt'</code><code class="plain">);</code></span></span></div>
<div class="line alt2"><code class="number">20.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code><code class="plain">-&gt;addField(</code><code class="string">'x_Amount'</code><code class="plain">, </code><code class="string">'9.99'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">21.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code><code class="plain">-&gt;addField(</code><code class="string">'x_Invoice_num'</code><code class="plain">, rand(1, 100));</code></span></span></div>
<div class="line alt2"><code class="number">22.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code><code class="plain">-&gt;addField(</code><code class="string">'x_Cust_ID'</code><code class="plain">, </code><code class="string">'muri-khao'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">23.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">24.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Enable test mode if needed</code></span></span></div>
<div class="line alt1"><code class="number">25.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code><code class="plain">-&gt;enableTestMode();</code></span></span></div>
<div class="line alt2"><code class="number">26.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">27.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Let's start the train!</code></span></span></div>
<div class="line alt2"><code class="number">28.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code><code class="plain">-&gt;submitPayment();</code></span></span></div>
</div>
</div>
<p><em>Snippet 3</em></p>
<div id="highlighter_519632" class="syntaxhighlighter ">
<div class="bar">
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">&lt;?php</code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">03.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Include the paypal library</code></span></span></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="keyword">include_once</code> <code class="plain">(</code><code class="string">'Authorize.php'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">05.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Create an instance of the authorize.net library</code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code> <code class="plain">= </code><code class="keyword">new</code> <code class="plain">Authorize();</code></span></span></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">09.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Log the IPN results</code></span></span></div>
<div class="line alt2"><code class="number">10.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code><code class="plain">-&gt;ipnLog = TRUE;</code></span></span></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify your authorize login and secret</code></span></span></div>
<div class="line alt1"><code class="number">13.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code><code class="plain">-&gt;setUserInfo(</code><code class="string">'YOUR_LOGIN'</code><code class="plain">, </code><code class="string">'YOUR_SECRET_KEY'</code><code class="plain">);</code></span></span></div>
<div class="line alt2"><code class="number">14.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Enable test mode if needed</code></span></span></div>
<div class="line alt2"><code class="number">16.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$myAuthorize</code><code class="plain">-&gt;enableTestMode();</code></span></span></div>
<div class="line alt1"><code class="number">17.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">18.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Check validity and write down it</code></span></span></div>
<div class="line alt1"><code class="number">19.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="keyword">if</code> <code class="plain">(</code><code class="variable">$myAuthorize</code><code class="plain">-&gt;validateIpn())</code></span></span></div>
<div class="line alt2"><code class="number">20.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">{</code></span></span></div>
<div class="line alt1"><code class="number">21.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 24px;"><code class="functions">file_put_contents</code><code class="plain">(</code><code class="string">'authorize.txt'</code><code class="plain">, </code><code class="string">'SUCCESS'</code><code class="plain">);</code></span></span></div>
<div class="line alt2"><code class="number">22.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">}</code></span></span></div>
<div class="line alt1"><code class="number">23.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="keyword">else</code></span></span></div>
<div class="line alt2"><code class="number">24.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">{</code></span></span></div>
<div class="line alt1"><code class="number">25.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 24px;"><code class="functions">file_put_contents</code><code class="plain">(</code><code class="string">'authorize.txt'</code><code class="plain">, </code><code class="string">"FAILURE\n\n"</code> <code class="plain">. </code><code class="variable">$myPaypal</code><code class="plain">-&gt;ipnData);</code></span></span></div>
<div class="line alt2"><code class="number">26.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">}</code></span></span></div>
</div>
</div>
<p><em>Snippet 4</em></p>
<p><strong>2Checkout</strong></p>
<p>In order to process payments using 2Checkout, you’ll need to follow these steps:</p>
<p>1. Send the required information to 2Checkout(snippet 5). Be sure to<br />
specify your 2Checkout vendor id, the return page, and the product<br />
information. Please note that 2Checkout does not send IPN in the<br />
background, so you will need to handle the payment data in the return<br />
page. The example has the test mode ON, which you will not need in real<br />
scenario.</p>
<p>2. Create a return page where 2Checkout will send your customer<br />
after payment. This is also where you will need to retrieve and use the<br />
payment data. Make sure you use/remove the test mode in conjunction<br />
with step 1. (snippet 6)</p>
<p>3. In order to set the secret key, log into your 2checkout.com<br />
account and go to “Look and Feel” section. At the bottom enter the<br />
“Secret Word” and use it in the IPN verification process as shown in<br />
the example.</p>
<div id="highlighter_735694" class="syntaxhighlighter ">
<div class="bar">
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">&lt;?php</code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">03.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Include the paypal library</code></span></span></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="keyword">include_once</code> <code class="plain">(</code><code class="string">'TwoCo.php'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">05.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Create an instance of the authorize.net library</code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$my2CO</code> <code class="plain">= </code><code class="keyword">new</code> <code class="plain">TwoCo();</code></span></span></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">09.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify your 2CheckOut vendor id</code></span></span></div>
<div class="line alt2"><code class="number">10.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$my2CO</code><code class="plain">-&gt;addField(</code><code class="string">'sid'</code><code class="plain">, </code><code class="string">'YOUR_VENDOR_ID'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify the order information</code></span></span></div>
<div class="line alt1"><code class="number">13.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$my2CO</code><code class="plain">-&gt;addField(</code><code class="string">'cart_order_id'</code><code class="plain">, rand(1, 100));</code></span></span></div>
<div class="line alt2"><code class="number">14.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$my2CO</code><code class="plain">-&gt;addField(</code><code class="string">'total'</code><code class="plain">, </code><code class="string">'9.99'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">16.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify the url where authorize.net will send the IPN</code></span></span></div>
<div class="line alt1"><code class="number">17.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$my2CO</code><code class="plain">-&gt;addField(</code><code class="string">'x_Receipt_Link_URL'</code><code class="plain">, </code><code class="string">'<a href="http://your_host/payment/twoco_ipn.php">http://YOUR_HOST/payment/twoco_ipn.php</a>'</code><code class="plain">);</code></span></span></div>
<div class="line alt2"><code class="number">18.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$my2CO</code><code class="plain">-&gt;addField(</code><code class="string">'tco_currency'</code><code class="plain">, </code><code class="string">'USD'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">19.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$my2CO</code><code class="plain">-&gt;addField(</code><code class="string">'custom'</code><code class="plain">, </code><code class="string">'muri-khao'</code><code class="plain">);</code></span></span></div>
<div class="line alt2"><code class="number">20.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">21.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Enable test mode if needed</code></span></span></div>
<div class="line alt2"><code class="number">22.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$my2CO</code><code class="plain">-&gt;enableTestMode();</code></span></span></div>
<div class="line alt1"><code class="number">23.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">24.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Let's start the train!</code></span></span></div>
<div class="line alt1"><code class="number">25.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$my2CO</code><code class="plain">-&gt;submitPayment();</code></span></span></div>
</div>
</div>
<p><em>Snippet 5</em></p>
<div id="highlighter_11861" class="syntaxhighlighter ">
<div class="bar">
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">&lt;?php</code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">03.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Include the paypal library</code></span></span></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="keyword">include_once</code> <code class="plain">(</code><code class="string">'TwoCo.php'</code><code class="plain">);</code></span></span></div>
<div class="line alt1"><code class="number">05.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Create an instance of the authorize.net library</code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$my2CO</code> <code class="plain">= </code><code class="keyword">new</code> <code class="plain">TwoCo();</code></span></span></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">09.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Log the IPN results</code></span></span></div>
<div class="line alt2"><code class="number">10.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$my2CO</code><code class="plain">-&gt;ipnLog = TRUE;</code></span></span></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Specify your authorize login and secret</code></span></span></div>
<div class="line alt1"><code class="number">13.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$my2CO</code><code class="plain">-&gt;setSecret(</code><code class="string">'YOUR_SECRET_KEY'</code><code class="plain">);</code></span></span></div>
<div class="line alt2"><code class="number">14.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Enable test mode if needed</code></span></span></div>
<div class="line alt2"><code class="number">16.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="variable">$my2CO</code><code class="plain">-&gt;enableTestMode();</code></span></span></div>
<div class="line alt1"><code class="number">17.</code><span class="content"><span class="block" style="margin-left: 0px;"> </span></span></div>
<div class="line alt2"><code class="number">18.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="comments">// Check validity and write down it</code></span></span></div>
<div class="line alt1"><code class="number">19.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="keyword">if</code> <code class="plain">(</code><code class="variable">$my2CO</code><code class="plain">-&gt;validateIpn())</code></span></span></div>
<div class="line alt2"><code class="number">20.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">{</code></span></span></div>
<div class="line alt1"><code class="number">21.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 24px;"><code class="functions">file_put_contents</code><code class="plain">(</code><code class="string">'2co.txt'</code><code class="plain">, </code><code class="string">'SUCCESS'</code><code class="plain">);</code></span></span></div>
<div class="line alt2"><code class="number">22.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">}</code></span></span></div>
<div class="line alt1"><code class="number">23.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="keyword">else</code></span></span></div>
<div class="line alt2"><code class="number">24.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">{</code></span></span></div>
<div class="line alt1"><code class="number">25.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 24px;"><code class="functions">file_put_contents</code><code class="plain">(</code><code class="string">'2co.txt'</code><code class="plain">, </code><code class="string">"FAILURE\n\n"</code> <code class="plain">. </code><code class="variable">$my2CO</code><code class="plain">-&gt;ipnData);</code></span></span></div>
<div class="line alt2"><code class="number">26.</code><span class="content"><span class="block" style="margin-left: 0px;"><code class="plain">}</code></span></span></div>
</div>
</div>
<p><em>Snippet 6</em></p>
<p>Hope this will help you integrate the payment gateways in an easy<br />
manner. If you have any questions, or find any bug, have a suggestion,<br />
feel free to post them as comment here.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.abdullahalmamun.com/?feed=rss2&amp;p=147</wfw:commentRss>
		<slash:comments>1260</slash:comments>
		</item>
		<item>
		<title>Regular Expression Patterns</title>
		<link>http://www.abdullahalmamun.com/?p=49</link>
		<comments>http://www.abdullahalmamun.com/?p=49#comments</comments>
		<pubDate>Fri, 08 Jan 2010 12:43:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Regular Expression]]></category>

		<guid isPermaLink="false">http://www.abdullahalmamun.com/?p=49</guid>
		<description><![CDATA[
From various sources I have collected the following regular expression patterns. They helped me a lot in front-end and back-end validation.
Alpha:
Pattern: ^[a-zA-Z_ ]+$
Description: Allows only ‘A-Z’, ‘a-z’, space ( ‘ ‘ ) and underscore ( ‘_’).
Alphanumeric:
Pattern: ^[a-zA-Z0-9_ ]+$
Description: Allows only ‘A-Z’, ‘a-z’, ‘0-9&#8242;, space ( ‘ ‘ ) and underscore ( ‘_’).
Email:
Pattern: /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
Numeric:
Pattern: ^\d+$
Decimal:
Pattern: ^\d+(?:\.\d{0,2})?$
Date ]]></description>
			<content:encoded><![CDATA[<div class="entry">
<p>From various sources I have collected the following regular expression patterns. They helped me a lot in front-end and back-end validation.</p>
<h3>Alpha:</h3>
<p><strong>Pattern:</strong> ^[a-zA-Z_ ]+$</p>
<p><strong>Description:</strong> Allows only ‘A-Z’, ‘a-z’, space ( ‘ ‘ ) and underscore ( ‘_’).</p>
<h3>Alphanumeric:</h3>
<p><strong>Pattern:</strong> ^[a-zA-Z0-9_ ]+$</p>
<p><strong>Description:</strong> Allows only ‘A-Z’, ‘a-z’, ‘0-9&#8242;, space ( ‘ ‘ ) and underscore ( ‘_’).</p>
<h3>Email:</h3>
<p><strong>Pattern:</strong> /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i</p>
<h3>Numeric:</h3>
<p><strong>Pattern:</strong> ^\d+$</p>
<h3>Decimal:</h3>
<p><strong>Pattern:</strong> ^\d+(?:\.\d{0,2})?$</p>
<h3>Date – 1:</h3>
<p><strong>Pattern:</strong> ^(0[1-9]|[1,2][0-9]|3[0-1])-(0[1-9]|1[0,1,2])-\d{4}$</p>
<p><strong>Description:</strong> Date format DD-MM-YYYY</p>
<h3>Date – 2:</h3>
<p><strong>Pattern:</strong> ^(0[1-9]|1[0,1,2])-(0[1-9]|[1,2][0-9]|3[0-1])-\d{4}$</p>
<p><strong>Description:</strong> Date format MM-DD-YYYY</p>
<h3>US Zip Code:</h3>
<p><strong>Pattern:</strong> ^\d{5}$</p>
<h3>US Telephone Number:</h3>
<p><strong>Pattern:</strong> ^1?[\-]?\(?\d{3}\)?[\-]?\d{3}[\-]?\d{4}$</p>
<h3>Color Code:</h3>
<p><strong>Pattern:</strong> ^#{1}?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.abdullahalmamun.com/?feed=rss2&amp;p=49</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
