![帝国CMS支付当面付支付插件自适应手机端[图文]](/d/file/p/2021/11-07/b2d1de8a17d4416ac52ac9bec6e89147.jpg)
帝国CMS支付当面付支付插件自适应手机端[图文]
最后更新:2021-07-31
推荐指数:
立即下载使用此插件将改动您的原代码及数据库结构,如您的系统没有经过开发,可以顺利以此教程完成安装,否则有可能发生意想不到的错误。
bnxf文件夹为layui组件包
f2fpay文件夹为插件
插件主要功能
手机端直接付款
PC端扫码付款
插件安装教程
支付宝当面付接入教程
这里假设己经开通了当面付,没有开通的可以到支付宝开通
1、增加当面付数据
帝国没有给出手动添加的功能,这里只能以SQL方式来添加了,运行以下sql语句
INSERT INTO `[!db.pre!]enewspayapi` (`payid`, `paytype`, `myorder`, `payfee`, `payuser`, `partner`, `paykey`, `paylogo`, `paysay`, `payname`, `isclose`, `payemail`, `paymethod`) VALUES ('', 'f2fpay', '99', '0', '', '', '', '', '支付宝当面付插件', '支付宝当面付', '0', '', '0');
ALTER TABLE [!db.pre!]enewspayrecord add phome varchar(20) NOT NULL,add status tinyint(4) NOT NULL,add bgid bigint(20) NOT NULL;
2、添加商户私钥和支付宝公钥字段
ALTER TABLE [!db.pre!]enewspayapi add fprivatekey text NOT NULL, add fpublickey text NOT NULL;
3、修改系统文件以支持私钥和公钥的配置
第一个文件:e/admin/pay/SetPayApi.php
增加一个支付方式的判断,这里的支付方式为f2fpay
<?php
if($r[paytype]=='alipay')
{
?>
<tr bgcolor="#FFFFFF">
<td height="25"><div align="right">支付宝帐号:</div></td>
<td height="25"><input name="payemail" type="text" id="payemail" value="<?=$r[payemail]?>" size="35"></td>
</tr>
<?
}
?>
<tr bgcolor="#FFFFFF">
<td height="25"><div align="right"><?=$r[paytype]=='alipay'?'合作者身份(parterID)':'商户号(ID)'?>:</div></td>
<td height="25"><input name="payuser" type="text" id="payuser" value="<?=$r[payuser]?>" size="35">
<?=$registerpay?>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="25"><div align="right"><?=$r[paytype]=='alipay'?'交易安全校验码(key)':'密钥(KEY)'?>:</div></td>
<td height="25"><input name="paykey" type="text" id="paykey" value="<?=$r[paykey]?>" size="35"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="25"><div align="right">手续费:</div></td>
<td height="25"><input name=payfee type=text id="payfee" value='<?=$r[payfee]?>' size="35">
% </td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="25"><div align="right">显示排序:</div></td>
<td height="25"><input name=myorder type=text id="myorder" value='<?=$r[myorder]?>' size="35">
<font color="#666666">(值越小显示越前面)</font></td>
</tr>
<?php
if($r[paytype]=='f2fpay')
{
?>
<tr bgcolor="#FFFFFF"> <td height="25"><div align="right">APPID</div></td> <td height="25"><input name="payemail" type="text" id="payemail" value="<?=$r[payemail]?>" size="35"></td> </tr> <tr bgcolor="#FFFFFF"> <td height="25"><div align="right">商户私钥</div></td> <td height="25"> <textarea name="fprivatekey" id="fprivatekey" cols="100" rows="10"><?=$r[fprivatekey]?></textarea> </td> </tr> <tr bgcolor="#FFFFFF"> <td height="25"><div align="right">支付宝公钥</div></td> <td height="25"> <textarea name="fpublickey" id="fpublickey" cols="100" rows="10"><?=$r[fpublickey]?></textarea> </td> </tr>
<?
}
?>
第二个文件:e/admin/pay/PayApi.php
增加私钥和公钥字段的写入 替换EditPayApi方法
//设置接口
function EditPayApi($add, $userid, $username) {
global $empire, $dbtbpre;
$add[payid] = (int) $add[payid];
if (empty($add[payname]) || !$add[payid]) {
printerror("EmptyPayApi", "history.go(-1)");
}
$add[isclose] = (int) $add[isclose];
$add[myorder] = (int) $add[myorder];
$add[paymethod] = (int) $add[paymethod];
$add['payname'] = hRepPostStr($add['payname'], 1);
$add['paysay'] = hRepPostStr2($add['paysay']);
$add['payuser'] = hRepPostStr2($add['payuser']);
$add['paykey'] = hRepPostStr2($add['paykey']);
$add['payfee'] = hRepPostStr($add['payfee'], 1);
$add['payemail'] = hRepPostStr($add['payemail'], 1); //增加当面付字段
$add['fprivatekey'] = hRepPostStr($add['fprivatekey'], 1);
$add['fpublickey'] = hRepPostStr($add['fpublickey'], 1);
if ($add['paytype'] == 'f2fpay') {
$sql = $empire->query("update {$dbtbpre}enewspayapi set isclose='$add[isclose]',payname='$add[payname]',paysay='$add[paysay]',payuser='$add[payuser]',paykey='$add[paykey]',payfee='$add[payfee]',payemail='$add[payemail]',myorder='$add[myorder]',paymethod='$add[paymethod]',fprivatekey='$add[fprivatekey]',fpublickey='$add[fpublickey]' where payid='$add[payid]'");
} else {
$sql = $empire->query("update {$dbtbpre}enewspayapi set isclose='$add[isclose]',payname='$add[payname]',paysay='$add[paysay]',payuser='$add[payuser]',paykey='$add[paykey]',payfee='$add[payfee]',payemail='$add[payemail]',myorder='$add[myorder]',paymethod='$add[paymethod]' where payid='$add[payid]'");
}
if ($sql) { //操作日志
insert_dolog("payid=" . $add[payid] . "<br>payname=" . $add[payname]); printerror("EditPayApiSuccess", "PayApi.php" . hReturnEcmsHashStrHref2(1));
} else { printerror("DbError", "history.go(-1)");
}
}
4、取消支付时的转码功能
共三个文件分别为
e/payapi/BuyGroupPay.php此文件用于购买会员组
e/payapi/pay.php此文件用于充值
e/payapi/ShopPay.php此文件用于商城订单支付
因为本次用的是UTF-8编码,这里不需要再转码的
所以要删除转码内容,如下:
if
(
$ecms_config
[
'sets'
][
'pagechar'
]!=
'gb2312'
) { @
include_once
(
"../class/doiconv.php"
);
$iconv
=
new
Chinese(
''
);
$char
=
$ecms_config
[
'sets'
][
'pagechar'
]==
'big5'
?
'BIG5'
:
'UTF8'
;
$targetchar
=
'GB2312'
;
$productname
=
$iconv
->Convert(
$char
,
$targetchar
,
$productname
);
$productsay
=
$iconv
->Convert(
$char
,
$targetchar
,
$productsay
); @header(
'Content-Type: text/html; charset=gb2312'
); }
5、上传当面付插件
将下载好的插件解压,将f2fpay上传到e/payapi/即可
提示:
默认本站己经将所有文件都配置好了,如果是经过二次开发的系统,请参考教程和源码调整,未经二开的可以直接覆盖使用。
LayUI组件包安装方法
直接解压上传到skin目录