用织梦做了个装饰网站,客户要求财付通支付,上网找了下,不是要买就是要*,只有自己写了。

代码如下:
<?php
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, 0, -1);
$sign .= "key=".$payment['tenpay_key'];
$sign = strtolower(md5($sign));
$button = '<div style="text-align:center"><a
href="https://gw.tenpay.com/gateway/pay.htm?'.$param.
'&sign='.$sign.'"><button>立即使用财付通支付</button></a></div>';
return $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 = "支付成功!<br> <a href='/'>返回主页</a> <a href='/member'>会员中心</a>";
else return $msg = "支付失败!<br> <a href='/'>返回主页</a> <a href='/member'>会员中心</a>";
}
}
else{
//return $msg = "支付失败!<br> <a href='/'>返回主页</a> <a href='/member'>会员中心</a>";
}
}
/*处理物品交易*/
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())."\r\n");
flock($fp, LOCK_UN);
fclose($fp);
}
}
# 布吉网站建设招商
# 币种
# 不相符
# 怎样优化网站自然排名
# 贫困生帮扶网站建设
# 潮州模板网站建设公司
# 开封推广全网营销公司*
# 京东关键词有排名没流量
# 阜新建设网站步骤
# 内江营销推广在线咨询平台
# 璞樾营销推广方案
# 漳州seo工具
# 到帐
# 二维码营销推广工具
# 宁波seo优化要怎么做
# 网站seo微星hfqjwl
# 揭阳网站权重优化
# 餐饮加盟网站seo策划
# 网站推广引流隐迅推认准
# 餐饮网站排行榜优化
# 咸宁网站建设费用
# seo批量内容
# 拍卖类网站建设要求
# 购物车
# 织梦CMS教程
# 织梦支付接口
# 织梦支付
# 财付通支付
# 卖家
# 可选
# 宋体
# 帐号
# 找了
# 写了
# 织梦dedecms集成腾讯财付通支付接口
# 要买
# 商户
# 网店
# 支付方式
# 配置文件
# 总金额
# 客户要求
# 清空
# 为空
# 是否正确
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化91478 】
【
技术知识72672 】
【
云计算0 】
【
GEO优化84317 】
【
优选文章0 】
【
营销推广36048 】
【
网络运营41350 】
【
案例网站102563 】
【
AI智能45237 】
相关推荐:
织梦的图集编辑器改为完整的文章编辑器的教程_织梦CMS教程
如何快速生成凡客建站的专业级图册?
建站哪里好?优选平台推荐与关键词优化指南
织梦dedecms手机搜索跳转到手机搜索模板教程_织梦CMS教程
织梦根据栏目不同调用不同模板的方法_织梦CMS教程
织梦二次开发sitemap.html地图自动生成在根目录插件_织梦插件
织梦怎么调用缩略图片原图地址?_织梦CMS教程
帝国cms灵动标签怎么调用栏目缩略图_帝国CMS教程
如何彻底删除建站之星生成的Banner?
dedecms织梦网站生成静态速度慢的解决方法_织梦CMS教程
建站10G流量真的够用吗?如何应对访问高峰?
织梦在PHP5.4以上版本后台登录空白的解决方法_织梦CMS教程
如何在万网利用已有域名快速建站?
建站之星备案是否影响网站上线时间?
如何配置FTP站点权限与安全设置?
如何用wdcp快速搭建高效网站?
建站主机系统SEO优化与智能配置核心关键词操作指南
如何快速配置高效服务器建站软件?
香港服务器如何优化才能显著提升网站加载速度?
建站之星数据库主机如何正确配置?
如何快速搭建响应式可视化网站?
织梦后台不支持上传bmp格式图片的解决方法_织梦CMS教程
织梦标签输出的指定栏目新窗口打开方法_织梦CMS教程
如何快速搭建高效WAP手机网站?
如何在香港服务器上快速搭建免备案网站?
建站之星如何实现网站加密操作?
织梦dedecms出现Safe Alert: Request Error step 2提示代码_织梦CMS教程
如何安全更换建站之星模板并保留数据?
建站之星系统存在安全漏洞?如何防范入侵风险?
帝国CMS教程验证码不显示_帝国CMS教程
织梦后台文章管理中增加批量添加tag标签功能_织梦CMS教程
织梦cms tags标签静态化,利于SEO_织梦CMS教程
如何续费美橙建站之星域名及服务?
织梦cms插件图集图片模型整合下载功能 可判断会员金币数会员权限_织梦插件
帝国cms页面浏览量或点击率统计调用代码_帝国CMS教程
如何修改帝国cms的栏目ID号_帝国CMS教程
织梦修改tag标签默认12个字节的长度_织梦CMS教程
织梦dedecms列表页实现无限加载的教程_织梦CMS教程
如何在腾讯云服务器上快速搭建个人网站?
织梦dedecms后台默认登录账号admin的修改方法_织梦CMS教程
用JS实现织梦当前文章标题高亮显示教程_织梦CMS教程
如何通过WDCP绑定主域名及创建子域名站点?
建站助手如何操作?三步打造高效网站
已有域名建站全流程解析:网站搭建步骤与建站工具选择
织梦dedecms动态获取会员总数方法_织梦CMS教程
建站之星数据库连接失败?防火墙如何正确配置?
如何用腾讯建站主机快速创建免费网站?
建站之星模板快速切换与风格调整操作指南
织梦手机站内容页图片自适应去除style样式标签_织梦CMS教程
织梦dedecms搜索页显示条数10条更改_织梦CMS教程
2017-10-17
南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。