HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    PHP部署ChatGPT(php部署环境)

    发布时间:2023-03-12 03:34:56     稿源: 创意岭    阅读: 64        问大家

    大家好!今天让创意岭的小编来大家介绍下关于PHP部署ChatGPT的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    ChatGPT国内免费在线使用,能给你生成想要的原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    你只需要给出你的关键词,它就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端,官网:https://ai.de1919.com

    本文目录:

    PHP部署ChatGPT(php部署环境)

    一、php小程序前端转化为h5

    对于h5中生成海报大家都不陌生 最常见的方法是前端生成 用html2canvas 但是弊端就是画质太差 网上很多方法 但是依然不是很管用 最近做的h5中 用了php来生成 画质简直美得不行 1)采用熟练的JSP框架,每人一天可以改造2个页面左右,计划投入2人,风险最小虽然开发方法类似网页,但实际上是一种只能运行在微信自己开发的浏览器中的特殊网页,它所能够使用的所有功能都必须由微信浏览器提供;

    H5页面:这是真正的网页应用,运行在通用浏览器中,各种浏览器虽然在细微上有所差别,但总的来说是一致的,微信浏览器同时也是一种通用浏览器,能够支持真正的网页应用。

    因此我们才有可能在微信小程序和H5页面之间进行跳转,但这种跳转是受到微信浏览器的严格控制的,因此我们有必要了解这些控制包括哪些。

    H5页面所在的域名:假设你需要调转的H5页面URL为https://www.mysite.com/h5page,那么这里所说的域名就是www.mysite.com,另外你没有看错,这个URL必须是https,如果你还没有为你的网站加上SSL,那么就先去申请一个证书吧(注意必须是公开申请的证书,不能是自签名的,微信不认哦!)

    好了,这些都准备好了,让我们开始开发一个小例子。

    由于web-view组件是一个全屏组件,不能和其它小程序组件合用,因此需要独立占据一个页面,所以我们到例子就是在小程序的A页面加一个链接,跳转到B页面,然后在B页面使用web-view组件来加载H5页面。

    2)采用主流分布式Vue框架,时间未知,风险未知;

    首先自我介绍下,本人是一名JAVA开发工程师,平时喜欢研究相关主流技术和挑战自己。对此我还是比较倾向于第二种解决方案,但是第二种解决方案无疑是最复杂,最耗时,最未知,风险最大。公司内没有人愿意承接。于是我抱着学习和研究的态度以及对主流技术的向往,我找到我们领导我是这样说的:我还是比较建议公司采用第二种方案。1)这无疑是给我们进行敲门砖及学习的机会;2)这是公司提升前端技术能力与主流技术看齐的机会。最后公司同意了我建议,采用方案二,有我来承接此事,进行牵头负责。

    中间心酸过程忽略,刚接下来第一天就后悔了,VUE用都没用过,还怎么玩。于是我花了大量的时间,看了大量文献,我这里使用到是Vue 2 + Vant 2 + axios + router。原来并不是什么网址拿来就可以设置跳转的,你的小程序中就不能直接跳转到百度上去,小程序能够跳转的域名必须在业务域名中进行注册,总算这次是在小程序开发号里面设置了,但注意在服务号的设置里也有业务域名这个设置,不要搞混了(话说微信起名也太没有想象力了,简直是一坨浆糊)。这时候控制权已经从小程序转移到了H5页面,但微信页面跳转内部的机制比较复杂,涉及到了OAuth认证之类的,所以这个错误已经是H5页面报的了,这就需要到H5页面关联的服务号中去进行设置,这次设置的项目叫做网页授权域名,在公众号设置的功能设置里由于小程序官方没有提供外部H5网页直接跳转到小程序的api,所以目前只支持小程序内嵌H5,并且只有内嵌的H5才能跳回小程序在微信开发中工具里返回“{"base_resp":{"ret":-1}}”时,需要点左上角“设置”--“项目设置”--勾选“不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书” 源码中验证使用的是session 来校验验证码是否正确。我这边前端是小程序无法存session改用框架自带的缓存。

    这里讲一点转Taro的调试经验,有报错的文件先拎出来放在一边,因为es5,6语法差异,很多js文件转es6是不支持的,所以会报错,建议是先把所有报错的文件注释,或者改成es6写法再转。我这边是去掉了很多的文件才转成功了的。这里需要自己一步一步调试解决报错,转成功之后根目录多出来一个taroConvert的文件夹这说明已经转Taro成功了,接下来就是运行以及二次开发。

    进入taroConvert文件夹(二次开发就在这个文件里面,小程序代码不用管了),执行命令 npm install 或者cnpm install 先拉取所有依赖。

    可以看一下package.json文件的运行命令以及安装的依赖,我这里是要运行H5的,输入命令 npm run dev:h5打开H5开发模式,这个步骤有可能会有个nerv.js不存在的报错,可以安装一下,然后在你文件src下面的的app.js import一下。

    执行命令 import Nerv from 'nervjs',这个报错就会解决。其它的页面代码报错可以自己调试。开启成功的话浏览器中会打开127.0.0.1:8082的窗口运行项目。

    二、微信小程序怎么向外部php文件传递参数

    PAY页面往 js_api_call.php 传值 获取不到的问题

    echo 是可以echo出来的 但是

    这里不写死就会报错 $key0$

    <?php

    /**

    * JS_API支付demo

    * ====================================================

    * 在微信浏览器里面打开H5网页中执行JS调起支付。接口输入输出数据格式为JSON。

    * 成功调起支付需要三个步骤:

    * 步骤1:网页授权获取用户openid

    * 步骤2:使用统一支付接口,获取prepay_id

    * 步骤3:使用jsapi调起支付

    */

    //获取信息

    @$name="支付测试-包包";

    @$price=0.01*100;

    @$hyid=$_GET['hyid'];

    @$out_trade_no=$_GET['num'];//订单号

    include_once("../WxPayPubHelper/WxPayPubHelper.php");

    //使用jsapi接口

    $jsApi = new JsApi_pub();

    //=========步骤1:网页授权获取用户openid============

    //通过code获得openid

    if (!isset($_GET['code']))

    {

    //触发微信返回code码

    $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);

    Header("Location: $url");

    }else

    {

    //获取code码,以获取openid

    $code = $_GET['code'];

    $jsApi->setCode($code);

    $openid = $jsApi->getOpenId();

    }

    //=========步骤2:使用统一支付接口,获取prepay_id============

    //使用统一支付接口

    $unifiedOrder = new UnifiedOrder_pub();

    //设置统一支付接口参数

    //设置必填参数

    //appid已填,商户无需重复填写

    //mch_id已填,商户无需重复填写

    //noncestr已填,商户无需重复填写

    //spbill_create_ip已填,商户无需重复填写

    //sign已填,商户无需重复填写

    $unifiedOrder->setParameter("openid","$openid");//商品描述

    $unifiedOrder->setParameter("body","$name");//商品描述

    //自定义订单号,此处仅作举例

    $timeStamp = time();

    $out_trade_no = WxPayConf_pub::APPID."$timeStamp";

    $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号

    $unifiedOrder->setParameter("total_fee","$price");//总金额

    $unifiedOrder->setParameter("notify_url","http://youjia.pinpai365.cn/weixinpay/demo/notify_url.php");//通知地址

    $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("attach","2");//会员ID

    $prepay_id = $unifiedOrder->getPrepayId();

    //=========步骤3:使用jsapi调起支付============

    $jsApi->setPrepayId($prepay_id);

    $jsApiParameters = $jsApi->getParameters();

    //echo $jsApiParameters;

    ?>

    <html>

    <head>

    <meta charset="utf-8">

    <title>支付页面</title>

    <script type="text/javascript">

    //调用微信JS api 支付

    function jsApiCall()

    {

    WeixinJSBridge.invoke(

    'getBrandWCPayRequest',

    <?php echo $jsApiParameters; ?>,

    function(res){

    WeixinJSBridge.log(res.err_msg);

    if(res.err_msg == "get_brand_wcpay_requestk"){

    window.location.href='/shop/successful.php?spmc=<?php echo $name; ?>&&price=<?php echo $price; ?>';

    //history.go(-1);

    }else{

    window.location.href='/shop/pay.php';

    }

    }

    );

    }

    if (typeof WeixinJSBridge == "undefined"){

    if( document.addEventListener ){

    document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);

    }else if (document.attachEvent){

    document.attachEvent('WeixinJSBridgeReady', jsApiCall);

    document.attachEvent('onWeixinJSBridgeReady', jsApiCall);

    }

    }else{

    jsApiCall();

    }

    </script>

    </head>

    </html>

    三、微信红包PHP怎么开发

    代码有两个php文件

    1.oauth4.php

    <?php

    $code=$_GET['code'];

    $state=$_GET['state'];

    $appid='XXXX';

    $appsecret='XXXXXXXX';//

    if (empty($code)) $this->error('授权失败');

    $token_url='https://api.weixin.qq.com/sns/oauth4/access_token?appid='.$appid'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code';

    $token=json_decode(file_get_contents($token_url));

    if (isset($token->errcode)) {

    echo '<h1>错误1</h1>'.$token->errcode;

    echo '<br/><h4>错误信息1:</h4>'.$token->errmsg;

    exit;

    }

    session_start();

    $_SESSION['openid']= $token->openid;

    header('location:url/redpack.php');//要跳转的文件路径

    ?>

    2.redpack.php

    <?php

    //XXXXX。。是需要开发者自己填写的内容,注意不要泄密

     // 从session中获取到openid;

    $openid=$_SESSION["openid"];

        if(empty($openid))

        {

    header('location:https://open.weixin.qq.com/connect/oauth4/authorize?appid=XXXXXXXX&redirect_uri=http://www.XXXXXXX.com/oauth4.php&respose_type=code&scope=snsapi_base&state=XXXX&connect_redirect=1#wechat_redirect');

        }

    }

    // 关键的函数

    public function weixin_red_packet(){

      // 请求参数

      // 随机字符串

      $data['nonce_str']=$this->get_unique_value();

      //商户号,输入你的商户号

      $data['mch_id']="XXXXXXX";

      //商户订单号,可以按要求自己组合28位的商户订单号

      $data['mch_billno']=$data['mch_id'].date("ymd")."XXXXXX".rand(1000,9999);

      //公众帐号appid,输入自己的公众号appid

      $data['wxappid']="XXXXXXX";

      //商户名称

      $data['send_name']="XXXXX";

      //用户openid,输入待发红包的用户openid

      session_start();

      $data['re_openid']=$_SESSION["openid"];

      //付款金额

      $data['total_amount']="XXXX";

      //红包发放总人数

      $data['total_num']="XXXX";

      //红包祝福语

      $data['wishing']="XXXX";

      //IP地址

      $data['client_ip']=$_SERVER['LOCAL_ADDR'];

      //活动名称

      $data['act_name']="XXXXX";

      //备注

      $data['remark']="XXXXX";

      // 生成签名

      //对数据数组进行处理

      //API密钥,输入自己的K 微信商户号里面的K

      $appsecret="XXXXXXXXXXXXXX"; //

      $data=array_filter($data);

      ksort($data);

      $str="";

      foreach($data as $k=>$v){

        $str.=$k."=".$v."&";

      }

      $str.="key=".$appsecret;

      $data['sign']=strtoupper(MD5($str));

      /*

        发红包操作过程:

          1.将请求数据转换成xml

          2.发送请求

          3.将请求结果转换为数组

          4.将请求信息和请求结果录入到数据库中

          4.判断是否通信成功

          5.判断是否转账成功

       */

      //发红包接口地址

      $url="https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";

      //将请求数据由数组转换成xml

      $xml=$this->arraytoxml($data);

      //进行请求操作

      $res=$this->curl($xml,$url);

      //将请求结果由xml转换成数组

      $arr=$this->xmltoarray($res);

    }

    // 生成32位唯一随机字符串

    private function get_unique_value(){

      $str=uniqid(mt_rand(),1);

      $str=sha1($str);

      return md5($str);

    }

    // 将数组转换成xml

    private function arraytoxml($arr){

      $xml="<xml>";

      foreach($arr as $k=>$v){

        $xml.="<".$k.">".$v."</".$k.">";

      }

      $xml.="</xml>";

      return $xml;

    }

    // 将xml转换成数组

    private function xmltoarray($xml){

      //禁止引用外部xml实体

      libxml_disable_entity_loader(true);

      $xmlstring=simplexml_load_string($xml,"SimpleXMLElement",LIBXML_NOCDATA);

      $arr=json_decode(json_encode($xmlstring),true);

      return $arr;

    }

    //进行curl操作

    private function curl($param="",$url) {

      $postUrl = $url;

      $curlPost = $param;

      //初始化curl

      $ch = curl_init();

      //抓取指定网页

      curl_setopt($ch, CURLOPT_URL,$postUrl);

      //设置header

      curl_setopt($ch, CURLOPT_HEADER, 0);

      //要求结果为字符串且输出到屏幕上

      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

      //post提交方式

      curl_setopt($ch, CURLOPT_POST, 1);

      // 增加 HTTP Header(头)里的字段

      curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);

      // 终止从服务端进行验证

      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

      //证书放到网站根目录的cert文件夹底下

      curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).DIRECTORY_SEPARATOR.

            'cert'.DIRECTORY_SEPARATOR.'apiclient_cert.pem');

        curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).DIRECTORY_SEPARATOR.

            'cert'.DIRECTORY_SEPARATOR.'apiient_key.pem');

        curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).DIRECTORY_SEPARATOR.

            'cert'.DIRECTORY_SEPARATOR.'rootca.pem');

      //运行curl

      $data = curl_exec($ch);

      //关闭curl

      curl_close($ch);

      return $data;

    }

    ?>

    可参考官方文档进行调整开发,希望能有帮助,望采纳

    四、构建了PHP环境后,写完的代码放在哪

    phpnow中的根目录中的htdocs文件夹就是你网页(也就是你的站点)的根目录。当你在浏览器地址栏输入“http://localhost”或者“http://你的ip地址”的时候,浏览器进入的就是这个htdocs文件夹。刚刚安装完phpnow的时候,你的htdocs文件夹应该有一个index.html文件,你第一次在浏览器地址栏输入“http://localhost”或者“http://你的ip地址”的时候,浏览器会浏览到index.html这个网页,你需要在这个网页测试一下数据库是否ok。然后你把htdocs文件夹中的index.html改个名字或者移到别的地方去,然后把你的php文件放到这个文件夹中就Ok了。你再在浏览器地址栏输入“http://localhost”或者“http://你的ip地址”,浏览器会主动搜索根目录也就是htdocs文件夹中的index文件为主页,但是如果你的根目录同时存在index.html和index.php。那么浏览器会先读取html文件,也就是先读取index.html。你也可以在htdocs文件夹中新建一个其他的文件夹,比如你的文件是一个聊天室,那么你新建一个文件夹叫做chat。然后你把你的Php文件放到chat文件夹中。然后在浏览器地址输入“http://localhost/chat”或者“http://你的ip地址/chat”你的php主页就显示出来了。你也可以利用地址栏不浏览主页。比如你的Php文件中有个文件叫做top.php。那么你可以在地址栏输入“http://localhost/chat/top.php”或者“http://你的ip地址/chat。php”,就Ok了,应该说清楚了吧??比较啰嗦了。

    以上就是关于PHP部署ChatGPT相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    chatpht

    PHP写接口(php写接口实现json文件读取)

    iphone怎么用chatGPT(IPHONE怎么用2个咕咚)

    农村景观设计村民活动区域(农村景观设计村民活动区域分析)

    游戏策划好找工作吗(游戏策划好找工作吗知乎)