加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > CMS系统 > Dedecms > 正文

织梦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);?
?? ?}?
}
?
?
?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读