您现在的位置是:首页 > 教程 > 帝国CMS教程帝国CMS教程
帝国CMS整合第三方支付接口的方法
惜文2023-05-19 22:05:34帝国CMS教程已有人查阅
导读看到网上的帝国CMS第三方支付接口资源很少,我的站长站就分享一篇关于帝国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);
}
我们只需要处理官方方法里面的变量,把他们换成你自己的回调变量就可以了。
本文标签:
很赞哦! ()
相关文章
随机图文
-
帝国灵动标签首页怎么调用内容页下载地址
帝国CMS灵动标签首页调用下载地址方法,本文实例讲述了帝国CMS首页调用内容页下载地址的方法。 -
帝国cms模板实现多语言相互切换的方法
语言包解决方案(中英文为例,其他可自行添加).复制/e/data/language/gb/语言包,放入目录:/e/data/language/中,重命名为:”zh”; -
帝国CMS模板怎么调用指定栏目的tag或当前栏目的tag的方法
帝国CMS模板制作中需要调用指定栏目中所有数据包含的TAG或者当前栏目中所有数据包含的TAG,使用如下方法即可实现(最后有代码说明): -
帝国CMS后台生成的广告JS被广告插件过滤的解决方法
帝国CMS发现其广告JS,都不显示,多方检查,发现是浏览器把广告JS给过滤掉了。了解过其滤规则后,只能对帝国做出相应的修改。
留言与评论 (共有 条评论) |