国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

270 linhas
9.1KB

  1. <?php
  2. /**
  3. * 支付接口
  4. *
  5. * @version $Id: sys_info_mark.php 1 22:28 2010年7月20日Z tianya $
  6. * @package DedeCMS.Administrator
  7. * @copyright Copyright (c) 2007 - 2018, DesDev, Inc.
  8. * @copyright Copyright (c) 2020, DedeBIZ.COM
  9. * @license https://www.dedebiz.com/license/v6
  10. * @link https://www.dedebiz.com
  11. */
  12. require_once(dirname(__FILE__)."/config.php");
  13. require_once(DEDEINC.'/datalistcp.class.php');
  14. CheckPurview('sys_Data');
  15. $dopost = (empty($dopost))? '' : $dopost;
  16. $pid = (empty($pid))? 0 : intval($pid);
  17. /*
  18. 下面数数组格式的例子:
  19. */
  20. //一个简单的[数组<->表单]解析类
  21. /*数组结构应该为:
  22. array(
  23. [name]=>array(
  24. [title]=>'当前表单项的名称',
  25. [type]=>'text|select',
  26. [description]=>'表单内容的介绍说明'
  27. [iterm]=>'1:使用标准双接口,使用担保交易接口', //如果含有":",则前面为value值,后面为显示内容
  28. [value]=>'使用担保交易接口',
  29. ),
  30. ...
  31. )
  32. 使用方法:
  33. 将上述的格式传入到数组中去,然后进行解析:
  34. 1.声明类,并创建数组
  35. $af = new Array2form($config);
  36. 2.设置一个表单模板(可选,如果不设置载入默认)
  37. $af->SetDefaultTpl($templets); $templets:为一个底册模板文件
  38. 表单模板格式为:
  39. <p>~title~:~form~<small>~description~</small></p>
  40. 3.获取特定项目表单
  41. $af->GetIterm('alipay', 1) //1.表示获取一个默认模板下的完整表单,2.仅获取一个表单项
  42. 4.获取所有表单内容
  43. $af->GetAll() //获取表单所有解析后的内容
  44. */
  45. class Array2form
  46. {
  47. var $FormArray = array();
  48. var $ArrFromTPL = '';
  49. function __construct($formarray = array())
  50. {
  51. if(count($formarray) > 1)
  52. {
  53. $this->FormArray = $formarray;
  54. //var_dump($this->FormArray);
  55. $this->SetDefaultTpl();
  56. }
  57. }
  58. //析构函数,兼容PHP4
  59. /*
  60. function Array2form($formarray = array())
  61. {
  62. $this->__construct($formarray);
  63. }
  64. */
  65. //获取一个特定项目的表单
  66. function GetIterm($itermid = '', $itermtype = 1)
  67. {
  68. $reval = $reval_form = $reval_title = $reval_des = $myformItem = '';
  69. if(is_array($this->FormArray))
  70. {
  71. foreach ($this->FormArray as $key => $val) {
  72. if($key == $itermid)
  73. {
  74. $reval_title = $val['title'];
  75. $reval_des = $val['description'];
  76. $reval_form = $this->GetForm($key,$val, $val['type']);
  77. //进行模板标签替换
  78. if($itermtype == 1)
  79. $reval = preg_replace(array("/~title~/","/~form~/","/~description~/"),
  80. array($reval_title, $reval_form, $reval_des), $this->ArrFromTPL);
  81. else return $reval_form;
  82. }
  83. }
  84. } else {
  85. return FALSE;
  86. }
  87. return empty($reval)? '' : $reval;
  88. }
  89. function GetForm($key, $formarry = array(), $formtype='text')
  90. {
  91. switch ($formtype)
  92. {
  93. case 'text':
  94. //生成文本编辑框
  95. $valstr=(empty($formarry['value']))? "value=''" : "value='{$formarry['value']}'";
  96. $reval_form = "<input type='text' name='{$key}' id='{$key}' style='width:300px' class='text'{$valstr}>";
  97. break;
  98. case 'select':
  99. //生成选择框
  100. $reval_title = $formarry['title'];
  101. $items = explode(',',$formarry['iterm']);
  102. $reval_form = "<select name='{$key}' class='text'>";
  103. if(is_array($items))
  104. {
  105. foreach($items as $v)
  106. {
  107. $v = trim($v);
  108. if($v=='') continue;
  109. //统一将中文冒号转为英文
  110. $v = str_replace(":", ":", $v);
  111. if( preg_match("/[\:]/",$v) )
  112. {
  113. list($value, $name) = preg_split('#:#', $v);
  114. $reval_form .= ($formarry['value'] == $value)? "<option value='$value' selected>$name</option>\r\n" : "<option value='$value'>$name</option>\r\n";
  115. } else {
  116. $reval_form .= ($formarry['value'] == $v)? "<option value='$v' selected>$v</option>\r\n" : "<option value='$v'>$v</option>\r\n";
  117. }
  118. }
  119. }
  120. $reval_form .= "</select>\r\n";
  121. break;
  122. }
  123. return $reval_form;
  124. }
  125. //获取所有的表单内容
  126. function GetAll()
  127. {
  128. $reval=empty($reval)? '' : $reval;
  129. if(is_array($this->FormArray))
  130. {
  131. foreach ($this->FormArray as $key => $val)
  132. {
  133. $reval .= $this->GetIterm($key);
  134. }
  135. return $reval;
  136. }else{
  137. return FALSE;
  138. }
  139. }
  140. //获取一个特定项目的表单
  141. function SetDefaultTpl($tplname = '')
  142. {
  143. if(empty($tplname))
  144. {
  145. $this->ArrFromTPL = '<p>~title~:~form~<small>~description~</small></p>';
  146. } else {
  147. if(file_exists($tplname)) $this->ArrFromTPL = file_get_contents($tplname);
  148. else $this->ArrFromTPL = $tplname;
  149. }
  150. }
  151. }
  152. $tplstring = "
  153. <tr>
  154. <td height='25' align='center'>~title~:</td>
  155. <td>~form~ <small>~description~</small></td>
  156. </tr>
  157. ";
  158. //安装支付接口
  159. if($dopost=='install')
  160. {
  161. $row = $dsql->GetOne("SELECT * FROM `#@__payment` WHERE id='$pid'");
  162. if(is_array($row))
  163. {
  164. if($cfg_soft_lang == 'utf-8')
  165. {
  166. $config_row = AutoCharset(unserialize(utf82gb($row['config'])));
  167. }else if($cfg_soft_lang == 'gb2312'){
  168. $config_row = unserialize($row['config']);
  169. }
  170. //print_r($config_row);exit;
  171. $af = new Array2form($config_row);
  172. $af->SetDefaultTpl($tplstring);
  173. $reval = $af->GetAll();
  174. }
  175. include DedeInclude('templets/sys_payment_install.htm');
  176. exit;
  177. }
  178. //配置支付接口
  179. else if($dopost=='config')
  180. {
  181. if($pay_name=="" || $pay_desc=="" || $pay_fee=="")
  182. {
  183. ShowMsg("您有未填写的项目!","-1");
  184. exit();
  185. }
  186. $row = $dsql->GetOne("SELECT * FROM `#@__payment` WHERE id='$pid'");
  187. if($cfg_soft_lang == 'utf-8')
  188. {
  189. $config = AutoCharset(unserialize(utf82gb($row['config'])));
  190. }else if($cfg_soft_lang == 'gb2312'){
  191. $config = unserialize($row['config']);
  192. }
  193. $payments = "'code' => '".$row['code']."',";
  194. foreach ($config as $key => $v)
  195. {
  196. $config[$key]['value'] = ${$key};
  197. $payments .= "'".$key."' => '".$config[$key]['value']."',";
  198. }
  199. $payments = substr($payments, 0, -1);
  200. $payment = "\$payment=array(".$payments.")";
  201. $configstr = "<"."?php\r\n".$payment."\r\n?".">\r\n";
  202. if(!empty($payment))
  203. {
  204. $m_file = DEDEDATA."/payment/".$row['code'].".php";
  205. $fp = fopen($m_file,"w") or die("写入文件 $safeconfigfile 失败,请检查权限!");
  206. fwrite($fp,$configstr);
  207. fclose($fp);
  208. }
  209. if($cfg_soft_lang == 'utf-8')
  210. {
  211. $config = AutoCharset($config,'utf-8','gb2312');
  212. $config = serialize($config);
  213. $config = gb2utf8($config);
  214. }else{
  215. $config = serialize($config);
  216. }
  217. $query = "UPDATE `#@__payment` SET name = '$pay_name',fee='$pay_fee',description='$pay_desc',config='$config',enabled='1' WHERE id='$pid'";
  218. $dsql->ExecuteNoneQuery($query);
  219. if($pm=='edit') $msg="保存修改成功";
  220. else $msg="安装成功!";
  221. ShowMsg($msg, "sys_payment.php");
  222. exit();
  223. }
  224. //删除支付接口
  225. else if($dopost=='uninstall')
  226. {
  227. $row = $dsql->GetOne("SELECT * FROM `#@__payment` WHERE id='$pid'");
  228. if($cfg_soft_lang == 'utf-8')
  229. {
  230. $config = AutoCharset(unserialize(utf82gb($row['config'])));
  231. }else if($cfg_soft_lang == 'gb2312'){
  232. $config = unserialize($row['config']);
  233. }
  234. foreach ($config as $key => $v) $config[$key]['value']="";
  235. if($cfg_soft_lang == 'utf-8')
  236. {
  237. $config = AutoCharset($config,'utf-8','gb2312');
  238. $config = serialize($config);
  239. $config = gb2utf8($config);
  240. }else{
  241. $config = serialize($config);
  242. }
  243. $query = "UPDATE `#@__payment` SET fee='',config='$config',enabled='0' WHERE id='$pid'";
  244. $dsql->ExecuteNoneQuery($query);
  245. //同时需要删除对应的缓存
  246. $m_file = DEDEDATA."/payment/".$row['code'].".php";
  247. @unlink($m_file);
  248. ShowMsg("删除成功!", "sys_payment.php");
  249. exit();
  250. }
  251. $sql = "SELECT * FROM `#@__payment` ORDER BY rank ASC";
  252. $dlist = new DataListCP();
  253. $dlist->SetTemplet(DEDEADMIN."/templets/sys_payment.htm");
  254. $dlist->SetSource($sql);
  255. $dlist->display();