国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

202 lines
7.5KB

  1. <?php
  2. /**
  3. * 支付接口
  4. *
  5. * @version $id:sys_info_mark.php 22:28 2010年7月20日 tianya $
  6. * @package DedeBIZ.Administrator
  7. * @copyright Copyright (c) 2022 DedeBIZ.COM
  8. * @license https://www.dedebiz.com/license
  9. * @link https://www.dedebiz.com
  10. */
  11. require_once(dirname(__FILE__)."/config.php");
  12. require_once(DEDEINC.'/datalistcp.class.php');
  13. CheckPurview('sys_Data');
  14. $dopost = (empty($dopost)) ? '' : $dopost;
  15. $pid = (empty($pid)) ? 0 : intval($pid);
  16. class Array2form
  17. {
  18. var $FormArray = array();
  19. var $ArrFromTPL = '';
  20. function __construct($formarray = array())
  21. {
  22. if (count($formarray) > 1) {
  23. $this->FormArray = $formarray;
  24. //var_dump($this->FormArray);
  25. $this->SetDefaultTpl();
  26. }
  27. }
  28. //获取一个特定项目的表单
  29. function GetIterm($itermid = '', $itermtype = 1)
  30. {
  31. $reval = $reval_form = $reval_title = $reval_des = $myformItem = '';
  32. if (is_array($this->FormArray)) {
  33. foreach ($this->FormArray as $key => $val) {
  34. if ($key == $itermid) {
  35. $reval_title = $val['title'];
  36. $reval_des = $val['description'];
  37. $reval_form = $this->GetForm($key, $val, $val['type']);
  38. //进行模板标签替换
  39. if ($itermtype == 1)
  40. $reval = preg_replace(
  41. array("/~title~/", "/~form~/", "/~description~/"),
  42. array($reval_title, $reval_form, $reval_des),
  43. $this->ArrFromTPL
  44. );
  45. else return $reval_form;
  46. }
  47. }
  48. } else {
  49. return FALSE;
  50. }
  51. return empty($reval) ? '' : $reval;
  52. }
  53. function GetForm($key, $formarry = array(), $formtype = 'text')
  54. {
  55. switch ($formtype) {
  56. case 'text':
  57. //生成文本编辑框
  58. $valstr = (empty($formarry['value'])) ? "value=''" : "value='{$formarry['value']}'";
  59. $reval_form = "<input type='text' name='{$key}' id='{$key}' class='biz-input-md' {$valstr}>";
  60. break;
  61. case 'select':
  62. //生成选择框
  63. $reval_title = $formarry['title'];
  64. $items = explode(',', $formarry['iterm']);
  65. $reval_form = "<select name='{$key}' class='biz-input-xs'>";
  66. if (is_array($items)) {
  67. foreach ($items as $v) {
  68. $v = trim($v);
  69. if ($v == '') continue;
  70. //统一将中文冒号转为英文
  71. $v = str_replace(":", ":", $v);
  72. if (preg_match("/[\:]/", $v)) {
  73. list($value, $name) = preg_split('#:#', $v);
  74. $reval_form .= ($formarry['value'] == $value) ? "<option value='$value' selected>$name</option>\r\n" : "<option value='$value'>$name</option>\r\n";
  75. } else {
  76. $reval_form .= ($formarry['value'] == $v) ? "<option value='$v' selected>$v</option>\r\n" : "<option value='$v'>$v</option>\r\n";
  77. }
  78. }
  79. }
  80. $reval_form .= "</select>\r\n";
  81. break;
  82. }
  83. return $reval_form;
  84. }
  85. //获取所有的表单内容
  86. function GetAll()
  87. {
  88. $reval = empty($reval) ? '' : $reval;
  89. if (is_array($this->FormArray)) {
  90. foreach ($this->FormArray as $key => $val) {
  91. $reval .= $this->GetIterm($key);
  92. }
  93. return $reval;
  94. } else {
  95. return FALSE;
  96. }
  97. }
  98. //获取一个特定项目的表单
  99. function SetDefaultTpl($tplname = '')
  100. {
  101. if (empty($tplname)) {
  102. $this->ArrFromTPL = '<p>~title~:~form~<small>~description~</small></p>';
  103. } else {
  104. if (file_exists($tplname)) $this->ArrFromTPL = file_get_contents($tplname);
  105. else $this->ArrFromTPL = $tplname;
  106. }
  107. }
  108. }
  109. $tplstring = "
  110. <tr>
  111. <td align='center'>~title~:</td>
  112. <td>~form~ <small>~description~</small></td>
  113. </tr>
  114. ";
  115. //安装支付接口
  116. if ($dopost == 'install') {
  117. $row = $dsql->GetOne("SELECT * FROM `#@__payment` WHERE id='$pid'");
  118. if (is_array($row)) {
  119. if ($cfg_soft_lang == 'utf-8') {
  120. $config_row = AutoCharset(unserialize(utf82gb($row['config'])));
  121. } else if ($cfg_soft_lang == 'gb2312') {
  122. $config_row = unserialize($row['config']);
  123. }
  124. //print_r($config_row);exit;
  125. $af = new Array2form($config_row);
  126. $af->SetDefaultTpl($tplstring);
  127. $reval = $af->GetAll();
  128. }
  129. include DedeInclude('templets/sys_payment_install.htm');
  130. exit;
  131. }
  132. //配置支付接口
  133. else if ($dopost == 'config') {
  134. if ($pay_name == "" || $pay_desc == "" || $pay_fee == "") {
  135. ShowMsg("您有未填写的项目", "-1");
  136. exit();
  137. }
  138. $row = $dsql->GetOne("SELECT * FROM `#@__payment` WHERE id='$pid'");
  139. if ($cfg_soft_lang == 'utf-8') {
  140. $config = AutoCharset(unserialize(utf82gb($row['config'])));
  141. } else if ($cfg_soft_lang == 'gb2312') {
  142. $config = unserialize($row['config']);
  143. }
  144. $payments = "'code' => '".$row['code']."',";
  145. foreach ($config as $key => $v) {
  146. $config[$key]['value'] = ${$key};
  147. $payments .= "'".$key."' => '".$config[$key]['value']."',";
  148. }
  149. $payments = substr($payments, 0, -1);
  150. $payment = "\$payment=array(".$payments.")";
  151. $configstr = "<"."?php\r\n".$payment."\r\n?".">\r\n";
  152. if (!empty($payment)) {
  153. $m_file = DEDEDATA."/payment/".$row['code'].".php";
  154. $fp = fopen($m_file, "w") or die("写入文件 $safeconfigfile 失败,请检查权限");
  155. fwrite($fp, $configstr);
  156. fclose($fp);
  157. }
  158. if ($cfg_soft_lang == 'utf-8') {
  159. $config = AutoCharset($config, 'utf-8', 'gb2312');
  160. $config = serialize($config);
  161. $config = gb2utf8($config);
  162. } else {
  163. $config = serialize($config);
  164. }
  165. $query = "UPDATE `#@__payment` SET name = '$pay_name',fee='$pay_fee',description='$pay_desc',config='$config',enabled='1' WHERE id='$pid'";
  166. $dsql->ExecuteNoneQuery($query);
  167. if ($pm == 'edit') $msg = "保存修改成功";
  168. else $msg = "安装成功";
  169. ShowMsg($msg, "sys_payment.php");
  170. exit();
  171. }
  172. //删除支付接口
  173. else if ($dopost == 'uninstall') {
  174. $row = $dsql->GetOne("SELECT * FROM `#@__payment` WHERE id='$pid'");
  175. if ($cfg_soft_lang == 'utf-8') {
  176. $config = AutoCharset(unserialize(utf82gb($row['config'])));
  177. } else if ($cfg_soft_lang == 'gb2312') {
  178. $config = unserialize($row['config']);
  179. }
  180. foreach ($config as $key => $v) $config[$key]['value'] = "";
  181. if ($cfg_soft_lang == 'utf-8') {
  182. $config = AutoCharset($config, 'utf-8', 'gb2312');
  183. $config = serialize($config);
  184. $config = gb2utf8($config);
  185. } else {
  186. $config = serialize($config);
  187. }
  188. $query = "UPDATE `#@__payment` SET fee='',config='$config',enabled='0' WHERE id='$pid'";
  189. $dsql->ExecuteNoneQuery($query);
  190. //同时需要删除对应的缓存
  191. $m_file = DEDEDATA."/payment/".$row['code'].".php";
  192. @unlink($m_file);
  193. ShowMsg("删除成功", "sys_payment.php");
  194. exit();
  195. }
  196. $sql = "SELECT * FROM `#@__payment` ORDER BY `rank` ASC";
  197. $dlist = new DataListCP();
  198. $dlist->SetTemplet(DEDEADMIN."/templets/sys_payment.htm");
  199. $dlist->SetSource($sql);
  200. $dlist->display();
  201. ?>