针对dedecms财付通接口,dedecms财付通和财付通支付接口这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展DedeCMS5.7标签tag长度限制的修改办法、dedecms5.7怎样在
针对dedecms 财付通接口,dedecms财付通和财付通支付接口这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展DedeCMS 5.7 标签tag长度限制的修改办法、dedecms 5.7怎样在任意位置显示自由列表标题+链接、DedeCMS Error:Tag disabled:php错误的完整处理办法、DEDECMS JSON数据生成 DEDECMS JSON接口制作等相关知识,希望可以帮助到你。
本文目录一览:- dedecms 财付通接口,dedecms财付通(财付通支付接口)
- DedeCMS 5.7 标签tag长度限制的修改办法
- dedecms 5.7怎样在任意位置显示自由列表标题+链接
- DedeCMS Error:Tag disabled:php错误的完整处理办法
- DEDECMS JSON数据生成 DEDECMS JSON接口制作
dedecms 财付通接口,dedecms财付通(财付通支付接口)
dedecms 财付通接口,dedecms财付通
用织梦做了个旅游网站,网址:http://www.redtourism.cn/ 客户要求财付通支付,上网找了下 不是要买就是要钱,只有自己写了。
代码:
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 = ''
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 dede_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 dede_shops_orders WHERE oid=''$order_sn'' ");
if($row[''state''] > 0)
{
return TRUE;
}
/* 改变订单状态_支付成功 */
$sql = "UPDATE `dede_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);
}
}
DedeCMS 5.7 标签tag长度限制的修改办法
大家都知道默认情况下,dedecms的标签tag长度是12个字节,也就是6个汉字,哪知道在织梦5.7中,也没有改掉这个烦恼的事,可能这个设定是基于效率问题考虑的,如果更新的时候设置的长度超过这个字符,系统就会不显示这个tag。有时候需要根据实际情况修改tag的长度,下面是办法,测试可用。
1.修改数据库中表dede_tagindex 和dede_taglist的tag字段属性:varchar(12)修改为varchar(255) 。
这个步骤需要直接操作数据库。
2.修改文件:/include/helpers/archive.helper.php
查找:if(isset($tag[12]) 修改为:if(isset($tag[255]) ;
再将if(isset($tag[20]) 修改为:if(isset($tag[255]) 。
本文章网址:http://www.ppssdd.com/code/13690.html。转载请保留出处,谢谢合作!dedecms 5.7怎样在任意位置显示自由列表标题+链接
dedecms 5.7怎样在任意位置显示自由列表标题+链接?
为什么会有这样的问题呢,因为找了半天没有发现织梦cms中调用自由列表的标签.在度哥上也没找到答案.那就只有自己捉摸了.下面是我用到的办法,其实是很简单的,只需要一句简单的sql代码就可以实现了
{dede:sql sql="select * From dede_freelist limit 100"}
<a href=http://www.dede58.com/a/dedejq/"[field:listdir/]">[field:title/]</a>
{/dede:sql}
前提是必须删除添加自由列表时地址时前面出现的 {listdir}标签.
如图:
本文章网址:http://www.ppssdd.com/code/14438.html。转载请保留出处,谢谢合作!
DedeCMS Error:Tag disabled:php错误的完整处理办法
网站提示DedeCMS Error:Tag disabled:"php" more...!
在*新的织梦CMSdedecms5.7版本与7月15号的补丁里,官方增加了源码引擎禁用的全局设置,
用于控制哪些源码标签无法被加载,所有支持的源码标签可见系统目录下的“\include\taglib”,默认php标签是被禁用的。
当你还原数据的以后,有可能原来备份里没这个选项,或者是你禁用了源码里的php标签,所以才会报错 。
处理办法如下:
我们先登录后台找到网站后台--系统--系统基本参数---其他选项 ---源码引擎禁用标签。
如果没有找到这一项,请到后台-系统-系统设置-SQL命令行工具里运行一下下面的sql语句
INSERT INTO `dede_sysconfig` (`varname`, `info`, `groupid`, `type`, `value`) VALUES ('cfg_disable_funs', '源码引擎禁用PHP函数', 7, 'bstring', 'phpinfo,eval,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,file_put_contents');
INSERT INTO `dede_sysconfig` (`varname`, `info`, `groupid`, `type`, `value`) VALUES ('cfg_disable_tags', '源码引擎禁用标签', 7, 'bstring', 'php');
然后在织梦CMS网站后台--系统--系统基本参数---其他选项 ---源码引擎禁用标签里把php删除掉保存就正常了。
本文章网址:http://www.ppssdd.com/code/14225.html。转载请保留出处,谢谢合作!DEDECMS JSON数据生成 DEDECMS JSON接口制作
json数据格式可以方便不同站点之间进行数据调用引用,当然我们的DEDECMS也可以实现全站数据生成JSON供其他站点调用,代码很简单,主要用到include/json.class.php。
织梦本身是自带json标签的,调用办法:
{dede:json url='' cache=300}
[field:id/]-[field:title/]<br/>
{/dede:json}
这个标签调用例子在织梦手册里已经给我们提供了,url是一个远程json接口地址,这个接口文件json.php代码 里面,*后的返回必须是把数据通过json_encode($feeds)系统函数,进行json编码后,通过echo或print()函数来打印出来,这二点是必须的,然后,在前台我们就可以通过$.ajax()或$.getjson()来获取数据。织梦系统给我们提供了一个json类,在include/json.class.php文件里面,也就是是说,我们在对php文件转换json编码,就有了二种办法:
1.直接用php系统给我们提供的系统函数,json_encode(),我建立大家用这个,即简单又省事,既然,php系统给我们提供了,我们可以不用织梦系统提供的。
2.就是用织梦系统提供的,encode(),在使用前,首先引入json.class.php,即:
require_once(DEDEINC.'/json.class.php');
$json = new Services_JSON(SERVICES_JSON_SUPPRESS_ERRORS);
echo $json->encode($reval);
$reval这个变量是我们从数据库或其它地方得到的,一般是一个二维数组,例如下:
Array (
[0] => Array ( [id] => 95 [title] => 原图设计)
[1] => Array ( [id] => 113 [title] => ssssssssssss)
[2] => Array ( [id] => 111 [title] => hjhj )
[3] => Array ( [id] => 110 [title] => ssssssssssss)
)
经echo 以后,显示的内容如下所示。
[
{"id":"95","title":"\u539f\u521b"},
{"id":"113","title":"ssssssssssss"},
{"id":"111","title":"hjhj"},
{"id":"110","title":"ssssssssssss"}
]
这是经过encode()或用json_encode()后,显示的内容。即,用中括号括起来的,几个json数据,这个数据回给请求的$.ajax()或$.getjson(),并由其对这个数据进行处理,显示我们相要的结果。
知道了原理,接下来就是详细实现办法,如下:
首先新建一个PHP文件,命名为json.php(也可以新建个文件夹命名为api,然后PHP命名为index.php,这样调用的时候就只需要你的域名/api这样的方式调用),用于作为被调用的API接口,代码如下:
<?php
$cfg_NotPrintHead = false;
header("Content-Type: text/html; charset=utf-8");
include_once (dirname(__FILE__)."/../include/common.inc.php");
error_reporting(E_ALL || ~E_NOTICE);
require_once(DEDEINC.'/json.class.php');
$reval = array();
$dsql->SetQuery("SELECT id,title FROM `dede_archives` ORDER BY id DESC LIMIT 0,10");
$dsql->Execute('me');
while ($row = $dsql->GetArray('me')) {
$row['title'] = gb2utf8($row['title']);
$reval[] = $row;
}
$json = new Services_JSON(SERVICES_JSON_SUPPRESS_ERRORS);
echo $json->encode($reval);
?>
这里代码有进行了GBK转UTF8的操作,所以兼容GBK版的DEDECMS
调用办法:
{dede:json url='域名/json.php' cache=300}
[field:id/]-[field:title/]<br/>
{/dede:json}
把调用代码放到你你需要的地方就行
本文章网址:http://www.ppssdd.com/code/10237.html。转载请保留出处,谢谢合作!今天的关于dedecms 财付通接口,dedecms财付通和财付通支付接口的分享已经结束,谢谢您的关注,如果想了解更多关于DedeCMS 5.7 标签tag长度限制的修改办法、dedecms 5.7怎样在任意位置显示自由列表标题+链接、DedeCMS Error:Tag disabled:php错误的完整处理办法、DEDECMS JSON数据生成 DEDECMS JSON接口制作的相关知识,请在本站进行查询。
本文标签: