织梦dedecms集成财付通支付接口
发布时间:2020-12-14 04:57:06 所属栏目:Dedecms 来源:网络整理
导读:用织梦做了个旅游网站,客户要求财付通支付,上网找了下 不是要买就是要钱,只有自己写了。? 代码:? ?? 复制代码代码如下:? if(!defined('DEDEINC')) exit('Request Error!');? /**? ?*财付通接口类? ?*/? class tenpay? {? ?? ?var $dsql;? ?? ?var $mid;?
用织梦做了个旅游网站,客户要求财付通支付,上网找了下 不是要买就是要钱,只有自己写了。?
代码:? ?? 复制代码代码如下:? if(!defined('DEDEINC')) exit('Request Error!');? /**? ?*财付通接口类? ?*/? class tenpay? {? ?? ?var $dsql;? ?? ?var $mid;? ?? ?var $reqURL_onLine = "http://www.tenpay.com";? ?? ?var $return_url='/plus/carbuyaction.php?dopost=return'; //返回处理地址? ?? ?/**? ?? ?* 构造函数? ?? ?*? ?? ?* @access ?public? ?? ?* @param? ?? ?*? ?? ?* @return void? ?? ?*/? ?? ?function tenpay()? ?? ?{? ?? ? ? ?global $dsql;? ?? ? ? ?$this->dsql = $dsql;? ?? ?}? ?? ?function __construct()? ?? ?{? ?? ? ? ?$this->tenpay();? ?? ?}? ?? ?/**? ?? ? * ?设定接口会送地址? ?? ? *? ?? ? * ?例如: $this->SetReturnUrl($cfg_basehost."/tuangou/control/index.php?ac=pay&orderid=".$p2_Order)? ?? ? *? ?? ? * @param ? ? string ?$returnurl ?会送地址? ?? ? * @return ? ?void? ?? ? */? ?? ?function SetReturnUrl($returnurl='')? ?? ?{? ?? ? ? ?if (!empty($returnurl))? ?? ? ? ?{? ?? ? ? ? ? ?$this->return_url = $returnurl;? ?? ? ? ?}? ?? ?}? ?? ?/**? ?? ?* 生成支付代码? ?? ?* @param ? array ? $order ? ? ?订单信息? ?? ?* @param ? array ? $payment ? ?支付方式信息? ?? ?*/? ?? ?function GetCode($order,$payment)? ?? ?{? ?? ? ? ?global $cfg_basehost,$cfg_cmspath;? ?? ? ? ?//对于二级目录的处理? ?? ? ? ?if(!empty($cfg_cmspath)) $cfg_basehost = $cfg_basehost.'/'.$cfg_cmspath;? ?? ? ? ? ?$partner ? ? ?= ?$payment['tenpay_account'];? ?? ? ? ? ?$out_trade_no = $order['out_trade_no'];? ?? ? ? ? ?$total_fee = floatval($order['price']) * 100;? ?? ? ? ? ? $body = $order['out_trade_no'];? ?? ? ? ? ? $attach = '';? ?? ? ? ? ? $bank_type = 'DEFAULT';? ?? ? ? ? ? ?/* 交易类型:2、虚拟交易,1、实物交易 */? ?? ? ? ? $trans_type = 1;? ?? ? ? ? $trade_mode=empty($payment['tenpay_pay_method']) ? '1' : $payment['tenpay_pay_method'];? ?? ? ? $parameter = array(? ?? ? ? ? ? ?'partner' ? ? ? ? ? ? ?=> $partner,? ?? ? ? ? ? ?'out_trade_no' ? ? ? ? => $out_trade_no,? ? ? ? ? ? ? ? ? ? ? ? ? //订单号? ?? ? ? ? ? ?'total_fee' ? ? ? ? ? ?=> $total_fee,? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//总金额? ?? ? ? ? ? ?'notify_url' ? ? ? ? ? => $cfg_basehost.$this->return_url."&code=".$payment['code'],?//返回地址? ?? ? ? ? ? ?'return_url' ? ? ? ? ? => $cfg_basehost.$this->return_url."&code=".$payment['code'],//提醒地址? ?? ? ? ? ? ?'body' ? ? ? ? ? ? ? ? => $body,? ? ? ? ? ? ? ? ? ? ? ? ? ?//交易描述? ?? ? ? ? ? ?'bank_type' ? ? ? ? ? ?=> $bank_type,? ? ? ? ? ? ? ? ? ? ? //交易类型 ?默认财付通? ?? ? ? ? ? ?//用户ip? ?? ? ? ? ? ?'spbill_create_ip' ? ? => $_SERVER['REMOTE_ADDR'],? ? ? ? ?//交易ip? ?? ? ? ? ? ?'fee_type' ? ? ? ? ? ? => '1',? ? ? ? ? ? ? ? ? ? ? ?//币种 ?1 人民币? ?? ? ? ? ? ?'subject' ? ? ? ? ? ? ?=> $body,? ? ? ? ? ? ? ? ? ? ? ? ? ?//商品名称? ?? ? ? ? ? ?//系统可选参数? ?? ? ? ? ? ?'sign_type' ? ? ? ? ? ?=> 'MD5',? ? ? ? ? ? ? ? ? ? ? ? ? ?//加密方式? ?? ? ? ? ? ?'service_version' ? ? ?=> '1.0',? ? ? ? ? ? ? ? ? ? ? ? ? ?//接口版本号 默认1.0? ?? ? ? ? ? ?'input_charset' ? ? ? ?=> 'UTF-8',? ? ? ? ? ? ? ? ? ? ? ? //系统编码 ?'GBK'? ?? ? ? ? ? ?'sign_key_index' ? ? ? => '1',? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//密钥序号? ?? ? ? ? ? ?//业务可选参数? ?? ? ? ? ? ?'attach' ? ? ? ? ? ? ? => $attach,? ? ? ? ? ?//附加数据 原样返回 ?默认为空? ?? ? ? ? ? ?'product_fee' ? ? ? ? ?=> '',? ? ? ? ? ? ? ? //商品费用? ?? ? ? ? ? ?'transport_fee' ? ? ? ?=> '0',? ? ? ? ? ? ? ?//物流费用? ?? ? ? ? ? ?'time_start' ? ? ? ? ? => date("YmdHis"),? ? //订单生成时间 ? date("YmdHis")? ?? ? ? ? ? ?'time_expire' ? ? ? ? ?=> '',? ? ? ? ? ? ? ? //订单失效时间? ?? ? ? ? ? ?'buyer_id' ? ? ? ? ? ? => '',? ? ? ? ? ? ? ? //买方财付通帐号? ?? ? ? ? ? ?'goods_tag' ? ? ? ? ? ?=> '',? ? ? ? ? ? ? ? //商品标记? ?? ? ? ? ? ?'trade_mode' ? ? ? ? ? => $trade_mode,? ? ? ?//交易模式(1.即时到帐模式,2.中介担保模式,3.后台选择(卖家进入支付中心列表选择))? ?? ? ? ? ? ?'transport_desc' ? ? ? => '',? ? ? ? ? ? ? ? //物流说明? ?? ? ? ? ? ?'trans_type' ? ? ? ? ? => $trans_type,? ? ? ?//交易类型? ?? ? ? ? ? ?'agentid' ? ? ? ? ? ? ?=> '',? ? ? ? ? ? ? ? //平台ID? ?? ? ? ? ? ?'agent_type' ? ? ? ? ? => '',? ? ? ? ? ? ? ? //代理模式(0.无代理,1.表示卡易售模式,2.表示网店模式)? ?? ? ? ? ? ?'seller_id' ? ? ? ? ? ?=> '' ? ? ? ? ? ? ? ? ?//卖家商户号? ?? ? ? ?);? ?? ? ? ?ksort($parameter);? ?? ? ? ?reset($parameter);? ?? ? ? ?$param = '';? ?? ? ? ?$sign ?= '';? ?? ? ? ?foreach ($parameter AS $key => $val)? ?? ? ? ?{? ?? ? ? ? ? ?$param .= "$key=" .urlencode($val). "&";? ?? ? ? ? ? ?if("" != $val && "sign" != $key) {? ?? ? ? ? ? ? ? ?$sign ?.= "$key=$val&";? ?? ? ? ? ? ?}? ?? ? ? ?}? ?? ? ? ?$param = substr($param,-1);? ?? ? ? ?$sign .= "key=".$payment['tenpay_key'];? ?? ? ? ?$sign = strtolower(md5($sign));? ?? ? ? ?$button = '
?? ?/* 清空购物车 */?
?? ? ? ?require_once DEDEINC.'/shopcar.class.php';? ?? ? ? ?$cart ? ? = new MemberShops();? ?? ? ? ?$cart->clearItem();? ?? ? ? ?$cart->MakeOrders();? ?? ? ? ?return $button;? ?? ?}? ?? ?/**? ?? ?* 响应操作? ?? ?*/? ?? ?function respond()? ?? ?{? ?? ? ? ?/* 引入配置文件 */? ?? ? ? ?$code = preg_replace( "#[^0-9a-z-]#i","",$_GET['code'] );? ?? ? ? ?require_once DEDEDATA.'/payment/'.$code.'.php';? ?? ? ? ?$attach ? ? ? ? = $_GET['attach'];? ?? ? ? ?$trade_state ? ?= $_GET['trade_state'];? ?? ? ? ?$total_fee ? ? ?= $_GET['total_fee'];? ?? ? ? ?$out_trade_no = trim($_GET['out_trade_no']);? ?if(preg_match ("/S-P[0-9]+RN[0-9]/",$order_sn)) {? ?? ? ? ? ? ?//检查支付金额是否相符? ?? ? ? ? ? ?$row = $this->dsql->GetOne("SELECT * FROM ym_shops_orders WHERE oid = '{$order_sn}'");? ?? ? ? ? ? ?if ($row['priceCount'] != $_GET['total_fee'])? ?? ? ? ? ? ?{? ?? ? ? ? ? ? ? ?return $msg = "支付失败,支付金额与商品总价不相符!";? ?? ? ? ? ? ?}? ?? ? ? ? ? ?$this->mid = $row['userid'];? ?? ? ? ? ?/* 检查数字签名是否正确 */? ?? ? ? ?ksort($_GET);? ?? ? ? ?reset($_GET);? ?? ? ? $sign = '';? ?? ? ? ?foreach ($_GET AS $key => $val)? ?? ? ? ?{? ?? ? ? ? ? ?if("" != $val && "sign" != $key && $key != 'code') {? ?? ? ? ? ? ? ? ?$sign ?.= "$key=$val&";? ?? ? ? ? ? ?}? ?? ? ? ?}? ?? ? ? ? ? $sign .= "key=".$payment['tenpay_key'];? ??if(strtolower(md5($sign))==strtolower($_GET['sign']))? {? ?? ? ? ? ? ?if($trade_state==0)? ?? ? ? ? ? ?{ ? ? ?? ?? ? ? ? ? ? ? ? ? ? /* 改变订单状态 */? ?? ? ? ? ? ? ? if($this->success_db($out_trade_no))? ?? ? ? ? ? ? ? return $msg = "支付成功!? ? ?? ? ? ? ? ? ? else ?return $msg = "支付失败!? ? ?? ? ? ? ? ?} ?? }? else{? ?? //return $msg = "支付失败!? ? ??}? ?? }? ?? ?/*处理物品交易*/? ?? ?function success_db($order_sn)? ?? ?{? ?? ? ? ?$time=time();? ?? ? ? ?$mid=$this->mid;? ?? ? ? ?//获取订单信息,检查订单的有效性? ?? ? ? ?$row = $this->dsql->GetOne("SELECT state,priceCount FROM ym_shops_orders WHERE oid='$order_sn' ");? ?? ? ? ?if($row['state'] > 0)? ?? ? ? ?{? ?? ? ? ? ? ?return TRUE;? ?? ? ? ?} ?? ?? ? ? ?/* 改变订单状态_支付成功 */? ?? ? ? ?$sql = "UPDATE `ym_shops_orders` SET `state`='1' WHERE `oid`='$order_sn' AND `userid`='".$this->mid."'";? ?? ? ? ?if($this->dsql->ExecuteNoneQuery($sql))? ?? ? ? ?{? ?? ? ? ? ? ?$this->log_result("verify_success,订单号:".$order_sn); //将验证结果存入文件? ?? ? ? ? ? ?return TRUE;? ?? ? ? ?} else {? ?? ? ? ? ? ?$this->log_result ("verify_failed,订单号:".$order_sn);//将验证结果存入文件? ?? ? ? ? ? ?return FALSE;? ?? ? ? ?}? ?? ?}? ?? ?function ?log_result($word) {? ?? ? ? ?global $cfg_cmspath;? ?? ? ? ?$fp = fopen(dirname(__FILE__)."/../../data/payment/log.txt","a");? ?? ? ? ?flock($fp,LOCK_EX) ;? ?? ? ? ?fwrite($fp,$word.",执行日期:".strftime("%Y-%m-%d %H:%I:%S",time())."rn");? ?? ? ? ?flock($fp,LOCK_UN);? ?? ? ? ?fclose($fp);? ?? ?}? }
?
?
? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |