zoukankan      html  css  js  c++  java
  • thinkphp5集成微信支付【公众号支付】快捷路径

     1 下载官方的测试用例PHP版

    https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1

    2 到vendor目录新建weixin文件夹

    3 把解压后的文件 lib里面的文件 复制到 vendor/weixin文件夹

    4 到解压后的examples里面,找到公众号支付所用的jsapi.php

    在当前目录找到

    WxPay.JsApiPay.php
    log.php

    把这2个文件也复制到 vendor/weixnin

    5 把jsapi.php里面的代码 复制到控制器的方法中

    比如 public function index()

    注意 里面有个打印函数,可以独立封装

    6 public function index()里面的代码大致如下

    修改的文件路径如下

    ini_set('date.timezone','Asia/Shanghai');
            //error_reporting(E_ERROR);
            require_once "../vendor/weixin/WxPay.Api.php";
            require_once "../vendor/weixin/WxPay.JsApiPay.php";
            require_once "../vendor/weixin/log.php";
     
            //初始化日志
            $logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log');
            $log = Log::Init($logHandler, 15);
            
            
            
            //①、获取用户openid
            $tools = new JsApiPay();
            $openId = $tools->GetOpenid();
            
            //②、统一下单
            $input = new WxPayUnifiedOrder();
            $input->SetBody("test");
            $input->SetAttach("test");
            $input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
            $input->SetTotal_fee("1");
            $input->SetTime_start(date("YmdHis"));
            $input->SetTime_expire(date("YmdHis", time() + 600));
            $input->SetGoods_tag("test");
            $input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
            $input->SetTrade_type("JSAPI");
            $input->SetOpenid($openId);
            $order = WxPayApi::unifiedOrder($input);
            echo '<font color="#f00"><b>统一下单支付单信息</b></font><br/>';
            $this->printf_info($order);
            $jsApiParameters = $tools->GetJsApiParameters($order);
            
            //获取共享收货地址js函数参数
            $editAddress = $tools->GetEditAddressParameters();

    1)顶部文件的路径

    2)类加了

    7 即可继续调试吧

    注:本来想尝试放到extend目录下,复制进去很多类不能直接使用,需要重新初始化,但是里面有个data.class里面有超过10个类,所以放弃了这个思路

  • 相关阅读:
    MySQL:解决脏读问题
    MySQL:隔离性问题(脏读)&回滚演示
    MySQL: Mysql 事务隔离级别
    MySQL:数据库事务
    GRE Vocabulary:sedulous
    MySQL:SQL约束
    GRE Vocabulary:pall
    MySQL:DQL操作单表
    MySQL: DQL 查询表中数据
    MySQL:DML操作 表中数据
  • 原文地址:https://www.cnblogs.com/baker95935/p/8618199.html
Copyright © 2011-2022 走看看