easywechat安装完成后在tp5上的后续

发布时间:2022-03-09作者:小灵龙点击:182

使用composer下载安装easywechat的时候,把vendor/topthink里面的自动加载类都更新没了,就剩下一个thinkphp-installer文件夹。注意、注意、注意。
1,在前端类中调用公共微信支付类。
<?php
    namespace app\home\controller;
    use think\Controller;
    use think\Request;
    use think\Log;
    use app\common\controller\Weixinpay;
class First extends Controller{
      //支付方式:微信收款页面
        public function openWeixinPage(){      
                $params = [
                    //商户订单号,商户网站订单系统中唯一订单号,必填
                    'out_trade_no'  =>  build_order_no(),
                    //订单名称,必填
                    'trade_name'       =>  $trade_name,
                    //付款金额,必填
                    'total_amount'  =>  0.01,                 
                    //产品ID
                    'product_id'  =>  $cproduct_id,               
                                 
                ];
                //客户支付数据保存到数据库
                 $res=new Weixinpay();
                $codeurl=$res->payOrder($params); //返回微信二维码链接,使用phpqrcode类生成二维码图片供用户扫码支付
                require_once VENDOR_PATH.'phpqrcode/phpqrcode.php';
                if(substr($codeurl, 0, 6) == "weixin"){                     
                    \QRcode::png($codeurl);                   
                }else{
                     header('HTTP/1.1 404 Not Found');
                }
       }
}
2,在aplication应用中写一个公共微信支付类,包含native支付二维码链接、回调、退款、查询功能
<?php
  namespace app\common\controller;
  use think\Controller;
  use think\Db;
  use think\Request;
  use think\Loader;
  use think\Log;
  use EasyWeChat\Factory;//easywechat工厂
  /**
  * 微信支付类
  */
  class Weixinpay extends Controller{
        public function payOrder($request){      
        $config = [
            // 必要配置
            'app_id'             => '',
            'mch_id'             => '',
            'key'                => '',   // API v2 密钥 (注意: 是v2密钥 是v2密钥 是v2密钥)

            // 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)
            'cert_path'          => 'D:/web/vendor/weixinpay/cert/apiclient_cert.pem', // XXX: 绝对路径!!!!
            'key_path'           => 'D:/web/vendor/weixinpay/cert/apiclient_key.pem',      // XXX: 绝对路径!!!!

            'notify_url'         => request()->domain().'/public/common/weixinpay/notify_url',     // 你也可以在下单时单独设置来想覆盖它
        ];
        
        $app = Factory::payment($config);
        $result = $app->order->unify([
              'trade_type' => 'NATIVE',
              'body' => $request['trade_name'],//商品名称
              'out_trade_no' => $request['out_trade_no'],//订单号
              'total_fee' => $request['total_amount']*100,//金额分,需要乘以100
              
              'product_id' => $request['tola_product_id'], // 则为生成二维码时的产品 ID
            
          ]);
        $url = urldecode($result['code_url']);//weixin://wxpay/bizpayurl?pr=dDGrgRIzz
        return $url;
    }
}
标签: