微信扫码支付2 支付成功后是如何返回给微信参数通知处理成功 (php版)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信扫码支付2 支付成功后是如何返回给微信参数通知处理成功 (php版)相关的知识,希望对你有一定的参考价值。

文档中是这样写的
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
</xml>

具体如何返回呢?

已解决 请问微信支付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 = \'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=\'.$access_token;

$w_title="付款成功通知";
// $w_url=\'http://\'.$_SERVER[\'HTTP_HOST\']."/mobile/user.php?act=fenxiao1&wxid=".$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 = \'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=\'.$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 = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$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,在支付成功后通过哪个回调的值更新订单状态呢?
http://goonls.com/?p=883
参考技术A echo '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';

微支付中扫码支付开发流程是怎样的?

公众号已经开通了支付功能,现在需要开发扫码支付,请问具体怎么开发?

  扫码支付开发流程:

  (1)商户后台系统根据微信支付规定格式生成二维码,展示给用户扫码。

  (2)用户打开微信“扫一扫”扫描二维码,微信客户端将扫码内容发送到微信支付系统。

  (3)微信支付系统收到客户端请求,发起对商户后台系统支付回调URL的调用。调用请求将带productid和用户的openid等参数,并要求商户系统返回交数据包

  (4)商户后台系统收到微信支付系统的回调请求,根据productid生成商户系统的订单。

  (5)商户系统调用微信支付【统一下单API】请求下单,获取交易会话标识(prepay_id)

  (6)微信支付系统根据商户系统的请求生成预支付交易,并返回交易会话标识(prepay_id)。

  (7)商户后台系统得到交易会话标识prepay_id(2小时内有效)。

  (8)商户后台系统将prepay_id返回给微信支付系统。

  (9)微信支付系统根据交易会话标识,发起用户端授权支付流程。

  (10)用户在微信客户端输入密码,确认支付后,微信客户端提交支付授权。

  (11)微信支付系统验证后扣款,完成支付交易。

  (12)微信支付系统完成支付交易后给微信客户端返回交易结果,并将交易结果通过短信、微信消息提示用户。微信客户端展示支付交易结果页面。

  (13)微信支付系统通过发送异步消息通知商户后台系统支付结果。商户后台系统需回复接收情况,通知微信后台系统不再发送该单的支付通知。

  (14)未收到支付通知的情况,商户后台系统调用【查询订单API】。

  (15)商户确认订单已支付后给用户发货。

参考技术A 微支付中扫码支付开发流程是... 参考技术B 大神教你扫码支付开发流程 参考技术C

开通所需资料:

1.单位证件:执照等有效期证件照片;

2.结算账户:

3.身份证照片:管理人员的身份证正反面照片;

4.邮箱地址:联系人的常用邮箱;

5.手机号码:联系人的手机号,需要接验证码。

开通方法:

以上资料准备好后,直接去 优度网 找工作人员,可快速开通扫码付功能,所需时间为3工作日内。

使用方法:

商家可将制作好的二维码放在收银台、商品包装、网站等任何可展示的地方。之后,用户通过扫码、输入金额便可完成付款。

以上是关于微信扫码支付2 支付成功后是如何返回给微信参数通知处理成功 (php版)的主要内容,如果未能解决你的问题,请参考以下文章

PHP版本,微信扫码支付native模式二,扫码支付成功,页面静止不动,怎么可以支付回调URL?

微信,weixin,微信支付成功后的回调函数 通知怎么处理

微支付中扫码支付开发流程是怎样的?

微信扫码支付

python实现微信扫码支付完整流程

总结一下微信扫码支付小程序支付的几个坑