導航:首頁 > 編程語言 > php微信例子

php微信例子

發布時間:2023-03-01 03:29:04

A. 如何用php實現微信支付,求教。新手!說明詳細點

以PHP語言為例,對微信支付的開發流程進行一下說明:

1.獲取訂單信息。

2.根據訂單信息和支付相關的賬號生成sign,並且生成支付參數。

3.將支付參數信息POST到微信伺服器,獲取返回信息。

4.根據返回信息生成相應的支付代碼(微信內部)或是支付二維碼(非微信內),完成支付。

B. PHP 微信上傳永久素材

http請求方式: POST/FORM
http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
調用示例(使用curl命令,用FORM表單方式上傳一個多媒體文件):
curl -F [email protected] "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE"

你這種情況屬於使用curl命令的方式傳值,幫助文檔:http://linux.51yip.com/search/curl

正確情況下的返回JSON數據包結果如下:{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}
錯誤情況下的返回JSON數據包示例如下(示例為無效媒體類型錯誤):{"errcode":40004,"errmsg":"invalid media type"}
另外全局返回碼說明:https://mp.weixin.qq.com/wiki/17/.html

C. 求微信公眾號介面 給客戶發送信息的 PHP代碼

你好,可以用客服消息介面或模板消息介面實現。但是需要認證公眾號才能有許可權。


認證服務號可以發送客服介面消息[需要對應openid24小時內有互動]和模板消息,訂閱號則沒有模板消息許可權。


發送文字消息示例:

$postdata='{"touser":"o5BkRs_vRwfPqAb1ceXHfJDzmQ5o","msgtype":"text","text":{"content":"HelloWorld"}}';
$opts=array(
'http'=>array(
'method'=>'POST',
'Content-Length'=>strlen($postdata),
'Host'=>'api.weixin.qq.com',
'Content-Type'=>'application/json',
'content'=>$postdata
)
);
$context=stream_context_create($opts);
$result=file_get_contents('https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=你的access_token',true,$context);
echo$result;

D. php如何編寫一個微信公眾平台的消息推送

給你個代碼樣例不可以直接復制使用

/**
*發送模板消息
*@param$tmpId模板ID
*@param$openId用戶openID
*@param$param模板參數
*@param$url
*@returnmixed
*@authorfjlhuman
*/
publicfunctionsendTmpMessage($tmpId,$openId,$param,$url){

$postUrl="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$this->accessToken;

$arrData['touser']=$openId;
$arrData['template_id']=$tmpId;//'6OT8DDNF-CbiadTsbEKKSCZVHe_9hnhxOBT7EvURNcE';
$arrData['url']=$url;
$arrData['data']=$param;

$json=json_encode($arrData);
$result=Curl::post($postUrl,$json);

$result=json_decode($result,true);

$rData['isTure']=false;
$rData['msg']="";

if($result['errcode']==0){
$rData['isTure']=true;
$rData['msg']="發送成功";
}else{
$rData['msg']=$result['errcode'];
}
return$rData;

}

詳情請參考微信公眾平台技術文檔->模板消息介面

E. 幫忙寫個微信公眾平台模板消息範例 PHP

如圖所示:openidid改成你自己的,介面URL改下,由於網路不等發鏈接

<?php
$access_token='_e8';
$url='改成介面URL?access_token='.$access_token;//access_token改成你的有效值

$data=array(
'first'=>array(
'value'=>'有一名客戶進行了一次預約!',
'color'=>'#FF0000'
),
'keyword1'=>array(
'value'=>'2015/10/514:00~14:45',
'color'=>'#FF0000'
),
'keyword2'=>array(
'value'=>'都會型SPA',
'color'=>'#FF0000'
),
'keyword3'=>array(
'value'=>'1cvvvv',
'color'=>'#FF0000'
),
'keyword4'=>array(
'value'=>'上海市浦東新區XXXXSPA館',
'color'=>'#FF0000'
),
'keyword5'=>array(
'value'=>'無',
'color'=>'#FF0000'
),
'remark'=>array(
'value'=>'請您務必准時到場為客戶提供SPA服務!',
'color'=>'#FF0000'
)
);
$template_msg=array('touser'=>'ojM5us46feM315cpmfQ9hAWfX8rE','template_id'=>'','topcolor'=>'#FF0000','data'=>$data);

$curl=curl_init($url);
$header=array();
$header[]='Content-Type:application/x-www-form-urlencoded';
curl_setopt($curl,CURLOPT_HTTPHEADER,$header);
//不輸出header頭信息
curl_setopt($curl,CURLOPT_HEADER,0);
//偽裝瀏覽器
curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,likeGecko)Chrome/41.0.2272.118Safari/537.36');
//保存到字元串而不是輸出
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
//post數據
curl_setopt($curl,CURLOPT_POST,1);
//請求數據
curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($template_msg));
$response=curl_exec($curl);
curl_close($curl);
echo$response;

F. 微信平台 php 示例 token驗證失敗

你的伺服器沒有正確響應Token驗證,請閱讀消息介面使用指南這樣回頭檢查一下各項配置是否正確。如果確定配置沒有問題,請按下面的方法檢查2.請求URL超時你的伺服器在國外,或者伺服器網速不給力,一般多試幾次就可以了。如果經常這樣,就需要考慮更換伺服器3.提交成功恭喜你,配置成功了。這是一種方法 詳細圖文教程和其他幾種方法你可以訪問這個鏈接希望可以幫到你

G. PHP開發微信公眾號,然後想實現:關注用戶發一條消息,回復多條消息。如圖☞ 各位大神拜託了

這種需要走客服介面才可以,常規的被動回復只能發一條。不過客服介面需要認證公眾號才可以調用。

H. 如何利用PHP實現 APP端微信支付功能

一丶PHP後台後台生成預支付交易單,返回正確的預支付交易回話標識後再在APP裡面調起支付!官方文檔:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1

根據文檔拼接微信需要的參數,這里需要幾個方法,直接上代碼!

傳輸給微信的參數要組裝成xml格式發送,傳如參數數組!
publicfunctionToXml($data=array())

{
if(!is_array($data)||count($data)<=0)
{
return'數組異常';
}

$xml="";
foreach($dataas$key=>$val)
{
if(is_numeric($val)){
$xml.="<".$key.">".$val."";
}else{
$xml.="<".$key.">";
}
}
$xml.="";
return$xml;
}

2.生成隨機字元串,微信所需參數!這里方法很多,看自己愛好都行!

functionrand_code(){
$str='';//62個字元
$str=str_shuffle($str);
$str=substr($str,0,32);
return$str;
}

3.這里是微信比較重要的一步了,這個方法會多次用到!生成簽名

privatefunctiongetSign($params){
ksort($params);//將參數數組按照參數名ASCII碼從小到大排序
foreach($paramsas$key=>$item){
if(!empty($item)){//剔除參數值為空的參數
$newArr[]=$key.'='.$item;//整合新的參數數組
}
}
$stringA=implode("&",$newArr);//使用&符號連接參數
$stringSignTemp=$stringA."&key="."************************";//拼接key
//key是在商戶平台API安全里自己設置的
$stringSignTemp=MD5($stringSignTemp);//將字元串進行MD5加密
$sign=strtoupper($stringSignTemp);//將所有字元轉換為大寫
return$sign;
}

4.傳遞參數給微信,生成預支付訂單!接收微信返回的數據,在反給APP端,APP端調用支付介面,完成支付!APP端所需參數見微信文檔:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2

publicfunctionwx_pay(){

$nonce_str=$this->rand_code();//調用隨機字元串生成方法獲取隨機字元串
$data['appid']='wxdbc5dc*******';//appid
$data['mch_id']='1493*****';//商戶號
$data['body']="APP支付測試";
$data['spbill_create_ip']=$_SERVER['HTTP_HOST'];//ip地址
$data['total_fee']=1;//金額
$data['out_trade_no']=time().mt_rand(10000,99999);//商戶訂單號,不能重復
$data['nonce_str']=$nonce_str;//隨機字元串
$data['notify_url']='https://www.5wx.org/';接收支付後的通知,必須為能直接訪問的網址,不能跟參數
$data['trade_type']='APP';//支付方式
//將參與簽名的數據保存到數組注意:以上幾個參數是追加到$data中的,$data中應該同時包含開發文檔中要求必填的剔除sign以外的所有數據
$data['sign']=$this->getSign($data);//獲取簽名
$xml=$this->ToXml($data);//數組轉xml
//curl傳遞給微信方
$url="https://api.mch.weixin.qq.com/pay/unifiedorder";
//header("Content-type:text/xml");
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
if(stripos($url,"https://")!==FALSE){
curl_setopt($ch,CURLOPT_SSLVERSION,CURL_SSLVERSION_TLSv1);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
}else{
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//嚴格校驗
}
//設置header
curl_setopt($ch,CURLOPT_SSLVERSION,CURL_SSLVERSION_TLSv1);
curl_setopt($ch,CURLOPT_HEADER,FALSE);
//要求結果為字元串且輸出到屏幕上
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
//設置超時
curl_setopt($ch,CURLOPT_TIMEOUT,30);
curl_setopt($ch,CURLOPT_POST,TRUE);
//傳輸文件
curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);
//運行curl
$data=curl_exec($ch);
//返回結果
if($data){
curl_close($ch);
//返回成功,將xml數據轉換為數組.
$re=$this->FromXml($data);
if($re['return_code']!='SUCCESS'){
json("201",'簽名失敗');
}
else{
//接收微信返回的數據,傳給APP!
$arr=array(
'prepayid'=>$re['prepay_id'],
'appid'=>'wxdbc5dc*****',
'partnerid'=>'14937****',
'package'=>'Sign=WXPay',
'noncestr'=>$nonce_str,
'timestamp'=>time(),
);
//第二次生成簽名
$sign=$this->getSign($arr);
$arr['sign']=$sign;
json('200','簽名成功',$arr);
}
}else{
$error=curl_errno($ch);
curl_close($ch);
json('201',"curl出錯,錯誤碼:$error");
}
}

5.將xml數據轉換為數組,接收微信返回數據時用到.

publicfunctionFromXml($xml)
{
if(!$xml){
echo"xml數據異常!";
}
//將XML轉為array
//禁止引用外部xml實體
libxml_disable_entity_loader(true);
$data=json_decode(json_encode(simplexml_load_string($xml,'SimpleXMLElement',LIBXML_NOCDATA)),true);
return$data;
}

二.APP支付成功後,會調用你填寫的回調地址.返回參數詳見微信文檔:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_7&index=3

//微信支付回調
functionwx_notify(){
//接收微信返回的數據數據,返回的xml格式
$xmlData=file_get_contents('php://input');
//將xml格式轉換為數組
$data=$this->FromXml($xmlData);
//用日誌記錄檢查數據是否接受成功,驗證成功一次之後,可刪除。
$file=fopen('./log.txt','a+');
fwrite($file,var_export($data,true));
//為了防止假數據,驗證簽名是否和返回的一樣。
//記錄一下,返回回來的簽名,生成簽名的時候,必須剔除sign欄位。
$sign=$data['sign'];
unset($data['sign']);
if($sign==$this->getSign($data)){
//簽名驗證成功後,判斷返回微信返回的
if($data['result_code']=='SUCCESS'){
//根據返回的訂單號做業務邏輯
$arr=array(
'pay_status'=>1,
);
$re=M('order')->where(['order_sn'=>$data['out_trade_no']])->save($arr);
//處理完成之後,告訴微信成功結果!
if($re){
echo'';exit();
}
}
//支付失敗,輸出錯誤信息
else{
$file=fopen('./log.txt','a+');
fwrite($file,"錯誤信息:".$data['return_msg'].date("Y-m-dH:i:s"),time()." ");
}
}
else{
$file=fopen('./log.txt','a+');
fwrite($file,"錯誤信息:簽名驗證失敗".date("Y-m-dH:i:s"),time()." ");
}

}

在這里,微信APP支付流程就成功走完了!謝謝支持!

---------------------

閱讀全文

與php微信例子相關的資料

熱點內容
硬體加密機性能測試 瀏覽:825
程序員貼面膜的正確方法 瀏覽:74
如何開啟app步數授權 瀏覽:22
linuxmaven路徑 瀏覽:137
python爬qq說說 瀏覽:416
linuxmap文件 瀏覽:67
轉轉app如何搜索快手主播 瀏覽:776
移動硬碟文件夾成0位元組 瀏覽:683
夢幻西遊解壓視頻大全 瀏覽:252
解壓小視頻手速 瀏覽:152
我的世界伺服器卡沒血如何修改 瀏覽:161
vba入門到精通pdf 瀏覽:113
tomcat怎麼一個伺服器部署 瀏覽:797
phphttps介面 瀏覽:895
javabyte數組int 瀏覽:810
公司網路共享的文件夾 瀏覽:1000
拍臉搭配衣服是什麼app 瀏覽:916
歐珀手機怎麼更改加密密碼 瀏覽:508
程序員那麼可愛陸漓氣人語錄 瀏覽:904
python中del刪除 瀏覽:461