首页 > PHP
微信支付JsApi对接过程
来源:TP课堂 时间:2021-01-19 点击:406

这次对接主要没有下载网上的资料,直接开干,虽有些辛苦,倒也填了一些坑。


1、准备。

公众号:认证的服务号,这里需要服务号中的key,要填写授权域名。

微信支付:申请JsApi支付,配置好域名。

OK!妥妥的。


2、下载官网demo

在根目录随便建立文件夹,比如wei,把微信官网的sdk https://pay.weixin.qq.com/wiki/doc/api/index.html。官网文档上传文件夹wei,填写好配置文件,访问example/jsapi.php,示例中支付一分钱,妥妥的。

如果这步出现问题,请不要向下进行。


3、对接ThinkPHP

建立方法控制器,这里有人会用到什么H5支付的SDK文件、PC端的支付SDK文件,在这里并没有用到,而是重新extend下新建立了一个weixininnerpay,并上传官网SDK。

上传官网SDK这个过程有点复杂,但是并比难,主要是为各文件创建namespace以及use各种类,WxPayDataBase.php拆分出两个类出来。。可直接下载了已经整理好的,希望永远不要再来一次……


4、错误总结


40163错误,这个错误不怪你,怪官网的不地道,咱改一改……

JsAPIPay.php中GetOpenid方法:

//通过code获得openid
        if (!isset($_GET['code']) ){
            //触发微信返回code码
            $baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
            $url = $this->_CreateOauthUrlForCode($baseUrl);
            Header("Location: $url");
            exit();
        } else {
            
            //获取code码,以获取openid
            $code = $_GET['code'];
                if(empty(session($code))){
                    
                    $openid = $this->getOpenidFromMp($code);

                }else{
                    $openid= session($code);

                }
                session($code, $openid);// ######  2019.03.01  加  为解决code been used

            return $openid;
        }


到这里基本差不多了,详情见demo