ThinkPHP3.2.3集成微信支付版本php_sdk_v3.0.9

  1. 下载微信支付SDK(官方下载路径URL:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1)
  2. 将下载文件进行解压获取文件,文件结构如下图所示
  3. ThinkPHP3.2.3集成微信支付版本php_sdk_v3.0.9_第1张图片
  4. 找到ThinkPHP3.2.3第三方库中路径为:ThinkPHP\Library\Vendor。在此路径下创建文件夹Weixinpay(名称可以随意),将下载解压后的文件复制新建文件夹中。
  5. 在模块中创建控制器 WeixinpayController.class.php 用于处理支付,定义方法wxpay()实现支付功能。
  6. public function wxpay()
        {
            vendor('WeixinPay.example.WxPay#JsApiPay');//引入文件
            try{
    
    	        $tools = new JsApiPay();
    	        $openId = $tools->GetOpenid();
    
    	        //②、统一下单
    	        $input = new WxPayUnifiedOrder();
    	        $input->SetBody("test");        //商品描述
    	        //$input->SetAttach("test");    //附加数据暂未使用到可以注释掉	
    	        $input->SetOut_trade_no("sdkphp".date("YmdHis"));//商户订单号,此处订单号根据实际项目中订单号进行赋值,要求32个字符内,只能是数字、大小写字母_-|* 且在同一个商户号下唯一
    	        $input->SetTotal_fee("1");      //订单总金额,单位为分
    	        $input->SetTime_start(date("YmdHis"));//订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010
    	        $input->SetTime_expire(date("YmdHis", time() + 600));//订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。订单失效时间是针对订单号而言的,由于在请求支付的时候有一个必传参数prepay_id只有两小时的有效期,所以在重入时间超过2小时的时候需要重新请求下单接口获取新的prepay_id
    	        //$input->SetGoods_tag("test");//订单优惠标记,使用代金券或立减优惠功能时需要的参数,项目暂未使用到,因此注释掉
    	        $input->SetNotify_url("http://paysdk.weixin.qq.com/notify.php");//异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。
    	        $input->SetTrade_type("JSAPI");//交易类型JSAPI 公众号支付;NATIVE 扫码支付;APP APP支付;
    	        $input->SetOpenid($openId);
    	        $config = new WxPayConfig();
    	        $order = WxPayApi::unifiedOrder($config, $input);
    	        echo '统一下单支付单信息
    '; $this->printf_info($order); $jsApiParameters = $tools->GetJsApiParameters($order); //获取共享收货地址js函数参数 $editAddress = $tools->GetEditAddressParameters(); //将数据渲染到模板中或前端页面中 $assign=array( 'data'=>$jsApiParameters ); $this->assign($assign); $this->display(); } catch(Exception $e) { Log::ERROR(json_encode($e));//此处因为没有使用微信日志方法,所以暂未引入日志类 } }
  7. 使用微信数据输出样式进行展示得到的数据:如下
  8. public function printf_info($data)
        {
            foreach($data as $key=>$value){
                echo "$key :  ".htmlspecialchars($value, ENT_QUOTES)." 
    "; } }

     

  9.  此时访问wxpay()方法时会出现一堆报错,报错内容大概是一些xxx类不存在或者xxx方法不存在等信息,因为直接使用Vendor引入下载的SDK文件,入口文件是index.php,因此‘..’路径不对,所以需要修改SDK文件引入路径。如下:

  10. example/WxPay.JsApiPay.php文件修改如下:

         

         example/WxPay.Config.php文件修改如下:

        

  • 只需将类似这样的路径进行修改如上所示即可
  1. 配置微信支付所需要的参数,在example/WxPay.Config.php进行配置信息,配置数据获取方式网上搜索一堆,此处不再介绍

  ThinkPHP3.2.3集成微信支付版本php_sdk_v3.0.9_第2张图片

ThinkPHP3.2.3集成微信支付版本php_sdk_v3.0.9_第3张图片

  • html页面渲染如下:此页面是官方提供的代码样式,此处代码写在和控制器WeixinpayController.class.php一个模块中。使用的是ThinkPHP本身前后端编写方式。


    
     
    微信支付样例-支付
    
	


    
该笔订单支付金额为1分

  • 此时可以进行测试支付操作,可以进行正常唤起支付弹窗进行支付。
  1. 支付成功之后进行回调处理
  2. 在控制器WeixinpayController.class.php中定义notify()方法用于调用回调:如下
  3. ThinkPHP3.2.3集成微信支付版本php_sdk_v3.0.9_第4张图片
  4. example/notify.php文件中进行处理回调逻辑代码:如下
  5. ThinkPHP3.2.3集成微信支付版本php_sdk_v3.0.9_第5张图片
  6. 微信支付到此结束

你可能感兴趣的:(PHP)