很早以前,网站都是使用的支付宝接口支付完成网站交易,随着微时代的到来 ,网站开始从原来的PC端转移为手机端做重点。微信支付已经是越来越多的网站不可缺少的一个支付交易选项。帝国CMS没有支持微信支付的接口,只能自己添加。那么我们该如何在自己的网站上接入微信支付接口呢?下边由Shu给你一一讲解。
APPID ——登录公众平台查看
APPSECRET ——登录公众平台申请重置之后查看
MCHID ——商户平台的ID
KEY ——商户平台自己设置的KEY
APPID,APPSECRET两个参数在微信公众号后台-->开发-->基本配置获取,截图如下
MCHID商户ID则需要在微信商户平台的后台->账户中心->商户信息获取
KEY获取地址 https://pay.weixin.qq.com/index.php/account/api_cert 如下图:
这三个参数在同一个页面进行配置,配置方法也相同,直接填写域名即可。
以上三种支付不管用没用到,都填写吧,填写格式如下:
公众号支付:http://你的域名/e/payapi/wxpay/
扫码支付:http://你的域名/e/paypai/wxpay/native_notify.php (我的截图有误,不要参照我截图写的)
H5支付:你的域名
此设置在微信公众号后台->设置->安全中心 可以看到。把自己的服务器IP填写即可。
去微信下载php版本的sdk吧,下载地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 选择使用php版本
把里面的php_sdk_v3.0.9文件夹改成wxpay然后,放到/e/payapi/目录下
insert into [!db.pre!]enewspayapi(paytype,payname,paymethod) values('wxpay','微信支付',1);其实我个有觉得这个没什么卵用,因为微信支付需要用到4个基本配置,而帝国CMS默认给了两个参数
所以我决定直接在配置文件里写死。这种做法主要是:1、不改官方文件 2、配置参数改动频率少
但是为什么我还要在后台添加这个接口的,主要是因为用户在选择支付的时候,可以选择到微信支付,然后调用到微信支付的相关文件而以。
4.2微信文件配置
你可以选择自己修改/e/payapi/wxpay/example/WxPay.Config.php文件,也可以选择下载本人提供的WxPay.Config.php文件,然后把步骤1的4大参数填写进去
WxPay.Config.zip (2.07 KB)
主要配置的参数如下:
4.3增加自定义文件
在/e/payapi/wxpay/下添加to_pay.php文件,请下载to_pay.zip然后上传
4.4修改文件
打开/e/payapi/wxpay/lib/WxPay.Api.php,找到第560行,561,将代码修改如下:
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);//严格校验这步代码一定要修改,要不然会报错。
<?php //以下是帝国CMS微信扫码支付代码 require("../../../class/connect.php"); require("../../../class/db_sql.php"); include('../../payfun.php'); $link=db_connect(); $empire=new mysqlquery(); $ddid=getcvar('paymoneyddid'); if(!$ddid) { exit('您还未下单'); } require "WxPay.NativePay.php"; $out_trade_no=time(); $productname="支付订单号:".$out_trade_no; $productsay="订单号:".$out_trade_no; //支付金额 $price=$ddr['tmoney']; $input = new WxPayUnifiedOrder(); $input->SetBody($productsay); //订单内容 $input->SetAttach('ddid='.$ddid);//附加属性 $input->SetOut_trade_no($out_trade_no); //订单号 $input->SetTotal_fee(1); $input->SetTime_start(date("YmdHis")); $input->SetTime_expire(date("YmdHis", time() + 600)); $input->SetGoods_tag("");//商品标记 $input->SetNotify_url(WxPayConfig::WEBURL."/e/payapi/wxpay/example/native_notify.php"); $input->SetTrade_type("NATIVE"); //交易类型 $input->SetProduct_id($ddid);//商品ID 必传 $notify = new NativePay(); $result = $notify->GetPayUrl($input); //返回值可以用print_r打印来看看 if(!$result['code_url']) { echo $result['err_code_des']; exit; } $url2 = $result["code_url"]; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>微信扫码支付</title> <link rel="stylesheet" href="https://cdn.bootcss.com/weui/1.1.3/style/weui.min.css"> <link rel="stylesheet" href="https://cdn.bootcss.com/jquery-weui/1.2.1/css/jquery-weui.min.css"> </head> <body> <div id="pay-no"> <div class="weui-form-preview"> <div class="weui-form-preview__bd"> <div class="weui-form-preview__item"> <label class="weui-form-preview__label">商品名称</label> <span class="weui-form-preview__value"><?=$productname?></span> </div> <div class="weui-form-preview__item"> <label class="weui-form-preview__label">产品说明</label> <span class="weui-form-preview__value"><?=$productsay?></span> </div> </div> <div class="weui-form-preview__hd"> <label class="weui-form-preview__label">付款金额</label> <em class="weui-form-preview__value">¥0.01</em> </div> </div> <div style="width:300px;margin:20px auto;"> <h3 style="color:#556B2F;text-align: center;margin:0;">请扫码支付</h3> <p style="text-align: center;margin:0;"><img alt="扫码支付" src="/e/payapi/wxpay/example/qrcode.php?data=<?php echo urlencode($url2);?>" style="width:200px;height:200px;"/></p> </div> </div> <div id="pay-yes"> <div class="weui-msg"> <div class="weui-msg__icon-area"><i class="weui-icon-success weui-icon_msg"></i></div> <div class="weui-msg__text-area"> <h2 class="weui-msg__title">支付成功</h2> <p class="weui-msg__desc">您已经成功支付订单号:【<?=$ddid?>】余款</p> </div> <div class="weui-msg__opr-area"> <p class="weui-btn-area"> <a href="/e/member/cp/" class="weui-btn weui-btn_primary">去会员中心</a> </p> </div> </div> </div> <style> #pay-yes{display: none} </style> <script src="https://cdn.bootcss.com/jquery/1.11.0/jquery.min.js"></script> <script src="https://cdn.bootcss.com/jquery-weui/1.2.1/js/jquery-weui.min.js"></script> <script type="text/javascript"> var ddid='<?=$ddid?>'; if(ddid) { var timer = setInterval(function(){ $.ajax({ type:'post',url:'/e/payapi/wxpay/checkdd.php',data:{'enews':'checkDd','ddid':ddid}, success:function(res){ if(res=='ok') { $('#pay-yes').show(); $('#pay-no').remove(); clearInterval(timer); } } }) },1000) } </script> </body> </html>
检测订单代码范围如下:
<?php require("../../class/connect.php"); require("../../class/db_sql.php"); $link=db_connect(); $empire=new mysqlquery(); $post=$_POST['HTTP_RAW_POST_DATA']; //php7.0版本以下使用 if(!$post) { $post= file_get_contents('php://input'); } $fankuistr='<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'; if(!$post) { echo $fankuistr; exit('Notify 非法回调'); } libxml_disable_entity_loader(true); //禁止引用外部xml实体 $xml = simplexml_load_string($post, 'SimpleXMLElement', LIBXML_NOCDATA);//XML转数组 $post_data = (array)$xml; parse_str($post_data['attach'],$cs); if($cs['ddid']) { $r=$empire->fetch1("select * from {$dbtbpre}enewsshopdd WHERE ddid='$cs[ddid]' limit 1"); if($r){ $empire->query("update {$dbtbpre}enewsshopdd set haveprice=1 WHERE ddid='$cs[ddid]' limit 1"); } } echo $fankuistr; ?>
最后送上微信公众平台支付接口调试工具地址,这对调用你的微信支付有一定帮助。