侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130560 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

帝国CMS接入微信支付教程

2022-06-11 星期六 / 0 评论 / 0 点赞 / 110 阅读 / 13891 字

很早以前,网站都是使用的支付宝接口支付完成网站交易,随着微时代的到来 ,网站开始从原来的PC端转移为手机端做重点。微信支付已经是越来越多的网站不可缺少的一个支付交易选项。帝国CMS没有支持微信支付的接口,只能自己添加。那么我们该如何在自己的网站上接入微信支付接口呢?

很早以前,网站都是使用的支付宝接口支付完成网站交易,随着微时代的到来 ,网站开始从原来的PC端转移为手机端做重点。微信支付已经是越来越多的网站不可缺少的一个支付交易选项。帝国CMS没有支持微信支付的接口,只能自己添加。那么我们该如何在自己的网站上接入微信支付接口呢?下边由Shu给你一一讲解。

1、拿到微信支付的四大参数

APPID          ——登录公众平台查看 
APPSECRET ——登录公众平台申请重置之后查看
MCHID        ——商户平台的ID
KEY              ——商户平台自己设置的KEY

APPID,APPSECRET两个参数在微信公众号后台-->开发-->基本配置获取,截图如下

MCHID商户ID则需要在微信商户平台的后台->账户中心->商户信息获取

KEY获取地址 https://pay.weixin.qq.com/index.php/account/api_cert 如下图:

2、微信后台配置

2.1业务域名、 JS接口安全域名、网页授权域名

这三个参数在同一个页面进行配置,配置方法也相同,直接填写域名即可。

2.2支付授权目录

以上三种支付不管用没用到,都填写吧,填写格式如下:
公众号支付:http://你的域名/e/payapi/wxpay/
扫码支付:http://你的域名/e/paypai/wxpay/native_notify.php (我的截图有误,不要参照我截图写的)
H5支付:你的域名

2.3 IP白名单设置

此设置在微信公众号后台->设置->安全中心 可以看到。把自己的服务器IP填写即可。

3、下载SDK文档

去微信下载php版本的sdk吧,下载地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 选择使用php版本
把里面的php_sdk_v3.0.9文件夹改成wxpay然后,放到/e/payapi/目录下

4、后台、微信文件配置

       4.1后台执行sql语句:增加微信支付接口
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);//严格校验
这步代码一定要修改,要不然会报错。

5、编写统一下单代码

微信支付开发文档:https://pay.weixin.qq.com/wiki/doc/api/index.html 范例代码如下:
<?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;?>

以上只是扫码支付的支付范例代码,完整代码,请联系点击这里给我发消息购买。

最后送上微信公众平台支付接口调试工具地址,这对调用你的微信支付有一定帮助。
 

广告 广告

评论区