本文目錄一覽:
- 1、PHP微信掃碼支付成功後,怎麼給微信返回succ
- 2、微信掃碼支付2 支付成功後是如何返回給微信參數通知處理成功 (php版)
- 3、php版微信返回用戶text輸入的方法
- 4、php結合app微信登錄 php需要做什麼操作
- 5、PHP怎麼解析微信支付結果返回的xml
PHP微信掃碼支付成功後,怎麼給微信返回succ
微信支付已經由微信接管了,此時是微信通過回調的方式來通知我們的業務服務器端用戶的支付狀態
微信掃碼支付2 支付成功後是如何返回給微信參數通知處理成功 (php版)
已解決 請問微信支付V3,在支付成功後通過哪個回調的值更新訂單狀態呢?
?php
ini_set(‘date.timezone’,’Asia/Shanghai’);
// error_reporting(E_ERROR);
error_reporting(0);
require_once “WxPay.Api.php”;
require_once ‘log.php’;
require_once(“../../includes/mysql.class.php”);
//初始化日誌
// $logHandler= new CLogFileHandler(“./logs/”.date(‘Y-m-d’).’.log’);
// $log = Log::Init($logHandler, 15);
$xml = $GLOBALS[‘HTTP_RAW_POST_DATA’];
//禁止引用外部xml實體
$successdata=xmlToArray($xml);
// file_put_contents(‘log.txt’,json_encode($successdata));
function xmlToArray($xml)
{
//將XML轉為array
$array_data = json_decode(json_encode(simplexml_load_string($xml, ‘SimpleXMLElement’, LIBXML_NOCDATA)), true);
return $array_data;
}
// function printf_info($data)
// {
// foreach($data as $key=$value){
// echo “font color=’#f00;’$key/font : $value br/”;
// }
// }
$out_trade_no=$successdata[‘out_trade_no’];
if(!empty($out_trade_no)){
$input = new WxPayOrderQuery();
$input-SetOut_trade_no($out_trade_no);
$result=WxPayApi::orderQuery($input);
// printf_info($result);
if(array_key_exists(“return_code”, $result) array_key_exists(“result_code”, $result) $result[“return_code”] == “SUCCESS” $result[“result_code”] == “SUCCESS”)
{
//file_put_contents(‘log.txt’,’支付成功’.$out_trade_no.$pid.$tel.$numbers.$poss);
//支付成功
//改變訂單狀態
$sql=”update pai_deposit set status=’1′,paytime='”.date(“Y-m-d H:i:s”).”‘ where out_trade_no='{$out_trade_no}'”;
// file_put_contents(‘log.txt’,$sql);
$con=new connection();
$result=$con-Query($sql);
echo “success”;
$openid=$successdata[‘openid’];
$total_fee=$successdata[‘total_fee’]*0.01;
$attach=$successdata[‘attach’];
$sql=”select * from pai_deposit where out_trade_no='{$out_trade_no}'”;
$result_deposit=$con-QueryArray($sql);
$sql=”select * from paipro where id='”.$result_deposit[0][‘pid’].”‘”;
$result_pro=$con-QueryArray($sql);
sendmsg($openid,$total_fee,$result_pro[0][‘title’],$out_trade_no,$result_deposit[0][‘tel’]);
exit();
}
echo ‘fail’;
exit();
}
else
{
//file_put_contents(‘log.txt’,’支付失敗2′.$out_trade_no);
echo ‘fail’;
exit();
}
function sendmsg($wxid,$total,$title,$order_id,$tel)
{
$access_token=new_access_token();
$url = ”.$access_token;
$w_title=”付款成功通知”;
// $w_url=’http://’.$_SERVER[‘HTTP_HOST’].”/mobile/user.php?act=fenxiao1wxid=”.$wxid;
$w_url=”;
$rtime=date(“Y-m-d H:i:s”);
$w_description=”訂單編號:{$order_id}\r\n保證金:¥{$total}元\r\n商品詳情:{$title}\r\n聯繫電話:{$tel}\r\n付款時間:{$rtime}”;
$post_msg = ‘{
“touser”:”‘.$wxid.'”,
“msgtype”:”news”,
“news”:{
“articles”: [
{
“title”:”‘.$w_title.'”,
“description”:”‘.$w_description.'”,
“url”:”‘.$w_url.'”,
“picurl”:”‘.$w_picurl.'”
}
]
}
}’;
$ret_json = curl_grab_page($url, $post_msg);
$ret = json_decode($ret_json);
if($ret-errmsg != ‘ok’)
{
$access_token = new_access_token();
$url = ”.$access_token;
$ret_json = curl_grab_page($url, $post_msg);
$ret = json_decode($ret_json);
}
}
function curl_grab_page($url, $data, $proxy = ”, $proxystatus = ”, $ref_url = ”) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, “Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)”);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if ($proxystatus == ‘true’) {
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
if (!empty($ref_url)) {
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_REFERER, $ref_url);
}
if (defined(‘CURLOPT_IPRESOLVE’) defined(‘CURL_IPRESOLVE_V4’)) {
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER[‘HTTP_USER_AGENT’]);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
ob_start();
return curl_exec ($ch);
ob_end_clean();
curl_close ($ch);
unset($ch);
}
function new_access_token() {
$appid = ‘wx52dc8c34087d302c’;
$appsecret =’d70878f040f08fa55766bf6d3db5508a’;
$time = time();
$url = “;appid=$appidsecret=$appsecret”;
$ret_json = curl_get_contents($url);
$ret = json_decode($ret_json);
return $ret-access_token;
}
function curl_get_contents($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);
curl_setopt($ch, CURLOPT_REFERER, _REFERER_);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if (defined(‘CURLOPT_IPRESOLVE’) defined(‘CURL_IPRESOLVE_V4’)) {
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$r = curl_exec($ch);
curl_close($ch);
return $r;
}
?
參考地址
已解決 請問微信支付V3,在支付成功後通過哪個回調的值更新訂單狀態呢?
php版微信返回用戶text輸入的方法
本文實例講述了php版微信返回用戶text輸入的方法。分享給大家供大家參考,具體如下:
獲得用戶輸入的內容,並發回相同內容
//獲取post數據
//
$PostData
=
$HTTP_RAW_POST_DATA;
$PostData
=
file_get_contents(“php://input”);
//判斷POST是否為空
if(!$PostData){
echo
“wrong
input!”;
exit(0);
}
//解析XML字符串
$xmlObj
=
simplexml_load_string($PostData,
‘SimpleXMLElement’,
LIBXML_NOCDATA);
if(!$xmlObj){
echo
“wrong
input!”;
exit(0);
}
//獲取數據
$fromUserName
=
$xmlObj-FromUserName;
$toUserName
=
$xmlObj-ToUserName;
$msgType
=
$xmlObj-MsgType;
//返回用戶輸入
if(‘text’
!=
$msgType){
//不是文本,輸出錯誤提示消息
$retMsg
=
“只支持文本消息”;
}
//用戶輸入文本
else{
$content
=
$xmlObj-Content;
$retMsg
=
$content;
}
//輸出xml模板
$retTmp
=
“xml
ToUserName![CDATA[%s]]/ToUserName
FromUserName![CDATA[%S]]/FromUserName
CreateTime%s/CreateTime
MsgType![CDATA[text]]/MsgType
Content![CDATA[%s]]/Content
FuncFlag0/FuncFlag
/xml”;
//對消息中的通配符進行替換
$resultStr
=
sprintf($retTmp,
$fromUserName,
$toUserName,
time(),
$retMsg);
//輸出xml的消息
echo
$resultStr
更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP微信開發技巧匯總》、《PHP編碼與轉碼操作技巧匯總》、《PHP網絡編程技巧總結》、《PHP基本語法入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
php結合app微信登錄 php需要做什麼操作
1、app單獨做微信授權登錄獲取到unionid
2、app根據unionid請求服務器(php),服務器判斷是否有該會員,如果沒有就做註冊,如有已經有了直接就返回會員信息
3、就是app請求的時候盡量吧app的平台信息(比如安卓或者ios)一起發給服務器。服務器好做登錄記錄
PHP怎麼解析微信支付結果返回的xml
$input = file_get_contents(‘php://input’);
if (!empty($input) empty($_GET[‘out_trade_no’])) {
$obj = simplexml_load_string($input, ‘SimpleXMLElement’, LIBXML_NOCDATA);
$data = json_decode(json_encode($obj), true);
//根據$data處理自己所要的邏輯
}
$data具體參數看微信文檔,最常用的是:out_trade_no(商戶訂單號)、transaction_id(微信交易號)、result_code(交易狀態)
交易狀態如果是success記得處理完邏輯後返回一個success,不然微信會認為你的處理未完成而繼續向服務器發送請求
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/285117.html