帝国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二次开发整合第三方支付接口教程",非常感谢您有耐心的读完这篇文章,我们将为您提供更多参考使用或学习交流的信息。我们还可为您提供:企业网站建设、网站仿制、网站复制、仿站、外贸网站建设、外贸建站、公司官网制作等服务,本公司以“诚信、专业、务实、创新”的服务理念服务于客户。如您需要合作,请扫码咨询,我们将诚挚为您服务。
TAG标签: