本文目录一览:
- 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,不然微信会认为你的处理未完成而继续向服务器发送请求