<?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>Krishna Sunuwar</title>
	<atom:link href="http://www.krishnasunuwar.com.np/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.krishnasunuwar.com.np</link>
	<description>PHP programmer bloging programming, open soruce technologies</description>
	<lastBuildDate>Thu, 04 Mar 2010 05:55:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>iDEAL Advance PHP Integration</title>
		<link>http://www.krishnasunuwar.com.np/2010/03/ideal-advance-php-integration/</link>
		<comments>http://www.krishnasunuwar.com.np/2010/03/ideal-advance-php-integration/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 05:55:58 +0000</pubDate>
		<dc:creator>Krish</dc:creator>
				<category><![CDATA[Payment Gateway]]></category>
		<category><![CDATA[iDEAL]]></category>
		<category><![CDATA[ING]]></category>

		<guid isPermaLink="false">http://www.krishnasunuwar.com.np/?p=341</guid>
		<description><![CDATA[iDEAL Advance PHP integration is not that tough but it will be tough when you miss documentation. Before you begin to write code, read &#8220;iDEAL_General_EN_v2.1.pdf&#8221;, Topic 3.4. Below is summery diagram.

You should be aware of general configuration part before you can begin this portion of code. Read Topic 3.3 in &#8220;iDEAL_Advanced_PHP_EN_V2.2.pdf&#8221;.
In brief it works in [...]]]></description>
			<content:encoded><![CDATA[<p>iDEAL Advance PHP integration is not that tough but it will be tough when you miss documentation. Before you begin to write code, read &#8220;iDEAL_General_EN_v2.1.pdf&#8221;, Topic 3.4. Below is summery diagram.<br />
<img src="http://i70.photobucket.com/albums/i88/s2krish/blog/ideal_advance_php.jpg" title="iDEAL Advance PHP Integration"></p>
<p>You should be aware of general configuration part before you can begin this portion of code. Read Topic 3.3 in &#8220;iDEAL_Advanced_PHP_EN_V2.2.pdf&#8221;.</p>
<p>In brief it works in following way:</p>
<ol>
<li>Make directory request (Get Bank list, Issuer list is what they called)</li>
<li>Make Transaction Request and redirected to iDEAL/bank)</li>
<li>Make Status Request (This is after iDEAL/bank redirect to webshop)</li>
</ol>
<p><strong>1) Directory Request</strong></p>
<p>Directory Request means you are fetching Issuer List (List of banks) from iDEAL. This is list of banks which are associated with iDEAL and making payment from these banks is possible. Below is code, how can you fetch Issuer List:</p>
<div class="geshi php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$ideal_connector</span> <span class="sy0">=</span> <span class="kw2">new</span> iDEALConnector<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$response</span> <span class="sy0">=</span> <span class="re1">$ideal_connector</span><span class="sy0">-&gt;</span><span class="me1">GetIssuerList</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">errorMessage</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$errorCode</span> <span class="sy0">=</span> <span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">getErrorCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$errorMsg</span> <span class="sy0">=</span> <span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">getErrorMessage</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$consumerMessage</span> <span class="sy0">=</span> <span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">getConsumerMessage</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$IssuerList</span> <span class="sy0">=&amp;</span> <span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">getIssuerFullList</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>If you see line number 3, I have made little bit changes. Original iDEAL document has </p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span> <span class="sy0">!</span> <span class="re1">$response</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="sy0">,</span></div>
</li>
</ol>
</div>
<p>There&#8217;s no way that $response is false on failure because $ideal_connector->GetIssuerList() returns ErrorRespose Object. So when error is returned by Get $ideal_connector->IssuerList(), you&#8217;ll encounter error in next line i.e. $response->getIssuerFullList() because ErrorResponse object do not have getIssuerFullList().</p>
<p>Once you fetch Issuer Lists (Banks), let end user select his/her bank. HTML code looks like below:</p>
<div class="geshi no html">
<ol>
<li class="li1">
<div class="de1">&lt;form method=&quot;post&quot; action=&quot;&quot; id=&quot;form1&quot; name=&quot;form1&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;td valign=&quot;top&quot; class=&quot;form-label&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;&lt;select name=&quot;bank&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;option value=&quot;&quot;&gt;Select Your Bank&lt;/option&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;?php foreach($banks as $bank): ?&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;&lt;option value=&quot;&lt;?php echo $bank-&gt;issuerID ?&gt;&quot;&gt;&lt;?php echo $bank-&gt;issuerName ?&gt;&lt;/option&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;?php endforeach; ?&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;&lt;/select&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;&lt;/td&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;&lt;td&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;input class=&quot;btn&quot; type=&quot;submit&quot; name=&quot;submit2&quot; value=&quot;Make Your Payment&quot; id=&quot;submit2&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/td&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/form&gt;</div>
</li>
</ol>
</div>
<p>Note: It is suggested to save issuer list in local cache and run DirectoryRequest query once in 24 hour.</p>
<p><strong>Transaction Request</strong><br />
End user will select banks (issuer is what they called) and submit form. Now you have to make Transaction request and redirect issuer&#8217;s website. Code looks like below</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$ideal_connector</span> <span class="sy0">=</span> <span class="kw2">new</span> iDEALConnector<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$response</span> <span class="sy0">=</span> <span class="re1">$ideal_connector</span><span class="sy0">-&gt;</span><span class="me1">RequestTransaction</span><span class="br0">&#40;</span><span class="re1">$issuerId</span><span class="sy0">,</span><span class="re1">$purchaseId</span><span class="sy0">,</span><span class="re1">$amount</span><span class="sy0">,</span><span class="re1">$description</span><span class="sy0">,</span><span class="re1">$entranceCode</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">transactionID</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$url</span> <span class="sy0">=</span> <span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">getIssuerAuthenticationURL</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Location:&quot;</span><span class="sy0">.</span><span class="re1">$url</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>After this, end user login to his bank and make payment. On successful, iDEAL/bank redirect customer to webshop again (you have to define redirect page in config, they call it MerchantReturnURL).</p>
<p>Parameters for RequestTransaction():<br />
IssuerId: the ID of the issuer the consumer has selected from the pick list<br />
PurchaseId: the purchase number according to the online shop’s system<br />
Amount: the amount in whole cents (no decimals; 1 Euro = 100)<br />
Description: the description of the product<br />
EntranceCode: a code determined by the online shop with which the purchase can be<br />
authenticated upon redirection to the online shop (see section 4.2.2 for details).<br />
(optional) ExpirationPeriod: if different from the configured value.<br />
(optional) MerchantReturnURL: if different from the configured value.</p>
<p><strong>Status Request</strong><br />
When iDEAL/bank redirect end user to webshop, it will automatically add two parameters entranceCode and TransactionId. entranceCode is hold by ec variable and TransectionId is hold by trxid variable. So, you have TransactionId (trxid) in landing page, you should make status request. If you do not make status request, payment will not be guaranteed. Following is code to make status request:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$connector</span> <span class="sy0">=</span> <span class="kw2">new</span> iDEALConnector<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$transactionId</span> <span class="sy0">=</span> <span class="re1">$_GET</span><span class="br0">&#91;</span><span class="st0">&#39;trxid&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$response</span> <span class="sy0">=</span> <span class="re1">$connector</span><span class="sy0">-&gt;</span><span class="me1">RequestTransactionStatus</span><span class="br0">&#40;</span><span class="re1">$transactionId</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">errorMessage</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$errorCode</span> <span class="sy0">=</span> <span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">getErrorCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$errorMsg</span> <span class="sy0">=</span> <span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">getErrorMessage</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$consumerMessage</span> <span class="sy0">=</span> <span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">getConsumerMessage</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$status</span> <span class="sy0">=&amp;</span> <span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">getStatus</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="re1">$status</span> <span class="sy0">===</span> IDEAL_TX_STATUS_SUCCESS <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$consumerName</span> <span class="sy0">=</span> <span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">getConsumerName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$consumerAccNumber</span> <span class="sy0">=</span> <span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">getConsumerAccountNumber</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$consumerCity</span> <span class="sy0">=</span> <span class="re1">$response</span><span class="sy0">-&gt;</span><span class="me1">getConsumerCity</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>(Issue request can be made manually from iDEAL Dashboard as well).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krishnasunuwar.com.np/2010/03/ideal-advance-php-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iDEAL Basic (ING Bank) Integration</title>
		<link>http://www.krishnasunuwar.com.np/2010/03/ideal-basic-ing-bank-integration/</link>
		<comments>http://www.krishnasunuwar.com.np/2010/03/ideal-basic-ing-bank-integration/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 14:55:02 +0000</pubDate>
		<dc:creator>Krish</dc:creator>
				<category><![CDATA[Payment Gateway]]></category>
		<category><![CDATA[iDEAL]]></category>
		<category><![CDATA[ING]]></category>

		<guid isPermaLink="false">http://www.krishnasunuwar.com.np/?p=328</guid>
		<description><![CDATA[iDEAL Basic integration method is different from iDEAL Advance. Sumit Bankskota has provided code for basic integration, thanks Sumit. Below is complete code, try on your own:



&#60;html&#62;



&#60;head&#62;



&#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=iso-8859-1&#34;&#62;



&#60;/head&#62;



&#60;body&#62;



&#60;FORM METHOD=&#34;post&#34; ACTION=&#34;https://idealtest.secure-ing.com&#34; name=&#34;frm1&#34; id=&#34;frm1&#34;&#62;



&#60;INPUT type=&#34;hidden&#34; NAME=&#34;merchantID&#34; value=&#34;xxxxxxx&#34; /&#62;



&#60;INPUT type=&#34;hidden&#34; NAME=&#34;subID&#34; value=&#34;0&#34; /&#62;



&#60;INPUT type=&#34;hidden&#34; NAME=&#34;amount&#34; VALUE=&#34;xxxxx&#34; /&#62;



&#60;INPUT type=&#34;hidden&#34; NAME=&#34;purchaseID&#34; VALUE=&#34;xxxx&#34; /&#62;



&#60;INPUT type=&#34;hidden&#34; NAME=&#34;language&#34; VALUE=&#34;nl&#34; /&#62;



&#60;INPUT type=&#34;hidden&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>iDEAL Basic integration method is different from iDEAL Advance. <a href="http://www.ersumit.com/">Sumit Bankskota</a> has provided code for basic integration, thanks Sumit. Below is complete code, try on your own:</p>
<div class="geshi no html">
<ol>
<li class="li1">
<div class="de1">&lt;html&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;head&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/head&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;body&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;FORM METHOD=&quot;post&quot; ACTION=&quot;https://idealtest.secure-ing.com&quot; name=&quot;frm1&quot; id=&quot;frm1&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;INPUT type=&quot;hidden&quot; NAME=&quot;merchantID&quot; value=&quot;xxxxxxx&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;INPUT type=&quot;hidden&quot; NAME=&quot;subID&quot; value=&quot;0&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;INPUT type=&quot;hidden&quot; NAME=&quot;amount&quot; VALUE=&quot;xxxxx&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;INPUT type=&quot;hidden&quot; NAME=&quot;purchaseID&quot; VALUE=&quot;xxxx&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;INPUT type=&quot;hidden&quot; NAME=&quot;language&quot; VALUE=&quot;nl&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;INPUT type=&quot;hidden&quot; NAME=&quot;currency&quot; VALUE=&quot;EUR&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;INPUT type=&quot;hidden&quot; NAME=&quot;description&quot; VALUE=&quot;iDEAL Basic purchase&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;INPUT type=&quot;hidden&quot; NAME=&quot;itemNumber1&quot; VALUE=&quot;xxxx&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;INPUT type=&quot;hidden&quot; NAME=&quot;itemDescription1&quot; VALUE=&quot;xxxxx&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;INPUT type=&quot;hidden&quot; NAME=&quot;itemQuantity1&quot; VALUE=&quot;xxxx&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;INPUT type=&quot;hidden&quot; NAME=&quot;itemPrice1&quot; VALUE=&quot;xxxxx&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;INPUT type=&quot;hidden&quot; NAME=&quot;paymentType&quot; VALUE=&quot;ideal&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;INPUT type=&quot;hidden&quot; NAME=&quot;validUntil&quot; VALUE=&quot; 2009-01-01T12:00:00:0000Z&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;input type=&quot;hidden&quot; name=&quot;PSPID&quot; value=&quot;PSP-id&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;input type=&quot;hidden&quot; name=&quot;accepturl&quot; value=&quot;http://www.hosturl.nl/path/accept_url.php&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;input type=&quot;hidden&quot; name=&quot;declineurl&quot; value=&quot;http://www.hosturl.nl/path/decline_url.php&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;input type=&quot;hidden&quot; name=&quot;exceptionurl&quot; value=&quot;http://www.hosturl.nl/path/exception_url.php&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;input type=&quot;hidden&quot; name=&quot;cancelurl&quot; value=&quot;http://www.hosturl.nl/path/cancel_url.php&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;input type=&quot;hidden&quot; name=&quot;homeurl&quot; value=&quot;http://www.hosturl.nl/home&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;input type=&quot;submit&quot; value=&quot;Bevestig bestelling&quot; id=&quot;submit2&quot; name=&quot;submit2&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/form&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/body&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/html&gt;</div>
</li>
</ol>
</div>
<p>Parameter values in hidden control are hypothetical (dummy). So you need to replace with right values.</p>
<p>For iDEAL Advance, click this <a href="http://www.krishnasunuwar.com.np/2010/03/ideal-payment-ing-bank-ideal-advance-integration/">link</a>.</p>
<p>If you have done for any other Bank or other way, let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krishnasunuwar.com.np/2010/03/ideal-basic-ing-bank-integration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TinyMCE editor &#8211; image upload plugin (Ajax File Manager)</title>
		<link>http://www.krishnasunuwar.com.np/2010/03/tinymce-editor-image-upload-plugin-ajax-file-manager/</link>
		<comments>http://www.krishnasunuwar.com.np/2010/03/tinymce-editor-image-upload-plugin-ajax-file-manager/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 11:18:38 +0000</pubDate>
		<dc:creator>Krish</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Ajax File Manager]]></category>
		<category><![CDATA[File Uploader]]></category>
		<category><![CDATA[TinyMCE]]></category>

		<guid isPermaLink="false">http://www.krishnasunuwar.com.np/?p=300</guid>
		<description><![CDATA[TinyMCE is very nice editor. But it lacks image upload functionality which drives crazy to lot of programmer as enabling image upload facility is tough. I have chance to play around with it and found actually integrating image upload facility is very easy. Among lot of plugin, I find Ajax File Manger is nice.
You can [...]]]></description>
			<content:encoded><![CDATA[<p>TinyMCE is very nice editor. But it lacks image upload functionality which drives crazy to lot of programmer as enabling image upload facility is tough. I have chance to play around with it and found actually integrating image upload facility is very easy. Among lot of plugin, I find Ajax File Manger is nice.</p>
<p>You can download tinyMCE with Ajax File Manager plugin from <a href="http://www.phpletter.com/DOWNLOAD/">http://www.phpletter.com/DOWNLOAD,</a> See under &#8220;Tinymce Ajax File and Image Manager&#8221;. Direct link <a href="http://www.phpletter.com/download_project_version.php?version_id=28">http://www.phpletter.com/download_project_version.php?version_id=28</a>.</p>
<p>A copy of demo TinyMCE with Ajax File Manager can be seen here <a href="http://demo.phpletter.com/tinymce_test.php">http://demo.phpletter.com/tinymce_test.php</a>. View Source and copy code.</p>
<p>Code snippet to enable Ajax File Manager in TinyMCE:</p>
<div class="geshi javascript">
<ol>
<li class="li1">
<div class="de1">tinyMCE.<span class="me1">init</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;mode : <span class="st0">&quot;exact&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;elements : <span class="st0">&quot;ajaxfilemanager&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme : <span class="st0">&quot;advanced&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;plugins : <span class="st0">&quot;table,advhr,advimage,advlink,flash,paste,fullscreen,noneditable,contextmenu&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_buttons1_add_before : <span class="st0">&quot;newdocument,separator&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_buttons1_add : <span class="st0">&quot;fontselect,fontsizeselect&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_buttons2_add : <span class="st0">&quot;separator,forecolor,backcolor,liststyle&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_buttons2_add_before: <span class="st0">&quot;cut,copy,paste,pastetext,pasteword,separator,&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_buttons3_add_before : <span class="st0">&quot;tablecontrols,separator&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_buttons3_add : <span class="st0">&quot;flash,advhr,separator,fullscreen&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_toolbar_location : <span class="st0">&quot;top&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_toolbar_align : <span class="st0">&quot;left&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;extended_valid_elements : <span class="st0">&quot;hr[class|width|size|noshade]&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;file_browser_callback : <span class="st0">&quot;ajaxfilemanager&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;paste_use_dialog : <span class="kw2">false</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_resizing : <span class="kw2">true</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_resize_horizontal : <span class="kw2">true</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;apply_source_formatting : <span class="kw2">true</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;force_br_newlines : <span class="kw2">true</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;force_p_newlines : <span class="kw2">false</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;relative_urls : <span class="kw2">true</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> ajaxfilemanager<span class="br0">&#40;</span>field_name, url, type, win<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> ajaxfilemanagerurl = <span class="st0">&quot;http://&lt;host&gt;/&lt;path_to_ajaxfilemanage&gt;/ajaxfilemanager/ajaxfilemanager.php?editor=tinymce&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">switch</span> <span class="br0">&#40;</span>type<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">case</span> <span class="st0">&quot;image&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">case</span> <span class="st0">&quot;media&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">case</span> <span class="st0">&quot;flash&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">case</span> <span class="st0">&quot;file&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">default</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> fileBrowserWindow = <span class="kw2">new</span> Array<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;fileBrowserWindow<span class="br0">&#91;</span><span class="st0">&quot;file&quot;</span><span class="br0">&#93;</span> = ajaxfilemanagerurl;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;fileBrowserWindow<span class="br0">&#91;</span><span class="st0">&quot;title&quot;</span><span class="br0">&#93;</span> = <span class="st0">&quot;Ajax File Manager&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;fileBrowserWindow<span class="br0">&#91;</span><span class="st0">&quot;width&quot;</span><span class="br0">&#93;</span> = <span class="st0">&quot;782&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;fileBrowserWindow<span class="br0">&#91;</span><span class="st0">&quot;height&quot;</span><span class="br0">&#93;</span> = <span class="st0">&quot;440&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;fileBrowserWindow<span class="br0">&#91;</span><span class="st0">&quot;close_previous&quot;</span><span class="br0">&#93;</span> = <span class="st0">&quot;no&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;tinyMCE.<span class="me1">openWindow</span><span class="br0">&#40;</span>fileBrowserWindow, <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;window : win,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;input : field_name,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;resizable : <span class="st0">&quot;yes&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;inline : <span class="st0">&quot;yes&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;editor_id : tinyMCE.<span class="me1">getWindowArg</span><span class="br0">&#40;</span><span class="st0">&quot;editor_id&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p><strong>Analysis of code</strong>:<br />
Line number 15:</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1">file_browser_callback : <span class="st0">&quot;ajaxfilemanager&quot;</span></div>
</li>
</ol>
</div>
<p>The value &#8216;ajaxfilemanager&#8217; defines the name of the Javascript function which will be called every time a user clicks the browse button in one of the dialogue windows. You can see function definition start from line number 25 to 54. This function opens a new window calling a URL tailored (See line number 26).</p>
<p><strong>Important Points</strong><br />
Don&#8217;t forget to set upload directory path in tiny_mce/plugins/ajaxfilemanager/inc/config.base.php. It should be relative path.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">define</span><span class="br0">&#40;</span><span class="st0">&#39;CONFIG_SYS_DEFAULT_PATH&#39;</span><span class="sy0">,</span> <span class="st0">&#39;../../../../../uploads/&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">define</span><span class="br0">&#40;</span><span class="st0">&#39;CONFIG_SYS_ROOT_PATH&#39;</span><span class="sy0">,</span> <span class="st0">&#39;../../../../../uploads/&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Above folder should have 777 permission. Also set 777 permission to session folder folder, tiny_mce/plugins/ajaxfilemanager/session.</p>
<p><strong>Alternatively you can try following uploader</strong></p>
<p>http://dustweb.ru/log/projects/tinymce_images/</p>
<p>Cofigure:</p>
<ol>
<li>Give class name to your editor e.g. class=&#8221;tiny&#8221;</li>
<li>Add following<br />
In list of plugins, add images<br />
add editor_selector : &#8220;tiny&#8221;,<br />
In list of button, add images</li>
<li> Change DIR_IMAGES and DIR_FILES path on tiny_mce/plugins/images/connector/php/config.php to suit your location. Upload folder should have 777 permission.
</ol>
<p>Actual configuration looks like (See images on line number 8 and 12):</p>
<div class="geshi javascript">
<ol>
<li class="li1">
<div class="de1">tinyMCE.<span class="me1">init</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// General options</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;mode : <span class="st0">&quot;textareas&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme : <span class="st0">&quot;advanced&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//plugins : &quot;safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount&quot;,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;editor_selector : <span class="st0">&quot;tiny&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;plugins : <span class="st0">&quot;safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,images,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// Theme options</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_buttons1 : <span class="st0">&quot;save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_buttons2 : <span class="st0">&quot;cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,images, cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_buttons3 : <span class="st0">&quot;tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_buttons4 : <span class="st0">&quot;insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_toolbar_location : <span class="st0">&quot;top&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_toolbar_align : <span class="st0">&quot;left&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_statusbar_location : <span class="st0">&quot;bottom&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;theme_advanced_resizing : <span class="kw2">true</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// Example content CSS (should be your site CSS)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;content_css : <span class="st0">&quot;css/content.css&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// Drop lists for link/image/media/template dialogs</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;template_external_list_url : <span class="st0">&quot;lists/template_list.js&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;external_link_list_url : <span class="st0">&quot;lists/link_list.js&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;external_image_list_url : <span class="st0">&quot;lists/image_list.js&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;media_external_list_url : <span class="st0">&quot;lists/media_list.js&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// Replace values for the template plugin</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;template_replace_values : <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; username : <span class="st0">&quot;Some User&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; staffid : <span class="st0">&quot;991234&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krishnasunuwar.com.np/2010/03/tinymce-editor-image-upload-plugin-ajax-file-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iDEAL payment &#8211; ING Bank &#8211; iDEAL Advance Integration</title>
		<link>http://www.krishnasunuwar.com.np/2010/03/ideal-payment-ing-bank-ideal-advance-integration/</link>
		<comments>http://www.krishnasunuwar.com.np/2010/03/ideal-payment-ing-bank-ideal-advance-integration/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 10:13:27 +0000</pubDate>
		<dc:creator>Krish</dc:creator>
				<category><![CDATA[Payment Gateway]]></category>
		<category><![CDATA[iDEAL]]></category>
		<category><![CDATA[ING]]></category>

		<guid isPermaLink="false">http://www.krishnasunuwar.com.np/?p=302</guid>
		<description><![CDATA[It&#8217;s always not easy to work with payment gateway service as each gateway service has different of configuration options, parameters. Lastly, I found iDEAL as weired/tough. You will hardly find documentation in English. So, I thought share idea how I did configure iDEAL Advance using PHP (ING bank).
In summery, it takes following steps to setup [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s always not easy to work with payment gateway service as each gateway service has different of configuration options, parameters. Lastly, I found iDEAL as weired/tough. You will hardly find documentation in English. So, I thought share idea how I did configure iDEAL Advance using PHP (ING bank).</p>
<p>In summery, it takes following steps to setup iDEAL Advance:</p>
<ol>
<li>Registration</li>
<li>Integration</li>
<li>Run mandatory test cases in iDEAL test environment</li>
<li>iDEAL approve test cases and contract (you should sign up contract)</li>
<li>Live account has to be activated (See below Mandatory Test)</li>
<li>So, your live sale can be done in iDEAL.</li>
</ol>
<p>Follow details steps below:</p>
<ol>
<li>Login to iDEAL/ING Dashboard (Given below are URL for dashboard)<br />
Test environment: https://idealtest.secure-ing.com<br />
Production environment: https://ideal.secure-ing.com<br />
<strong>Note</strong>: Merchant ID and Login name is same for both test and live. But password is different for live and test.</li>
<li>Once you login, first thing you need to go to Document link. There you can download documentation and Advance integration code. Documentation is available in English and Dutch.<br />
Important Downloads:<br />
a) <a href="http://www.krishnasunuwar.com.np/downloads/iDEAL_General_EN_v2.1.pdf">iDEAL General – Introduction and procedure</a> (Click on link to get manual)<br />
b) <a href="http://www.krishnasunuwar.com.np/downloads/iDEAL_Advanced_PHP_EN_V2.2.pdf">iDEAL Advanced Integration Manual PHP</a> (Click on link to get manual)<br />
c) iDEAL Advanced Integration Code PHP (Sorry,  no links, ups!!)<br />
<strong>Note:</strong> You should be aware about registration process. Look &#8220;Registration process (2)&#8221; in iDEAL General – Introduction and procedure<br />
<img class="alignnone" title="iDEAL Dashboard (before account is activated)" src="http://i70.photobucket.com/albums/i88/s2krish/blog/ideal_dashboard.jpg" alt="" width="500" height="244" /></li>
<li>To integrate Advance iDEAL in PHP, follow instruction in &#8220;iDEAL Advanced Integration Manual PHP&#8221;, there are lot of steps you should follow carefully. In summery:<br />
1) Generate private key using openSSL<br />
2) Generate certificate using private key.<br />
3) Upload certificate to configuration (Login to iDEAL dashboard -&gt; Go to sign up process -&gt; Click on Configuration tab)<br />
4) Change params value in config.conf which available in /includes/security.<br />
5) Also you should edit iDEALConnector_config.inc.php if you move security folder then then default.</li>
<li>Upload scripts (PHP Advanced Code)</li>
<li>Run 6 tests in iDEAL test environment. Wait for iDEAL response on your test.  (See below Mandatory Test)</li>
<li>iDEAL has to set live account activate. Now your gateway is ready!!</li>
</ol>
<p><strong>Mandatory Test</strong>:</p>
<p>You should run mandatory test before you can set iDEAL live. Look &#8220;Registration process (2)&#8221; in iDEAL General – Introduction and procedure. It&#8217;s not easy to setup online store to configure to meet test suite requirement. Hence, you can use iDEAL Tester, which you can download from <a href="http://www.ideal-simulator.nl/ideal-professional-tester.html">http://www.ideal-simulator.nl/ideal-professional-tester.html</a>.</p>
<p>Once you download scripts, make changes on idealprofessional.cfg.php file which is located inside library folder. Upload scripts to server and access it http://&lt;host&gt;/ideal-professional-tester/index.php<br />
<img class="alignnone" title="iDEAL tester screen" src="http://i70.photobucket.com/albums/i88/s2krish/blog/ideal_tester-1.jpg" alt="" width="500" height="420" /></p>
<p>You can confirm tests status from iDEAL dashboard.</p>
<ol>
<li>Login to Dashboard (test and live has different dashboard)</li>
<li>Click on Sign up Process</li>
<li>Click on Status (You&#8217;ll see following screen if test successes).
<p><div class="wp-caption alignnone" style="width: 510px"><img src="http://i70.photobucket.com/albums/i88/s2krish/blog/ideal_test_result.jpg" alt="iDEAL mandatory test results" width="500" height="218" /><p class="wp-caption-text">iDEAL mandatory test results</p></div></li>
<li>Once you finish test suits, iDEAL will activate live account. It may take several hours, so I suggest you to call their support dept. and ask them to activate (it speed up).</li>
<li>Once they activate your live account, your live dashboard looks different as given below.</li>
</ol>
<p><img src="http://i70.photobucket.com/albums/i88/s2krish/blog/ideal_live_activate.jpg" alt="iDEAL live dashboard (after activated)" /><br />
<strong>Note</strong>: You should run this test on same domain where your online store will resides.</p>
<p>Note: this post describe process how to integrate iDEAL Adanced (ING Bank) using PHP APIs.</p>
<p>Configuring iDEAL basic is very easy which works with post method by redirecting URL to their gateway.</p>
<p>If you have done for any other Bank or other way, let me know.</p>
<p><strong>Update</strong>: for iDEAL Basic click this <a href="http://www.krishnasunuwar.com.np/2010/03/ideal-basic-ing-bank-integration/">link</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.krishnasunuwar.com.np/2010/03/ideal-payment-ing-bank-ideal-advance-integration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Asterisk GUI, accessing from browser</title>
		<link>http://www.krishnasunuwar.com.np/2010/02/asterisk-gui-accessing-from-browser/</link>
		<comments>http://www.krishnasunuwar.com.np/2010/02/asterisk-gui-accessing-from-browser/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 06:57:28 +0000</pubDate>
		<dc:creator>Krish</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[IP PBX]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.krishnasunuwar.com.np/?p=288</guid>
		<description><![CDATA[I Installed Asterisk GUI 2.0 and configured it successfully,
I check with 



$ make checkconfig.



Got following output:

 --- Checking Asterisk configuration to see if it will support the GUI ---
* Checking for http.conf: OK
* Checking for manager.conf: OK
* Checking if HTTP is enabled: OK
* Checking if HTTP static support is enabled: OK
* Checking if manager is [...]]]></description>
			<content:encoded><![CDATA[<p>I Installed Asterisk GUI 2.0 and configured it successfully,</p>
<p>I check with </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ <span class="kw2">make</span> checkconfig.</div>
</li>
</ol>
</div>
<p>Got following output:</p>
<pre>
 --- Checking Asterisk configuration to see if it will support the GUI ---
* Checking for http.conf: OK
* Checking for manager.conf: OK
* Checking if HTTP is enabled: OK
* Checking if HTTP static support is enabled: OK
* Checking if manager is enabled: OK
* Checking if manager over HTTP is enabled: OK
 --- Everything looks good ---
 * GUI should be available at http://&lt;host&gt;:8088/asterisk/static/config/index.html [^] 

 * Note: If you have bindaddr=127.0.0.1 in /etc/asterisk/http.conf
   you will only be able to visit it from the local machine. 

   Example: http://localhost:8088/asterisk/static/config/index.html [^]

 * The login and password should be an entry from /etc/asterisk/manager.conf
   which has 'config' permission in read and write. For example:

    [admin]
    secret = mysecret2820
    read = system,call,log,verbose,command,agent,config
    write = system,call,log,verbose,command,agent,config

 --- Good luck! ---
</pre>
<p>In httpd.conf, I have:</p>
<pre>
[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
enablestatic=yes
</pre>
<p>In manager.conf, I have: </p>
<pre>
enabled = yes
webenabled = yes
port = 5038
bindaddr = 0.0.0.0

[astercc]
secret = astercc
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user
deny=0.0.0.0/0.0.0.0
permit=192.168.1.253/255.255.255.0
</pre>
<p>
But, when I tried to access it</p>
<pre>
http://&lt;host&gt;:8088/asterisk/static/config/index.html [^] or
http://&lt;ip&gt;:8088/asterisk/static/config/index.html [^]
</pre>
<p>
It doesn&#8217;t work. I get 404 error. Instead, you should try
</p>
<pre>
http://&lt;host&gt;:8088/static/config/index.html
http://&lt;ip&gt;:8088/static/config/index.html
</pre>
<p>I had nice discussion on asterisk IRC, it would be nice to have http://&lt;host&gt;:8088 redirected to actual URL. Why should user type that long/confusing URL.</p>
<p><strong>Asterisk GUI</strong></p>
<p>Asterisk GUI 2.0 is still in development. It&#8217;s not easy to install. As of current development, I manage to install in following way:</p>
<ol>
<li>Install DAHDi. I gave 777 permission to DAHDi to install (otherwise make all do not work)</li>
<li>Once you install DAHDi, you can access GUI from browser</li>
<li>But there will be permission issue so. I again did $sudo chmod -R 777 /etc/asterisk and $sudo chmod -R 777 /var/lib/asterisk/static-http/config</li>
<li>Run Asterisk GUI from browser. But it will take lot of time. It says, checking permission for gui folder, detecting hardware. After waiting more then 5/7 minute, you&#8217;ll get page loaded.</li>
</ol>
<p><strong>Important</strong>: I have given 777 permission because I was testing in local box and I was desperate to see GUI. Don&#8217;t do 777 stupidity if you are in live box.</p>
<p>I tried to add dialplan and users but it does not save.<br />
<img src="http://i70.photobucket.com/albums/i88/s2krish/blog/asterisk_gui.jpg" title="Asterisk GUI 2.0"></p>
]]></content:encoded>
			<wfw:commentRss>http://www.krishnasunuwar.com.np/2010/02/asterisk-gui-accessing-from-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl beginner &#8211; install and run hello world, MySQL test</title>
		<link>http://www.krishnasunuwar.com.np/2010/02/perl-beginner-install-and-run-hello-world/</link>
		<comments>http://www.krishnasunuwar.com.np/2010/02/perl-beginner-install-and-run-hello-world/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 13:10:35 +0000</pubDate>
		<dc:creator>Krish</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.krishnasunuwar.com.np/?p=266</guid>
		<description><![CDATA[I am seasoned PHP programmer, been around ten years I am coding on PHP. Although I learn and tried many different programming languages, I always scare to give a try to Perl. I was in impression that Perl is difficult language so never get confident to try it, or never can arrange time for it. [...]]]></description>
			<content:encoded><![CDATA[<p>I am seasoned PHP programmer, been around ten years I am coding on PHP. Although I learn and tried many different programming languages, I always scare to give a try to Perl. I was in impression that Perl is difficult language so never get confident to try it, or never can arrange time for it. But, today as I was working on Asterisk for VoIP system, there&#8217;s was no choice left, but Perl.</p>
<p>I gave first try today in Ubuntu. It wasn&#8217;t that bad as I heard. Actually I was wrong about Perl, it was proved.</p>
<p>Below is how, I tried first hello world and first database application
<p><strong>Install Perl</strong></p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ <span class="kw2">sudo</span> apt-get <span class="kw2">install</span> <span class="kw2">perl</span></div>
</li>
</ol>
</div>
<p>&nbsp;</p>
<p>Don&#8217;t worry, if Perl is already installed, it do nothing. If you have Ubuntu server edition, Perl is already there.</p>
<p>&nbsp;</p>
<p>Create directory called perl_test. Create perl_test.pl file and save following content.</p>
<div class="geshi no perl">
<ol>
<li class="li1">
<div class="de1"><span class="co1">#!/usr/bin/perl</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#simple perl program to print the user input</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">print</span> <span class="br0">&#40;</span><span class="st0">&quot;Hello world! test goes this<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$inputline</span>=<span class="re4">&lt;stdin&gt;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">print</span> <span class="br0">&#40;</span><span class="re0">$inputline</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>&nbsp;</p>
<p>
Save file named as perl_test.pl and run following command.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ <span class="kw2">sudo</span> <span class="kw2">chmod</span> +x perl_test.pl</div>
</li>
<li class="li1">
<div class="de1">$ .<span class="sy0">/</span>perl_test.pl</div>
</li>
</ol>
</div>
<p> &nbsp;</p>
<p>
<strong>Database Test:</strong><br />
Create perl_db.pl file and save following content.</p>
<div class="geshi no perl">
<ol>
<li class="li1">
<div class="de1"><span class="co1">#!/usr/bin/perl</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">use</span> strict;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">use</span> warnings;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">use</span> DBI;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">my</span> <span class="re0">$username</span>=<span class="st0">&#39;test&#39;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">my</span> <span class="re0">$pass</span>=<span class="st0">&#39;test&#39;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">my</span> <span class="re0">$db</span>=<span class="st0">&#39;test&#39;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">my</span> <span class="re0">$dbh</span> = DBI-<span class="sy0">&gt;</span><span class="me1">connect</span><span class="br0">&#40;</span> <span class="st0">&quot;dbi:mysql:$db&quot;</span>, <span class="re0">$username</span>, <span class="re0">$pass</span>, <span class="br0">&#123;</span> <span class="st0">&#39;PrintError&#39;</span> =<span class="sy0">&gt;</span> <span class="nu0">1</span>, <span class="st0">&#39;RaiseError&#39;</span> =<span class="sy0">&gt;</span> <span class="nu0">1</span> <span class="br0">&#125;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">my</span> <span class="re0">$sql</span>=<span class="st0">&#39;select * from test&#39;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">my</span> <span class="re0">$sql_handle</span>=<span class="re0">$dbh</span>-<span class="sy0">&gt;</span><span class="me1">prepare</span><span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$sql_handle</span>-<span class="sy0">&gt;</span><span class="me1">execute</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">my</span> <span class="re0">@data</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">while</span> <span class="br0">&#40;</span><span class="re0">@data</span>=<span class="re0">$sql_handle</span>-<span class="sy0">&gt;</span><span class="me1">fetchrow_array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">print</span> <span class="kw3">join</span><span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\n</span>&quot;</span>,<span class="re0">@data</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p> &nbsp; </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ <span class="kw2">sudo</span> <span class="kw2">chmod</span> +x perl_db.pl</div>
</li>
<li class="li1">
<div class="de1">$ <span class="kw2">sudo</span> .<span class="sy0">/</span>perl_db.pl</div>
</li>
</ol>
</div>
<p> &nbsp; </p>
<p>Make sure user test with password test and database test exits. And it has test table.</p>
<p> &nbsp; <br />
Haurry!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krishnasunuwar.com.np/2010/02/perl-beginner-install-and-run-hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk Installation and Configuration Guide</title>
		<link>http://www.krishnasunuwar.com.np/2010/02/asterisk-installation-and-configuration-guide/</link>
		<comments>http://www.krishnasunuwar.com.np/2010/02/asterisk-installation-and-configuration-guide/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 12:50:27 +0000</pubDate>
		<dc:creator>Krish</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[IP PBX]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.krishnasunuwar.com.np/?p=263</guid>
		<description><![CDATA[I have installed Asterisk 1.6.2 with Ubuntu
First install required modules in Ubuntu which are required by Asterisk, it&#8217;s very simple.



$ sudo apt-get install build-essential libssl-dev libncurses5-dev


$ sudo apt-get install libxml2-dev



Download Asterisk and lipri from asterisk.org
Make and Install lipri



$ cd lipri


$ sudo make


$ sudo make install



Make and install Asterisk:



$ cd asterisk


$ sudo ./configure


$ sudo make


$ sudo make [...]]]></description>
			<content:encoded><![CDATA[<p>I have installed Asterisk 1.6.2 with Ubuntu</p>
<p>First install required modules in Ubuntu which are required by Asterisk, it&#8217;s very simple.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ <span class="kw2">sudo</span> apt-get <span class="kw2">install</span> build-essential libssl-dev libncurses5-dev</div>
</li>
<li class="li1">
<div class="de1">$ <span class="kw2">sudo</span> apt-get <span class="kw2">install</span> libxml2-dev</div>
</li>
</ol>
</div>
<p>Download Asterisk and lipri from asterisk.org</p>
<p>Make and Install lipri</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ <span class="kw3">cd</span> lipri</div>
</li>
<li class="li1">
<div class="de1">$ <span class="kw2">sudo</span> <span class="kw2">make</span></div>
</li>
<li class="li1">
<div class="de1">$ <span class="kw2">sudo</span> <span class="kw2">make</span> <span class="kw2">install</span></div>
</li>
</ol>
</div>
<p>Make and install Asterisk:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ <span class="kw3">cd</span> asterisk</div>
</li>
<li class="li1">
<div class="de1">$ <span class="kw2">sudo</span> .<span class="sy0">/</span>configure</div>
</li>
<li class="li1">
<div class="de1">$ <span class="kw2">sudo</span> <span class="kw2">make</span></div>
</li>
<li class="li1">
<div class="de1">$ <span class="kw2">sudo</span> <span class="kw2">make</span> <span class="kw2">install</span></div>
</li>
</ol>
</div>
<p>To install sample configuration file, do </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ <span class="kw2">sudo</span> <span class="kw2">make</span> sample</div>
</li>
</ol>
</div>
<p><img src="http://i70.photobucket.com/albums/i88/s2krish/blog/asterisk_configured.jpg" title="Asterisk Configuration"><br />
Asterisk Configuration (if Asterisk successfully complied, above screens should be displayed)<br />
</p>
<p>
<img src="http://i70.photobucket.com/albums/i88/s2krish/blog/asterisk_install.jpg" title="Asterisk Make"><br />
If Asterisk installed, you&#8217;ll get screen like above
</p>
<p><strong>Configure</strong><br />
Configure sip.conf<br />
Configure extension.conf
</p>
<p>Here&#8217;s example of configuring extension 203<br />
Edit sip.conf</p>
<pre>
[general]
port=5060
bindaddr=0.0.0.0
context=home
tos=0x18
nat=yes
externip=YOUR PUBLIC IP
disallow=all
allow=g729
allow=gsm
allow=ulaw

[203]
type=friend
host=dynamic
context=home
secret=passwordhere
callerid=CIA FBI ATF <1-555-555-5555>
dtmfmode=rfc2833
nat=yes
mailbox=203@home
disallow=all
allow=ulaw
</pre>
</p>
<p>Create dialplan, edit extension.conf</p>
<pre>
[home]
exten => 55,2,Echo
exten => 203,1,Dial(SIP/203,60)
</pre>
</p>
<p> &nbsp; </p>
<p><strong>Start Asterisk server</strong></p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">$ asterisk -vvvgc</div>
</li>
</ol>
</div>
<p> &nbsp;</p>
<p>Download any softphone (I made test with X-Lite). It should look like below:</p>
<p><img src="http://i70.photobucket.com/albums/i88/s2krish/blog/xlite-sip-info.jpg" title="Configure X-lite, softphone"><br />
Configure X-lite</p>
<p><img src="http://i70.photobucket.com/albums/i88/s2krish/blog/xlite-sip-registered.jpg" title="X-lite, softphone"><br />
X-lite is ready to use</p>
<p>
<strong>More References</strong>:</p>
<ul>
<li><a href="http://www.asterisk.org/downloads">Asterisk Download</a></li>
<li><a href="http://resources.zdnet.co.uk/articles/tutorials/0,1000002006,39288964,00.htm">Designing a basic Asterisk VoIP system for SIP clients</a></li>
<li><a href="http://www.asteriskguru.com/tutorials/">Asterisk Tutorial</a>, <a href="http://www.asteriskguru.com/tutorials/asterisk_installation_compilation_debian.html">Installation on Debian</a></li>
<li><a href="http://jeremy-mcnamara.com/asterisk/how-to-configure-asterisk/">How To Configure Asterisk: Your First Installation</a></li>
<li><a href="http://phplinuxandthelike.wordpress.com/2007/09/04/basic-asterisk-configuration/">Basic Asterisk Configuration</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.krishnasunuwar.com.np/2010/02/asterisk-installation-and-configuration-guide/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Asterisk &#8211; Custom Telephony Solutions</title>
		<link>http://www.krishnasunuwar.com.np/2010/02/asterisk-custom-telephony-solutions/</link>
		<comments>http://www.krishnasunuwar.com.np/2010/02/asterisk-custom-telephony-solutions/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 14:26:56 +0000</pubDate>
		<dc:creator>Krish</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[IP PBX]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.krishnasunuwar.com.np/?p=260</guid>
		<description><![CDATA[Ship of coffee (A) is equal to tough assignment (B). Guess when you have (A∪B). That&#8217;s U i.e. You own universe. I had excellent day today. I had chance to review Laws of Algebra of Sets and I had assignment to build telephone PBX in Linux box, on top Coffee is always on side. I&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>Ship of coffee (A) is equal to tough assignment (B). Guess when you have (A∪B). That&#8217;s U i.e. You own universe. I had excellent day today. I had chance to review Laws of Algebra of Sets and I had assignment to build telephone PBX in Linux box, on top Coffee is always on side. I&#8217;ll get bored otherwise.</p>
<p>What is Asterisk? Asterisk is *, means everything. It may sound like lame definition here, but trust me you gonna believe it. I am not going to refer you to two handful links <a href="www.asterisk.org">www.asterisk.org</a> and <a href="http://en.wikipedia.org/wiki/Asterisk_(PBX)">Wikipedia entry</a>. So, Asterisk supports all most all Telephony Protocols and it&#8217;s framework and gives you power to customize everything, so as it is *.</p>
<p>Scenario, you want to run call center and you have telemarketers around world &#8211; some like to go vacation in Palm Island and work from sunny beach with wireless connection, some want to work from home while feeding their baby and some want to work while traveling in odd hours. Can you give that level of flexibility, may be no, may be YES. On top of that, as boss you still want to be sure that everyone is working and be able to monitor them.</p>
<p>Here&#8217;s how Asterisk can help, whole days I am was designing solution over it (tough assignment, yet interesting). You need telephony server (IP PBX) and SIP client. You can configure it to interoperate verity of network like VoIP or PSTN. I would describe general concept rather not technical aspect. For technical how-tos, may be I post other blogs in coming days.</p>
<p><strong>Server</strong>: <a href="http://www.asterisk.org/downloads">Download Asterisk</a> and install, it&#8217;s very easy. Get source, configure, make and make install! Connect PSTN line with suitable hardware (<a href="http://www.digium.com">Digium </a>provide sophisticated hardwares). You done, it is your IP PBX or telephony server.</p>
<p><strong>Configure Extensions</strong>: Extensions! yes, they are PBX extensions. You can assign extension number and you can set authentication. Usually you can tap each telemarketer with extension number. So you can monitor each of them, log their telephone record (known as CDR).</p>
<p><strong>Configure Dialplan</strong>: Dialplan is kind of rule how do you want handle inbound and outbound call. For example, you want to redirect call to voicemail if not answered in 2 minute, or you want to play music/instruction after 5 second.</p>
<p><strong>SIP clients</strong>: SIP clients are usually <a href="http://en.wikipedia.org/wiki/Softphone">Softphones</a>. Your telemarketer has to use softphone to make call. SIP client is extension, you can say, as each SIP client is allocated a extension number. So, each of SIP client connects to IP PBX server and make call. While making call, SIP client will be authenticated. Authentication credential will be as of defined while configuring extension.</p>
<p>So, you see how you can keep track hundreds of telemarketers call. Give one extension to each telemarketer and give them username and password as set in extension. When a telemarketer makes from softphone, he has to provide user name and password. In this scenario, I give you my own kind of mathematic formula, SIP client=extension number=telemarketer.</p>
<p>This is just great!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krishnasunuwar.com.np/2010/02/asterisk-custom-telephony-solutions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>phpBricks alpha preview</title>
		<link>http://www.krishnasunuwar.com.np/2010/01/phpbricks-alpha-preview/</link>
		<comments>http://www.krishnasunuwar.com.np/2010/01/phpbricks-alpha-preview/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 05:26:59 +0000</pubDate>
		<dc:creator>Krish</dc:creator>
				<category><![CDATA[phpBricks]]></category>
		<category><![CDATA[MVC framework]]></category>

		<guid isPermaLink="false">http://www.krishnasunuwar.com.np/?p=247</guid>
		<description><![CDATA[phpBricks is MVC framework for PHP programming language. It&#8217;s the framework so it may not be the way you want, but it&#8217;s the way I/we have found right. In early stage of my programming career, I see lot of resources and time was consuming to write same piece of validation code and I decide to save that [...]]]></description>
			<content:encoded><![CDATA[<p>phpBricks is MVC framework for PHP programming language. It&#8217;s the framework so it may not be the way you want, but it&#8217;s the way I/we have found right. In early stage of my programming career, I see lot of resources and time was consuming to write same piece of validation code and I decide to save that time by writing piece of code which can be reused. After then, I see series of such things one after another, like:</p>
<ol>
<li>Mix/Max of php and HTML code, which is pain in ASS to UI programmer, CSS guys.</li>
<li>Junk and vulnerable SQL statement, no way to make site secure.</li>
<li>Bunch of configuration variables and constants on config.php file.</li>
<li>Unmanaged structure of files, functions and classes.</li>
<li>Not proper modular structure which cause hard to maintenance application.</li>
<li>Personal interest of variable, function naming &#8211; lots of garbage and junk codes.</li>
<li>Writing and re-writing of code for same function within one projects and in multiple project.</li>
<li>No common standard and no central key. Different flow of each function/module, you never can say start and end when it comes to debugging.</li>
<li>And, I am seeing lot more others day by day&#8230;</li>
</ol>
<p>So, on process of eliminating those stuffs, I keep enhancing that piece of code with feedback and direct involvement of some handful colleague, phpBricks is made.</p>
<p>I understand it is same pain for all programmers until you know such framework exists (I bet hundreds of such framework exists, just google it). So here, it is my privileges to share that piece of code, now so called phpBricks. I have uploaded demo copy, naming alpha release at <a title="phpBricks" href="http://sourceforge.net/projects/phpbricks/">SourceForge</a>. I have been using it to build many commercial softwares. But I do not recommend you as this is alpha release and no sufficient resource will be found. If you want to use it, challenge the risk.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krishnasunuwar.com.np/2010/01/phpbricks-alpha-preview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy New Year</title>
		<link>http://www.krishnasunuwar.com.np/2010/01/happy-new-year/</link>
		<comments>http://www.krishnasunuwar.com.np/2010/01/happy-new-year/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 15:55:54 +0000</pubDate>
		<dc:creator>Krish</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.krishnasunuwar.com.np/?p=240</guid>
		<description><![CDATA[Happy New Year to you all!
Now you see, it is already been a year. They call nerd or geek in silicon valley but I still don&#8217;t know what they call in Nepal, a year of life passed being that.
Looking back year &#8211; one year of career as Technical Manager at IT Outsourcing Asia was great [...]]]></description>
			<content:encoded><![CDATA[<p>Happy New Year to you all!</p>
<p>Now you see, it is already been a year. They call nerd or geek in silicon valley but I still don&#8217;t know what they call in Nepal, a year of life passed being that.</p>
<p>Looking back year &#8211; one year of career as Technical Manager at <a title="IT Outsourcing Asia" href="http://www.itoutsourcingasia.com/" target="_blank">IT Outsourcing Asia</a> was great time. With lots of ups and downs, now we reach at a point and I am happy to be part of it. Leading people is always tough job but leading nerds by nerd is far more tough. It is hard sometimes, but still go smooth when we have nice colleague.</p>
<p>phpBricks is great thing, I have made this year. Rest making client&#8217;s project success is remained on my focus. Diving into Liferay, JIRA, Magento, Ubuntu box and couple of open source softwares were interesting part.</p>
<p>I don&#8217;t think I made a milestone decision in 2009, I would say I am in process. In the later part of year, I liking location based social network, real time data streams, web mining and travel related stuffs. Going back to university is priority in 2010. There are lot of things hanging on mind, starting one them is 2nd priority.</p>
<p>In 2009, beautiful and nice people were always there to cheer good time and to cheer up on bad times. All they are part of life, without them it is incomplete. Thank you guys from bottom of my heart! There&#8217;s bitter truth also, sometimes best people fake you. You can do nothing but just fuck them back and move on, probably the best solution. Life remained cool, lot of parties and fun time were there. I believe I am gonna miss it in 2010! and I want miss it although that&#8217;s gonna be tough. I see people changing and time changing. It will not sound odd to say I am part of it. Whatever, the year of 2010 will be more promising, it should be!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krishnasunuwar.com.np/2010/01/happy-new-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
