帝国CMS二次开发整合第三方支付接口教程

帝国CMS二次开发整合第三方支付接口教程帝国cms教程 执刀人 2022-08-15 共47人阅读 加入收藏·帝国CMS7.5后台模板美化版V2.3.0·帝国CMS7.5会员中心美化版V1.0GBK&UTF·帝国CMS美女图片站模板[电脑端+手机端+采集]·苹果CMS精品模板VIP免费下载·承接前端开发 帝国CMS开发·全站内容页文字广告位招商中赞助
看到网上的帝国CMS第三方支付接口资源很少,执刀人就分享一篇关于帝国cms二次开发整合第三方支付接口教程,我们只分享大致思路,可以让你在开发中少走弯路,教程仅供参考学习。

1、首先我们需要知道自己找的第三方支付平台的支付提交发起方法和支付成功后回调方法,每个支付平台的方法都不同。所以在开发前,最好先去仔细查看支付平台的文档,最好支付平台有SDK参考。

2、一般的支付发起方法都是POST 或 GET方法,提交到接口需要哪些字段,我们就调用哪些字段给接口就行,平台一般大致需要的字段有下面这些,整理给大家。

支付方式:

$php_Self = substr($_SERVER['PHP_SELF'],strripos($_SERVER['PHP_SELF'],"/")+1);
if ($php_Self=='BuyGroupPay.php'){
$phome='BuyGroupPay';
}
异步或同步回调地址:

$paykey=$payr['paykey'];
$notify_url=$PayReturnUrlQz."你的回调地址/payend.php";
$return_url=$PayReturnUrlQz."你的回调地址/payend.php";
支付金额:

$price=$money;
支付订单号:

$orderid=$ddno?$ddno:time();
esetcookie("checkpaysession",$orderid,0);
支付方式:

if ($payr['paytype']=='wxpay'){
$channel='1';
}else{
$channel='2';
}
sign签名验证:

$sign=md5($orderid.$phome.$channel.$price.$paykey);


3、有了提交内容,我们就需要发起提交了,大致的POST或GET方法如下,大家也可以自己网上找。

$pay_url='平台提交地址';
$parameter=array(
'payId' => $orderid,
'param' => $phome,
'type' => $channel,
'price' => $price,
'sign' => $sign,
'notifyUrl' => $notify_url,
'returnUrl' => $return_url
);
function list_url($url,$data){
$data=json_encode($data);
$headerArray =array("Content-type:application/json;charset='utf-8'","Accept:application/json");
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
$pay_data=json_decode(list_url($pay_url,$parameter),true);
然后我们还需要一个触发发起提交的表单,

<form method="get" name="gopay" id="gopay" style="display:none" action="平台提交地址">
<input name="orderId" id="orderId" type="text" value="<?=$payorderId?>" />
</form>
<script>
document.getElementById('gopay').submit();
</script>


4、最后就是回调处理了,同样也非常简单,直接就可以用帝国CMS原版的回调处理方法。

include('../payfun.php');
$pr=$empire->fetch1("select paymoneytofen,payminmoney from {$dbtbpre}enewspublic limit 1");

$orderid=$_GET['trade_no']; //支付订单
$ddno=$_GET['out_trade_no']; //网站的订单号
$money=$_GET['total_fee'];
$fen=floor($money)*$pr[paymoneytofen];

if($phome=='PayToFen')//购买点数
{
$paybz='购买点数: '.$fen;
PayApiBuyFen($fen,$money,$paybz,$orderid,$user[userid],$user[username],$paytype);
}
elseif($phome=='PayToMoney')//存预付款
{
$paybz='存预付款';
PayApiPayMoney($money,$paybz,$orderid,$user[userid],$user[username],$paytype);
}
elseif($phome=='ShopPay')//商城支付
{
include('../../data/dbcache/class.php');
$ddid=(int)getcvar('paymoneyddid');
$paybz='商城购买 [!--ddno--] 的订单(ddid='.$ddid.')';
PayApiShopPay($ddid,$money,$paybz,$orderid,'','',$paytype);
}
elseif($phome=='BuyGroupPay')//购买充值类型
{
include("../../data/dbcache/MemberLevel.php");
$bgid=(int)getcvar('paymoneybgid');
PayApiBuyGroupPay($bgid,$money,$orderid,$user[userid],$user[username],$user[groupid],$paytype);
}
我们只需要处理官方方法里面的变量,把他们换成你自己的回调变量就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
支付宝当面付接入教程 这里假设己经开通了当面付,没有开通的可以到支付宝开通 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'); 2、添加商户私钥和支付宝公钥字段 ALTER TABLE [!db.pre!]enewspayapi add fprivatekey text NOT NULL, add fpublickey text NOT NULL; 3、修改系统文件以支持私钥和公钥的配置 第一个文件:e/admin/pay/SetPayApi.php 增加一个支付方式的判断,这里的支付方式为f2fpay APPID <input name="payemail" type="text" id="payemail" value="<?=$r[payemail]?>" size="35"></td> 商户私钥 <textarea name="fprivatekey" id="fprivatekey" cols="100" rows="10"><?=$r[fprivatekey]?></textarea> 支付宝公钥 <textarea name="fpublickey" id="fpublickey" cols="100" rows="10"><?=$r[fpublickey]?></textarea> 第二个文件:e/admin/pay/PayApi.php 增加私钥和公钥字段的写入 //设置接口 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] . "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/即可 在线演示:http://ecms.bnxf.net/

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执刀人的工具库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值