爱程序网

【网站支付PHP篇】thinkPHP集成汇潮支付(ecpss)

来源: 阅读:

系列目录

支付宝集成:http://www.cnblogs.com/nerve/p/3437879.html

 

系列说明

最近在帮朋友的系统安装支付模块(兑换网站积分),现在总结一些开发心得,希望对大家有用。这个系列会讲以下第三方支付平台的集成:

以后有更新其他平台也会写出来。

这次的支付系统是用来网站的积分充值。为了简化,这里采用的是1元RMB=1个网站积分的兑换。

这里,不会描述怎么申请支付平台的收款帐号。

开发环境

ThinkPHP 3.1.2 (我用的是标准版)

win7 + Apache2

mysql 5.1


汇潮支付有自己的接口文档http://download.csdn.net/detail/ssrc0604hx/6635299

 

为了方便使用,我将此支付接口封装成Ecpss.php, 放在 ThinkPhp 的Vendor目录下:

在此类中,填写相应的商户号跟MD5Key(这些在申请了 汇潮支付后,都可以从汇潮网站得到的)。

然后在Ecpss类中,封装了html form 的生成,可以直接跳转到支付页面,下面是Ecpss.php的代码:

<?php/** * Ecpss.php *============================== *汇潮支付时用的库 *============================== * by:0604hx  1053214511@qq.com * Nov 20, 2013  9:02:58 PM */ class Ecpss{ 	/* 	 * 支付请求的配置 	 */ 	var $config; 	 	var $MD5Key = ""; 	 	var $pay_url = "https://pay.ecpss.cn/sslpayment"; 	/** 	 * 构造函数 	 * 参数中应该包括: 	 * BillNo		订单号 	 * Amount		交易金额 	 * ReturnURL 	返回路径 	 * products 	商品信息 	 *  	 * @param unknown_type $c 	 */ 	public function __construct($c=array()){ 		$this->config['MerNo'] = "";									//商户号,必须 		$this->config['orderTime'] = date("YmdHis");						//请求时间,格式为 YYYYMMDDHHMMSS  		$this->config['AdviceURL'] = ""; 		$this->config['defaultBankNumber'] = ""; 		$this->config['Remark'] = ""; 		 		//合并两个数组 		$this->config = array_merge($this->config, $c); 	} 	 	/** 	 * 生成支付html 	 *  	 * 默认使用post方式提交 	 */ 	public function buildSubmitHtml(){ 		$this->config['SignInfo'] = $this->createSignInfo(); 		 		//生成表单 		$sHtml = "<form id='ecpssForm' name='ecpssForm' action='".$this->pay_url."' method='post'>";                foreach ($this->config as $key => $val) {        	$sHtml.= "<input type='hidden' name='".$key."' value='".$val."'/>";        }                //submit按钮控件请不要含有name属性        $sHtml = $sHtml."<input type='submit' value='去支付'></form>";				$sHtml = $sHtml."<script>document.forms['ecpssForm'].submit();</script>";				return $sHtml; 	} 	 	/** 	 * 生成签名 	 * 方式: 	 * MerNo&BillNo&Amount&ReturnURL&MD5key  	 * 连接起来进行 MD5 加密后字符串,并进行大写转换 	 *  	 * 参数之间必须添加&符号,比如:16885&B00001&1.00&http://ecpss.cn&keyvalue,各参数之间添加&符号进行连接 	 */ 	private function createSignInfo(){ 		$sign = $this->config['MerNo']."&".$this->config['BillNo'] 					."&".$this->config['Amount']."&".$this->config['ReturnURL']."&".$this->MD5Key; 		$sign = md5($sign); 		//转换成大写 		return strtoupper($sign); 	} 	 	/** 	 * 对服务器返回的数据进行验证 	 * 参数的 md5校验串, BillNo & Amount & Succeed & MD5key  	 */ 	public function verify(){ 		//$sign = $_REQUEST['BillNo']."&".$_REQUEST['Amount']."&".$_REQUEST['Succeed']."&".$this->MD5Key; 		//return md5($sign) == $_REQUEST['MD5info']; 		return $_REQUEST['Succeed'] == 88; 	} } ?>