国内关于这方面资料很少,当时做的时候只好到一些英文网站上找了点资料,然后东问西问,也算是做出来了。系统运行到现在也有2个月了,还没发现bug,所以也想把一些方法写出来,给即将做这个的朋友一点帮助。看着中文摸索总比看全英文的要好的多吧。
首先说说去Authorize.net和EPayLink认证信用卡过程的区别。最大的区别就在于Authorize.net认证的整个过程都在本地网站进行,也就是说,浏览者浏览的页面始终是当前他浏览的网站的,而没有跳转到Authorize.net去。而EPayLink正好相反,在输入信用卡信息的时候,页面会跳转到EPayLink去,认证通过再返回原来的站点。其他就没有什么明显区别了。
对于这个区别,所以在编写程序上也有很多不同。去Authorize.net认证的程序较麻烦,因为不会跳转出去,所以用到了Curl函数库去一个指定的页面发送一些参数然后接受返回的参数,再根据这些返回的参数判断认证是否成功,并且可以得到成功与否的原因参数。具体的程序段如下:
/* Initialize CURL */
$AuthNetConn = curl_init();
/* Set CURL Options */
curl_setopt($AuthNetConn, CURLOPT_URL, $this->authNetURL);
curl_setopt($AuthNetConn, CURLOPT_USERAGENT, $this->UserAgent);
curl_setopt($AuthNetConn, CURLOPT_POST, 1);
curl_setopt($AuthNetConn, CURLOPT_POSTFIELDS, $data);
curl_setopt($AuthNetConn, CURLOPT_RETURNTRANSFER, 1);
/* Execute CURL and return values */
$return_string = curl_exec($AuthNetConn);
if ($return_string == NULL) {
echo "Error:<br>";
echo curl_errno($AuthNetConn) . " - " . curl_error($AuthNetConn) . "<br>";
}
/* Close connection to Secure Server */
curl_close ($AuthNetConn);
由于整个类和调用这个类的对象的行数太多,所以就不在此贴出,如果有需要的朋友可以留言,我可以发给你。
EPayLink在程序上就要简单的多。只要把所有需要的参数名与值加在指定的连接后面,然后运行这个连接就会跳转到EPayLink去。关于这个过程,无论是用Form提交或者是重定向都可以做到。然后整个认证过程都在EPayLink完成,最后会根据是否成功返回到两个不同的页面,这两个页面都是根据先前程序跳转到EPayLink时所传的参数决定。
关于这两个payment gateway所需要的参数及返回的参数的意义,因为很多就不一一列出了。这篇文章目的在与对过程作的大概描述,希望对要做相似项目的朋友有点帮助^^