-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
PHP部署ChatGPT(php部署環(huán)境)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于PHP部署ChatGPT的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
ChatGPT國內(nèi)免費在線使用,能給你生成想要的原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
你只需要給出你的關(guān)鍵詞,它就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端,官網(wǎng):https://ai.de1919.com
本文目錄:
一、php小程序前端轉(zhuǎn)化為h5
對于h5中生成海報大家都不陌生 最常見的方法是前端生成 用html2canvas 但是弊端就是畫質(zhì)太差 網(wǎng)上很多方法 但是依然不是很管用 最近做的h5中 用了php來生成 畫質(zhì)簡直美得不行 1)采用熟練的JSP框架,每人一天可以改造2個頁面左右,計劃投入2人,風(fēng)險最小雖然開發(fā)方法類似網(wǎng)頁,但實際上是一種只能運行在微信自己開發(fā)的瀏覽器中的特殊網(wǎng)頁,它所能夠使用的所有功能都必須由微信瀏覽器提供;
H5頁面:這是真正的網(wǎng)頁應(yīng)用,運行在通用瀏覽器中,各種瀏覽器雖然在細微上有所差別,但總的來說是一致的,微信瀏覽器同時也是一種通用瀏覽器,能夠支持真正的網(wǎng)頁應(yīng)用。
因此我們才有可能在微信小程序和H5頁面之間進行跳轉(zhuǎn),但這種跳轉(zhuǎn)是受到微信瀏覽器的嚴格控制的,因此我們有必要了解這些控制包括哪些。
H5頁面所在的域名:假設(shè)你需要調(diào)轉(zhuǎn)的H5頁面URL為https://www.mysite.com/h5page,那么這里所說的域名就是www.mysite.com,另外你沒有看錯,這個URL必須是https,如果你還沒有為你的網(wǎng)站加上SSL,那么就先去申請一個證書吧(注意必須是公開申請的證書,不能是自簽名的,微信不認哦!)
好了,這些都準備好了,讓我們開始開發(fā)一個小例子。
由于web-view組件是一個全屏組件,不能和其它小程序組件合用,因此需要獨立占據(jù)一個頁面,所以我們到例子就是在小程序的A頁面加一個鏈接,跳轉(zhuǎn)到B頁面,然后在B頁面使用web-view組件來加載H5頁面。
2)采用主流分布式Vue框架,時間未知,風(fēng)險未知;
首先自我介紹下,本人是一名JAVA開發(fā)工程師,平時喜歡研究相關(guān)主流技術(shù)和挑戰(zhàn)自己。對此我還是比較傾向于第二種解決方案,但是第二種解決方案無疑是最復(fù)雜,最耗時,最未知,風(fēng)險最大。公司內(nèi)沒有人愿意承接。于是我抱著學(xué)習(xí)和研究的態(tài)度以及對主流技術(shù)的向往,我找到我們領(lǐng)導(dǎo)我是這樣說的:我還是比較建議公司采用第二種方案。1)這無疑是給我們進行敲門磚及學(xué)習(xí)的機會;2)這是公司提升前端技術(shù)能力與主流技術(shù)看齊的機會。最后公司同意了我建議,采用方案二,有我來承接此事,進行牽頭負責(zé)。
中間心酸過程忽略,剛接下來第一天就后悔了,VUE用都沒用過,還怎么玩。于是我花了大量的時間,看了大量文獻,我這里使用到是Vue 2 + Vant 2 + axios + router。原來并不是什么網(wǎng)址拿來就可以設(shè)置跳轉(zhuǎn)的,你的小程序中就不能直接跳轉(zhuǎn)到百度上去,小程序能夠跳轉(zhuǎn)的域名必須在業(yè)務(wù)域名中進行注冊,總算這次是在小程序開發(fā)號里面設(shè)置了,但注意在服務(wù)號的設(shè)置里也有業(yè)務(wù)域名這個設(shè)置,不要搞混了(話說微信起名也太沒有想象力了,簡直是一坨漿糊)。這時候控制權(quán)已經(jīng)從小程序轉(zhuǎn)移到了H5頁面,但微信頁面跳轉(zhuǎn)內(nèi)部的機制比較復(fù)雜,涉及到了OAuth認證之類的,所以這個錯誤已經(jīng)是H5頁面報的了,這就需要到H5頁面關(guān)聯(lián)的服務(wù)號中去進行設(shè)置,這次設(shè)置的項目叫做網(wǎng)頁授權(quán)域名,在公眾號設(shè)置的功能設(shè)置里由于小程序官方?jīng)]有提供外部H5網(wǎng)頁直接跳轉(zhuǎn)到小程序的api,所以目前只支持小程序內(nèi)嵌H5,并且只有內(nèi)嵌的H5才能跳回小程序在微信開發(fā)中工具里返回“{"base_resp":{"ret":-1}}”時,需要點左上角“設(shè)置”--“項目設(shè)置”--勾選“不校驗合法域名、web-view(業(yè)務(wù)域名)、TLS 版本以及 HTTPS 證書” 源碼中驗證使用的是session 來校驗驗證碼是否正確。我這邊前端是小程序無法存session改用框架自帶的緩存。
這里講一點轉(zhuǎn)Taro的調(diào)試經(jīng)驗,有報錯的文件先拎出來放在一邊,因為es5,6語法差異,很多js文件轉(zhuǎn)es6是不支持的,所以會報錯,建議是先把所有報錯的文件注釋,或者改成es6寫法再轉(zhuǎn)。我這邊是去掉了很多的文件才轉(zhuǎn)成功了的。這里需要自己一步一步調(diào)試解決報錯,轉(zhuǎn)成功之后根目錄多出來一個taroConvert的文件夾這說明已經(jīng)轉(zhuǎn)Taro成功了,接下來就是運行以及二次開發(fā)。
進入taroConvert文件夾(二次開發(fā)就在這個文件里面,小程序代碼不用管了),執(zhí)行命令 npm install 或者cnpm install 先拉取所有依賴。
可以看一下package.json文件的運行命令以及安裝的依賴,我這里是要運行H5的,輸入命令 npm run dev:h5打開H5開發(fā)模式,這個步驟有可能會有個nerv.js不存在的報錯,可以安裝一下,然后在你文件src下面的的app.js import一下。
執(zhí)行命令 import Nerv from 'nervjs',這個報錯就會解決。其它的頁面代碼報錯可以自己調(diào)試。開啟成功的話瀏覽器中會打開127.0.0.1:8082的窗口運行項目。
二、微信小程序怎么向外部php文件傳遞參數(shù)
PAY頁面往 js_api_call.php 傳值 獲取不到的問題
echo 是可以echo出來的 但是
這里不寫死就會報錯 $key0$
<?php
/**
* JS_API支付demo
* ====================================================
* 在微信瀏覽器里面打開H5網(wǎng)頁中執(zhí)行JS調(diào)起支付。接口輸入輸出數(shù)據(jù)格式為JSON。
* 成功調(diào)起支付需要三個步驟:
* 步驟1:網(wǎng)頁授權(quán)獲取用戶openid
* 步驟2:使用統(tǒng)一支付接口,獲取prepay_id
* 步驟3:使用jsapi調(diào)起支付
*/
//獲取信息
@$name="支付測試-包包";
@$price=0.01*100;
@$hyid=$_GET['hyid'];
@$out_trade_no=$_GET['num'];//訂單號
include_once("../WxPayPubHelper/WxPayPubHelper.php");
//使用jsapi接口
$jsApi = new JsApi_pub();
//=========步驟1:網(wǎng)頁授權(quán)獲取用戶openid============
//通過code獲得openid
if (!isset($_GET['code']))
{
//觸發(fā)微信返回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:使用統(tǒng)一支付接口,獲取prepay_id============
//使用統(tǒng)一支付接口
$unifiedOrder = new UnifiedOrder_pub();
//設(shè)置統(tǒng)一支付接口參數(shù)
//設(shè)置必填參數(shù)
//appid已填,商戶無需重復(fù)填寫
//mch_id已填,商戶無需重復(fù)填寫
//noncestr已填,商戶無需重復(fù)填寫
//spbill_create_ip已填,商戶無需重復(fù)填寫
//sign已填,商戶無需重復(fù)填寫
$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");//交易類型
//非必填參數(shù),商戶可根據(jù)實際情況選填
//$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商戶號
//$unifiedOrder->setParameter("device_info","XXXX");//設(shè)備號
//$unifiedOrder->setParameter("attach","XXXX");//附加數(shù)據(jù)
//$unifiedOrder->setParameter("time_start","XXXX");//交易起始時間
//$unifiedOrder->setParameter("time_expire","XXXX");//交易結(jié)束時間
//$unifiedOrder->setParameter("goods_tag","XXXX");//商品標記
$unifiedOrder->setParameter("attach","2");//會員ID
$prepay_id = $unifiedOrder->getPrepayId();
//=========步驟3:使用jsapi調(diào)起支付============
$jsApi->setPrepayId($prepay_id);
$jsApiParameters = $jsApi->getParameters();
//echo $jsApiParameters;
?>
<html>
<head>
<meta charset="utf-8">
<title>支付頁面</title>
<script type="text/javascript">
//調(diào)用微信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怎么開發(fā)
代碼有兩個php文件
1.oauth4.php
<?php$code=$_GET['code'];
$state=$_GET['state'];
$appid='XXXX';
$appsecret='XXXXXXXX';//
if (empty($code)) $this->error('授權(quán)失敗');
$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');//要跳轉(zhuǎn)的文件路徑
?>
2.redpack.php
<?php//XXXXX。。是需要開發(fā)者自己填寫的內(nèi)容,注意不要泄密
// 從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');
}
}
// 關(guān)鍵的函數(shù)
public function weixin_red_packet(){
// 請求參數(shù)
// 隨機字符串
$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,輸入待發(fā)紅包的用戶openid
session_start();
$data['re_openid']=$_SESSION["openid"];
//付款金額
$data['total_amount']="XXXX";
//紅包發(fā)放總?cè)藬?shù)
$data['total_num']="XXXX";
//紅包祝福語
$data['wishing']="XXXX";
//IP地址
$data['client_ip']=$_SERVER['LOCAL_ADDR'];
//活動名稱
$data['act_name']="XXXXX";
//備注
$data['remark']="XXXXX";
// 生成簽名
//對數(shù)據(jù)數(shù)組進行處理
//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));
/*
發(fā)紅包操作過程:
1.將請求數(shù)據(jù)轉(zhuǎn)換成xml
2.發(fā)送請求
3.將請求結(jié)果轉(zhuǎn)換為數(shù)組
4.將請求信息和請求結(jié)果錄入到數(shù)據(jù)庫中
4.判斷是否通信成功
5.判斷是否轉(zhuǎn)賬成功
*/
//發(fā)紅包接口地址
$url="https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
//將請求數(shù)據(jù)由數(shù)組轉(zhuǎn)換成xml
$xml=$this->arraytoxml($data);
//進行請求操作
$res=$this->curl($xml,$url);
//將請求結(jié)果由xml轉(zhuǎn)換成數(shù)組
$arr=$this->xmltoarray($res);
}
// 生成32位唯一隨機字符串
private function get_unique_value(){
$str=uniqid(mt_rand(),1);
$str=sha1($str);
return md5($str);
}
// 將數(shù)組轉(zhuǎn)換成xml
private function arraytoxml($arr){
$xml="<xml>";
foreach($arr as $k=>$v){
$xml.="<".$k.">".$v."</".$k.">";
}
$xml.="</xml>";
return $xml;
}
// 將xml轉(zhuǎn)換成數(shù)組
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();
//抓取指定網(wǎng)頁
curl_setopt($ch, CURLOPT_URL,$postUrl);
//設(shè)置header
curl_setopt($ch, CURLOPT_HEADER, 0);
//要求結(jié)果為字符串且輸出到屏幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//post提交方式
curl_setopt($ch, CURLOPT_POST, 1);
// 增加 HTTP Header(頭)里的字段
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
// 終止從服務(wù)端進行驗證
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
//證書放到網(wǎng)站根目錄的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);
//關(guān)閉curl
curl_close($ch);
return $data;
}
?>
可參考官方文檔進行調(diào)整開發(fā),希望能有幫助,望采納
四、構(gòu)建了PHP環(huán)境后,寫完的代碼放在哪
phpnow中的根目錄中的htdocs文件夾就是你網(wǎng)頁(也就是你的站點)的根目錄。當(dāng)你在瀏覽器地址欄輸入“http://localhost”或者“http://你的ip地址”的時候,瀏覽器進入的就是這個htdocs文件夾。剛剛安裝完phpnow的時候,你的htdocs文件夾應(yīng)該有一個index.html文件,你第一次在瀏覽器地址欄輸入“http://localhost”或者“http://你的ip地址”的時候,瀏覽器會瀏覽到index.html這個網(wǎng)頁,你需要在這個網(wǎng)頁測試一下數(shù)據(jù)庫是否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了,應(yīng)該說清楚了吧??比較啰嗦了。
以上就是關(guān)于PHP部署ChatGPT相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
PHP寫接口(php寫接口實現(xiàn)json文件讀?。?/a>
iphone怎么用chatGPT(IPHONE怎么用2個咕咚)
農(nóng)村景觀設(shè)計村民活動區(qū)域(農(nóng)村景觀設(shè)計村民活動區(qū)域分析)