0

0

用tp框架实现微信支付的代码实例

Y2J

Y2J

发布时间:2018-05-16 15:52:07

|

5126人浏览过

|

来源于php中文网

原创

这篇文章主要为大家详细介绍了thinkphp微信公众号支付接口,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Thinkphp微信公众号支付接口,供大家参考,具体内容如下

第一步  先把文件夹的那两个图片 配置成一样的路径 除了域名要改 其他保持一致。

第二步  把 Weixinpay 这个文件夹放在 \ThinkPHP\Library\Vendor  将Weixinpay文件夹放置到这个Vendor文件夹中

第三步  把  WxJsAPIController.class.php 这个php文件  \Home\Controller  这里面

第四步  把 WxJsAPI这个文件夹  放置在 \Home\View  这个里面

第五步 成功调用微信公众号支付功能

jsApiCall.html

mallcloud商城
mallcloud商城

mallcloud商城基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离vue的企业级微服务敏捷开发系统架构。并引入组件化的思想实现高内聚低耦合,项目代码简洁注释丰富上手容易,适合学习和企业中使用。真正实现了基于RBAC、jwt和oauth2的无状态统一权限认证的解决方案,面向互联网设计同时适合B端和C端用户,支持CI/CD多环境部署,并提

下载

 
 


  微信安全支付



  
 
 
 

  

WxJsAPIController.class.php

redirect('WxJsAPI/jsApiCall',array('id' =>55),0, '页面跳转中...');
      我是这样穿这个id过来的值得你们也可以自己改成其他的来传这个id 或是删除他不要
      */
       

      $url = $jsApi->createOauthUrlForCode($rUrl);
      // echo $url;exit();
      Header("Location: $url");
    }else
    {

      //获取code码,以获取openid
      $code = $_GET['code'];
      $jsApi->setCode($code);
      $openid = $jsApi->getOpenId();//openid 这里是为了获取用户当前的openid 如果你有做微信登陆的话就可以无视他。
    }



    //=========步骤2:使用统一支付接口,获取prepay_id============
    //使用统一支付接口
    $unifiedOrder = new \UnifiedOrder_pub();

      /*此处做数据库的查询 这里操作数据库把产品信息显示出来*/

      /*此处做数据库的查询 这里操作数据库把产品信息显示出来*/


    //设置统一支付接口参数
    //设置必填参数
    //appid已填,商户无需重复填写
    //mch_id已填,商户无需重复填写
    //noncestr已填,商户无需重复填写
    //spbill_create_ip已填,商户无需重复填写
    //sign已填,商户无需重复填写
    //

    $NOTIFY_URL="你的域名/index.php/Home/WxJsAPI/notify";

    $unifiedOrder->setParameter("openid",$openid);//openid
    $unifiedOrder->setParameter("body",'商品的名字');//商品描述
    $unifiedOrder->setParameter("out_trade_no",'123456789');//商户订单号
    $unifiedOrder->setParameter("total_fee",1*100);//总金额 微信的钱1*100等于1
    $unifiedOrder->setParameter("notify_url",$NOTIFY_URL);//通知地址
  

    $unifiedOrder->setParameter("trade_type","JSAPI");//交易类型
    //非必填参数,商户可根据实际情况选填
    //$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商户号
    //$unifiedOrder->setParameter("device_info","XXXX");//设备号
    //$unifiedOrder->setParameter("attach","XXXX");//附加数据
    //$unifiedOrder->setParameter("time_start","XXXX");//交易起始时间
    //$unifiedOrder->setParameter("time_expire","XXXX");//交易结束时间
    //$unifiedOrder->setParameter("goods_tag","XXXX");//商品标记
    //$unifiedOrder->setParameter("openid","XXXX");//用户标识
    //$unifiedOrder->setParameter("product_id","XXXX");//商品ID
  

    $prepay_id = $unifiedOrder->getPrepayId();

    // echo $prepay_id;exit();
    //=========步骤3:使用jsapi调起支付============
    $jsApi->setPrepayId($prepay_id);
    
    $jsApiParameters = $jsApi->getParameters();

    $WEB_HOST='你的域名';//填写的话 如 http://nicaicai.imwork.net 最后面不用加 /
    $this->assign('HOSTS',$WEB_HOST);
    $this->assign('jsApiParameters',$jsApiParameters);
    $this->display();
    //echo $jsApiParameters;

  }


  public function notify()
  {
    //使用通用通知接口
    $notify = new \Notify_pub();

    //存储微信的回调
    $xml = $GLOBALS['HTTP_RAW_POST_DATA'];   

    $notify->saveData($xml);
    

    //验证签名,并回应微信。
    //对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,
    //微信会通过一定的策略(如30分钟共8次)定期重新发起通知,
    //尽可能提高通知的成功率,但微信不保证通知最终能成功。
    if($notify->checkSign() == FALSE){

      $notify->setReturnParameter("return_code","FAIL");//返回状态码
      $notify->setReturnParameter("return_msg","签名失败了啊");//返回信息
    }else{
      $notify->setReturnParameter("return_code","SUCCESS");//设置返回码
    }
    $returnXml = $notify->returnXml();
    echo $returnXml;
    
    //==商户根据实际情况设置相应的处理流程,此处仅作举例=======
    
    //以log文件形式记录回调信息
     // $log_ = new Log_();
    $log_name= ROOT."/Public/notify_url.log";//log文件路径
    
    
    if($notify->checkSign() == TRUE)
    {
      if ($notify->data["return_code"] == "FAIL") {


        //此处应该更新一下订单状态,商户自行增删操作
        log_result($log_name,"【通信出错】:\n".$xml."\n");
      }
      elseif($notify->data["result_code"] == "FAIL"){
    

        //此处应该更新一下订单状态,商户自行增删操作
        log_result($log_name,"【业务出错】:\n".$xml."\n");
      }
      else{ 

  /*查看支付成功的返回值请去 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 */

  $xmlss=$notify->data["out_trade_no"];//订单号
  $total_fee=$notify->data['total_fee'];//订单总金额,单位为分,详见支付金额
    

    /*更新订单状态这里写数据库的操作*/
   
  /*更新订单状态这里写数据库的操作*/


        //此处应该更新一下订单状态,商户自行增删操作
        log_result($log_name,"【支付成功】:\n".$xml."\n");
      }
    
      //商户自行增加处理流程,
      //例如:更新订单状态
      //例如:数据库操作
      //例如:推送支付完成信息
    }
  }

  // 打印log
  public function log_result($file,$word)
  {
    $fp = fopen($file,"a");
    flock($fp, LOCK_EX) ;
    fwrite($fp,"执行日期:".strftime("%Y-%m-%d-%H:%M:%S",time())."\n".$word."\n\n");
    flock($fp, LOCK_UN);
    fclose($fp);
  }

}


?>

【相关推荐】

1. 特别推荐:“php程序员工具箱”V0.1版本下载

2. 微信小程序完整源码下载

3. 微信小程序demo:阳淘

相关文章

微信app下载
微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

1724

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1148

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1051

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

948

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1396

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1228

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1439

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1303

2023.11.13

虚拟号码教程汇总
虚拟号码教程汇总

本专题整合了虚拟号码接收验证码相关教程,阅读下面的文章了解更多详细操作。

25

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
微信小程序开发之API篇
微信小程序开发之API篇

共15课时 | 1.2万人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

golang socket 编程
golang socket 编程

共2课时 | 0.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号