微信漏洞领钱是真的吗是截取吗

匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。在完全实现微信支付的配置之前,你应该已经完成了1:模块的域名绑定:-----------------&&&如果这一步你没操作,请点击查看,并完成操作 &&& &查看2:微信支付接口全部权限---------&&&如果这一步你没操作,请到微信官方申请微信支付(需要说明的是微信的认证是需要收费的,一般是300元)3:微信接口授权的网页授权获取用户信息-----------------&&&如果这一步你没操作,请点击查看,并完成操作 &&& &查看如果这些操作你都完成了,那么可以进行下面的设置了。如果你没有ftp软件你可以在这里下载 &&& &点击查看用ftp软件连接上你得网站,在网站目录下找到以下两个文件,目录如下:system/modules/pay/lib/weixin/WxPay.pub.config.php &电脑的微信支付接口写入地方system/modules/pay/lib/wxpay/WxPay.pub.config.php &手机的微信支付接口写入地方把接口内的4个信息对应修改为自己的就可以,如果是手机支付还要修改下网址,如下图:appId:微信公众号身份的唯一标识。审核通过后,在微信发送的邮件中查看。 Mchid:受理商ID,身份标识 Key:商户支付密钥Key。其中key在商户平台登陆后,然后安装好证书,设置个32位的密匙就可以了,其他都在公共平台找 Appsecret:JSAPI接口中获取openid,审核后在公众平台开启开发模式后可查看如果是手机,则在开发者中心找到如下图:把里面的授权回调页面域名,改为自己的手机地址:接下来.点公共平台左边的微信支付--开发配置看看到支付授权目录 & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &支付授权目录改为:/index.php/mobile/home/invite//system/modules/mobile//pay/demo/(修改对应自己的手机站),如下图:说明:扫码支付的回调地址:/index.php/member/home然后正常测试就可以了如果跳出 统一支付接口中,缺少必填参数openid!trade_type为JSAPI时,openid为必填参数!。那应该是KEY设置的不对,请一定要设置为32位的,电脑端网页 微信扫码支付和支付宝支付
注意:支付完成后的通知地址中,格式要使用a\5\b\3这种的,而不是a=5&b=3这种的,否则通知不到。
电脑端手机端的微信和支付宝支付都已掌握,贴一下代码备用 ,基于thinkphp
class WxpayMobile extends Action{
//在类初始化方法中,引入相关类库
public function _initialize() {
header("Content-type:text/charset=utf-8");
vendor('WxPayPubHelper.SDKRuntimeException');
define("APPID", C('WX_APPID'));
define("MCHID", C('WX_MCHID'));
define("KEY", C('WX_KEY'));
define("APPSECRET", C('WX_APPSECRET'));
define("JS_API_CALL_URL", C('site_url').U('Wxpay/wap_dowxpay'));
define('SSLCERT_PATH',C('site_url').'/Framework/Extend/Vendor/WxPayPubHelper/cacert/apiclient_cert.pem');
define('SSLKEY_PATH',C('site_url').'/Framework/Extend/Vendor/WxPayPubHelper/cacert/apiclient_key.pem');
define('NOTIFY_URL',C('site_url').'/index.php/Wxpay/通知接口');
define('CURL_TIMEOUT',30);
vendor('WxPayPubHelper.WxPayPubHelper');
public function index() {
echo "禁止访问";
public function dowxpay(){
//使用统一支付接口
$unifiedOrder = new UnifiedOrder_pub();
$fee = $_POST['pay_cash']*100;
//echo "'".$_POST['mas_id']."'";
//设置统一支付接口参数
//设置必填参数
//appid已填,商户无需重复填写
//mch_id已填,商户无需重复填写
//noncestr已填,商户无需重复填写
//spbill_create_ip已填,商户无需重复填写
//sign已填,商户无需重复填写
$unifiedOrder-&setParameter("body","订单付款");//商品描述
//自定义订单号,此处仅作举例
$out_trade_no = $_POST['order_no'];
$unifiedOrder-&setParameter("out_trade_no",$out_trade_no);//商户订单号
$unifiedOrder-&setParameter("total_fee",$fee);//总金额
$unifiedOrder-&setParameter("notify_url",NOTIFY_URL);//通知地址
$unifiedOrder-&setParameter("trade_type","NATIVE");//交易类型
//非必填参数,商户可根据实际情况选填
//$unifiedOrder-&setParameter("sub_mch_id","XXXX");//子商户号
//$unifiedOrder-&setParameter("device_info","XXXX");//设备号
//$unifiedOrder-&setParameter("attach","'".$_POST['mas_id']."'");//附加数据
//$unifiedOrder-&setParameter("time_start","XXXX");//交易起始时间
//$unifiedOrder-&setParameter("time_expire","XXXX");//交易结束时间
//$unifiedOrder-&setParameter("goods_tag","XXXX");//商品标记
//$unifiedOrder-&setParameter("openid","XXXX");//用户标识
//$unifiedOrder-&setParameter("product_id","XXXX");//商品ID
//获取统一支付接口结果
$unifiedOrderResult = $unifiedOrder-&getResult();
//print_r($unifiedOrderResult);
//商户根据实际情况设置相应的处理流程
if ($unifiedOrderResult["return_code"] == "FAIL")
//商户自行增加处理流程
echo "通信出错:".$unifiedOrderResult['return_msg']."&br&";
elseif($unifiedOrderResult["result_code"] == "FAIL")
//商户自行增加处理流程
echo "错误代码:".$unifiedOrderResult['err_code']."&br&";
//echo "错误代码描述:".$unifiedOrderResult['err_code_des']."&br&";
elseif($unifiedOrderResult["code_url"] != NULL)
//从统一支付接口获取到code_url
$code_url = $unifiedOrderResult["code_url"];
//商户自行增加处理流程
$this-&assign('code_url',$code_url);
$this-&assign('out_trade_no',$out_trade_no);
$this-&display();
//支付界面
public function pay_online(){
//获取会员信息
if(!isset($_SESSION['open_id'])){
get_code();
$Apply = D('ApplyView');
$where = array(
'id'=&$_GET['out_trade_no'],
$my_order=$Apply-&where($where)-&find();
//$my_order = $Apply-&where($where)-&find();
if(empty($my_order)){
$this-&error('该订单不存在!',U('User/index'));
}elseif($my_order['pay_state']==1){
$this-&error('该订单已经支付过!',U('User/index'));
header("Content-type:text/charset=utf-8");
//获取店铺微信支付数据
define("APPID", C('WX_APPID'));
define("MCHID", C('WX_MCHID'));
define("KEY", C('WX_KEY'));
define("APPSECRET", C('WX_APPSECRET'));
define('NOTIFY_URL','http://'.$_SERVER['HTTP_HOST'].'/index.php/Wxpay/notifyurl');
define('CURL_TIMEOUT',30);
vendor('WxPayPubHelper.WxPayPubHelper');
vendor('WxPayPubHelper.SDKRuntimeException');
$out_trade_no = $my_order['id'];
$fee = $my_order['cost'];
//应付金额
//使用jsapi接口
$jsApi = new JsApi_pub();
//=========步骤1:网页授权获取用户openid============
//通过code获得openid
$openid = $_SESSION['open_id'];
//=========步骤2:使用统一支付接口,获取prepay_id============
//使用统一支付接口
$unifiedOrder = new UnifiedOrder_pub();
/* 日 18:27:53 用户子商户付款 &*/
//$Shop = M('Shop');
//$shop = $Shop-&where('shopid = '.$my_order['shopid'])-&find();
//$unifiedOrder-&setParameter("sub_appid",$shop['wx_appid']);//子商户号码
// echo $shop['wx_appid'];
$unifiedOrder-&setParameter("sub_mch_id",MCHID);//子商户号码
/* 日 18:27:53 用户子商户付款 &*/
//dump($openid);dump($out_trade_no);dump(NOTIFY_URL);
$unifiedOrder-&setParameter("openid","$openid");//商品描述
$unifiedOrder-&setParameter("body","报名付款");//商品描述
//自定义订单号,此处仅作举例
$unifiedOrder-&setParameter("out_trade_no",$out_trade_no);//商户订单号
$unifiedOrder-&setParameter("total_fee",$fee*100);//总金额
$unifiedOrder-&setParameter("notify_url",NOTIFY_URL);//通知地址
$unifiedOrder-&setParameter("trade_type","JSAPI");//交易类型
$prepay_id = $unifiedOrder-&getPrepayId();
if($prepay_id==null){
$this-&error('发起支付失败,请联系管理员!',U('User/index'));
//=========步骤3:使用jsapi调起支付============
$jsApi-&setPrepayId($prepay_id);
$jsApiParameters = $jsApi-&getParameters();
$this-&assign('jsApiParameters',$jsApiParameters);
$this-&assign('my_order',$my_order);
$this-&assign('share_ok_url',U('User/index'));
$this-&assign('title',"微信支付");
$this-&display();
public function wap_dowxpay(){
if($_POST['order_no']){
$_SESSION['order_no'] = $_POST['order_no'];
if($_POST['pay_cash']){
$_SESSION['pay_cash'] = $_POST['pay_cash'];
if($_SESSION['order_no']){
$out_trade_no = $_SESSION['order_no'];
if($_SESSION['pay_cash']){
$fee = $_SESSION['pay_cash'];
//使用jsapi接口
$jsApi = new JsApi_pub();
//=========步骤1:网页授权获取用户openid============
//通过code获得openid
if (!isset($_GET['code']))
//触发微信返回code码
$url = $jsApi-&createOauthUrlForCode(JS_API_CALL_URL);
Header("Location: $url");
//获取code码,以获取openid
$code = $_GET['code'];
$jsApi-&setCode($code);
$openid = $jsApi-&getOpenId();
//=========步骤2:使用统一支付接口,获取prepay_id============
//使用统一支付接口
$unifiedOrder = new UnifiedOrder_pub();
//设置统一支付接口参数
//设置必填参数
//appid已填,商户无需重复填写
//mch_id已填,商户无需重复填写
//noncestr已填,商户无需重复填写
//spbill_create_ip已填,商户无需重复填写
//sign已填,商户无需重复填写
$unifiedOrder-&setParameter("openid","$openid");//商品描述
$unifiedOrder-&setParameter("body","订单付款");//商品描述
//自定义订单号,此处仅作举例
$unifiedOrder-&setParameter("out_trade_no",$out_trade_no);//商户订单号
$unifiedOrder-&setParameter("total_fee",$fee*100);//总金额
$unifiedOrder-&setParameter("notify_url",NOTIFY_URL);//通知地址
$unifiedOrder-&setParameter("trade_type","JSAPI");//交易类型
//非必填参数,商户可根据实际情况选填
//$unifiedOrder-&setParameter("sub_mch_id","XXXX");//子商户号
//$unifiedOrder-&setParameter("device_info","XXXX");//设备号
//$unifiedOrder-&setParameter("attach","XXXX");//附加数据
//$unifiedOrder-&setParameter("time_start","XXXX");//交易起始时间
//$unifiedOrder-&setParameter("time_expire","XXXX");//交易结束时间
//$unifiedOrder-&setParameter("goods_tag","XXXX");//商品标记
//$unifiedOrder-&setParameter("openid","XXXX");//用户标识
//$unifiedOrder-&setParameter("product_id","XXXX");//商品ID
$prepay_id = $unifiedOrder-&getPrepayId();
//=========步骤3:使用jsapi调起支付============
$jsApi-&setPrepayId($prepay_id);
$jsApiParameters = $jsApi-&getParameters();
$this-&assign('catename',"微信支付");
$this-&assign('pay_cash',$fee);
$this-&assign('jsApiParameters',$jsApiParameters);
$this-&assign_ur_here('微信支付',array(array('title'=&'微信支付','url'=&U('Index/wap_dowxpay'))));
$this-&display('Index:wap_dowxpay');
/******************************
服务器异步通知页面方法
其实这里就是将notify_url.php文件中的代码复制过来进行处理
*******************************/
public function notifyurl(){
//使用通用通知接口
$notify = new Notify_pub();
//存储微信的回调
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
$notify-&saveData($xml);
//验证签名,并回应微信。
//对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,
//微信会通过一定的策略(如30分钟共8次)定期重新发起通知,
//尽可能提高通知的成功率,但微信不保证通知最终能成功。
if($notify-&checkSign() == FALSE){
$notify-&setReturnParameter("return_code","FAIL");//返回状态码
$notify-&setReturnParameter("return_msg","签名失败");//返回信息
$notify-&setReturnParameter("return_code","SUCCESS");//设置返回码
$returnXml = $notify-&returnXml();
echo $returnXml;
//==商户根据实际情况设置相应的处理流程,此处仅作举例=======
//$log_name="notify_url.log";//log文件路径
//$this-&log_result($log_name,"【接收到的notify通知】:\n".$xml."\n");
if($notify-&checkSign() == TRUE)
if ($notify-&data["return_code"] == "FAIL") {
//此处应该更新一下订单状态,商户自行增删操作
//$this-&log_result($log_name,"【通信出错】:\n".$xml."\n");
elseif($notify-&data["result_code"] == "FAIL"){
//此处应该更新一下订单状态,商户自行增删操作
//$this-&log_result($log_name,"【业务出错】:\n".$xml."\n");
//此处应该更新一下订单状态,商户自行增删操作
//买家支付成功,开始修改订单的支付方式和付款状态
//$this-&log_result($log_name,$out_trade_no."【支付成功0000】:\n".$xml."\n");
$out_trade_no = $notify-&data["out_trade_no"];
$Apply=M('Apply');
$data['pay_state']=1;
$data['pay_type']='wxpay';
$ret= $Apply-&where(array('id'=&$out_trade_no))-&save($data);
echo "success";
//查询订单的支付状态
public function order_query(){
//退款的订单号
if (!isset($_POST["out_trade_no"]))
$out_trade_no = " ";
$out_trade_no = $_POST["out_trade_no"];
//使用订单查询接口
$orderQuery = new OrderQuery_pub();
$orderQuery-&setParameter("out_trade_no","$out_trade_no");//商户订单号
//获取订单查询结果
$orderQueryResult = $orderQuery-&getResult();
//商户根据实际情况设置相应的处理流程,此处仅作举例
if ($orderQueryResult["return_code"] == "FAIL") {
echo json_encode($orderQueryResult["return_code"]);
elseif($orderQueryResult["result_code"] == "FAIL"){
echo json_encode($orderQueryResult["result_code"]);
echo json_encode($orderQueryResult['trade_state']);
//空操作处理,所有空操作都指向空模块
public function _empty(){
$this-&redirect('Empty/index');
//获取面包屑标题
protected function assign_ur_here($title,$bread){
是一个数组
$bread = array('title'=&'ThinkPHP','url'=&'');
$breadcrumb = "&a href=".U('Index/index')."&首页&/a&";
foreach($bread as $key=&$v){
$breadcrumb.= "&&a href='".$v['url']."'&".$v['title']."&/a&";
$this-&assign('breadcrumb',$breadcrumb);
$this-&assign('seo_title',$title);
class AlipayMobile extends Action{
public function _initialize() {
header("Content-type:text/charset=utf-8");
public function index() {
echo "禁止访问";
//doalipay方法
/*该方法其实就是将接口文件包下alipayapi.php的内容复制过来
然后进行相关处理
public function doalipay(){
vendor('Alipay.Corefunction');
vendor('Alipay.Md5function');
vendor('Alipay.Notify');
vendor('Alipay.Submit');
/**************************请求参数**************************/
//这里我们通过TP的C函数把配置项参数读出,赋给$alipay_config;
$alipay_config = array(
C('alipay_partner'),
//这里是你在成功申请支付宝接口后获取到的PID;
C('alipay_key'),//这里是你在成功申请支付宝接口后获取到的Key
'private_key_path'
=& 'key/rsa_private_key.pem',
'ali_public_key_path' =& 'key/alipay_public_key.pem',
'sign_type'
=& strtoupper('MD5'),
'input_charset'
=& 'utf-8',
=& getcwd().'\\cacert.pem',
'transport'
=& 'http',
$notify_url = C('site_url').'/index.php/Alipay/通知接口'; //服务器异步通知页面路径
$return_url = C('site_url').U('User/index'); //页面跳转同步通知页面路径
$payment_type = "1"; //支付类型 //必填,不能修改
$seller_email = C('alipay_seller_email');//卖家支付宝帐户必填
$out_trade_no = $_POST['order_no'];//商户订单号 通过支付页面的表单进行传递,注意要唯一!
$subject =
"对订单".$_POST['order_no'].'付款';
//订单名称 //必填 通过支付页面的表单进行传递
$total_fee = $_POST['pay_cash'];
//付款金额
//必填 通过支付页面的表单进行传递
$body = '订单付款';
$anti_phishing_key = "";//防钓鱼时间戳 //若要使用请调用类文件submit中的query_timestamp函数
$exter_invoke_ip = get_client_ip(); //客户端的IP地址
/************************************************************/
$extra_common_param = $_SESSION['master']['mas_id'];
//构造要请求的参数数组,无需改动
$parameter = array(
"service" =& "create_direct_pay_by_user",
"partner" =& trim(C('alipay_partner')),
"payment_type"
=& $payment_type,
"notify_url"
=& $notify_url,
"return_url"
=& $return_url,
"seller_email"
=& $seller_email,
"out_trade_no"
=& $out_trade_no,
=& $subject,
"total_fee"
=& $total_fee,
"extra_common_param" =& $extra_common_param,
"anti_phishing_key"
=& $anti_phishing_key,
"exter_invoke_ip"
=& $exter_invoke_ip,
"_input_charset"
=& trim(strtolower($alipay_config['input_charset']))
//建立请求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit-&buildRequestForm($parameter,"post", "确认");
echo $html_text;
//手机端支付
public function wap_doalipay(){
header("Content-type:text/charset=utf-8");
vendor('Wap_alipay.Corefunction');
vendor('Wap_alipay.Md5function');
vendor('Wap_alipay.Notify');
vendor('Wap_alipay.Submit');
$alipay_config = array(
C('alipay_partner'),
//这里是你在成功申请支付宝接口后获取到的PID;
C('alipay_key'),//这里是你在成功申请支付宝接口后获取到的Key
'private_key_path'
=& 'key/rsa_private_key.pem',
'ali_public_key_path' =& 'key/alipay_public_key.pem',
'sign_type'
=& strtoupper('MD5'),
'input_charset'
=& 'utf-8',
=& getcwd().'\\cacert.pem',
'transport'
=& 'http',
//返回格式
$format = "xml";
//必填,不需要修改
//返回格式
$v = "2.0";
//必填,不需要修改
$req_id = date('Ymdhis');
//必填,须保证每次请求都是唯一
//**req_data详细信息**
//服务器异步通知页面路径
$notify_url = C('site_url').'/index.php/Alipay/wap_notifyurl'; //服务器异步通知页面路径
//需http://格式的完整路径,不允许加?id=123这类自定义参数
//页面跳转同步通知页面路径
$call_back_url = C('site_url').'/index.php/User/index'; //页面跳转同步通知页面路径
//需http://格式的完整路径,不允许加?id=123这类自定义参数
//操作中断返回地址
$merchant_url = C('site_url').'/index.php/User/index'; //页面跳转同步通知页面路径
//用户付款中途退出返回商户的地址。需http://格式的完整路径,不允许加?id=123这类自定义参数
//卖家支付宝帐户
$seller_email = C('alipay_seller_email');
//商户订单号
$out_trade_no = $_GET['order_no'];
//商户网站订单系统中唯一订单号,必填
//订单名称
$subject = "对订单".$out_trade_no.'付款';
//查询付款金额
$where=array(
"is_del"=&'0',
"id"=&$out_trade_no
$Apply=M('Apply');
$data=$Apply-&where($where)-&find();
$total_fee = $data['cost']; //必填 通过支付页面的表单进行传递$acount
//dump($out_trade_no);dump($subject);dump($data);dump($total_fee);
//付款金额
//$total_fee = $_POST['pay_cash']; //必填 通过支付页面的表单进行传递$acount
$pay_expire
//三分钟有效
//请求业务参数详细
$req_data = '&direct_trade_create_req&&notify_url&' . $notify_url . '&/notify_url&&call_back_url&' . $call_back_url . '&/call_back_url&&seller_account_name&' . $seller_email . '&/seller_account_name&&out_trade_no&' . $out_trade_no . '&/out_trade_no&&subject&' . $subject . '&/subject&&total_fee&' . $total_fee . '&/total_fee&&merchant_url&' . $merchant_url . '&/merchant_url&&pay_expire&'.$pay_expire.'&/pay_expire&&/direct_trade_create_req&';
/************************************************************/
//构造要请求的参数数组,无需改动
$para_token = array(
"service" =& "alipay.wap.trade.create.direct",
"partner" =& trim($alipay_config['partner']),
"sec_id" =& trim($alipay_config['sign_type']),
=& $format,
=& $req_id,
"req_data"
=& $req_data,
"_input_charset"
=& trim(strtolower($alipay_config['input_charset']))
//dump($para_token);
//建立请求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit-&buildRequestHttp($para_token);
//URLDECODE返回的信息
$html_text = urldecode($html_text);
//解析远程模拟提交后返回的信息
$para_html_text = $alipaySubmit-&parseResponse($html_text);
//获取request_token
$request_token = $para_html_text['request_token'];
/**************************根据授权码token调用交易接口alipay.wap.auth.authAndExecute**************************/
//业务详细
$req_data = '&auth_and_execute_req&&request_token&' . $request_token . '&/request_token&&/auth_and_execute_req&';
//构造要请求的参数数组,无需改动
$parameter = array(
"service" =& "alipay.wap.auth.authAndExecute",
"partner" =& trim($alipay_config['partner']),
"sec_id" =& trim($alipay_config['sign_type']),
=& $format,
=& $req_id,
"req_data"
=& $req_data,
"_input_charset"
=& trim(strtolower($alipay_config['input_charset']))
//建立请求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit-&buildRequestForm($parameter, 'get', '确认');
echo $html_text;
/******************************
手机支付宝的异步接收
*******************************/
public function wap_notifyurl(){
vendor('Wap_alipay.Corefunction');
vendor('Wap_alipay.Md5function');
vendor('Wap_alipay.Notify');
vendor('Wap_alipay.Submit');
//这里我们通过TP的C函数把配置项参数读出,赋给$alipay_config;
$alipay_config = array(
C('alipay_partner'),
//这里是你在成功申请支付宝接口后获取到的PID;
C('alipay_key'),//这里是你在成功申请支付宝接口后获取到的Key
'private_key_path'
=& 'key/rsa_private_key.pem',
'ali_public_key_path' =& 'key/alipay_public_key.pem',
'sign_type'
=& strtoupper('MD5'),
'input_charset'
=& 'utf-8',
=& getcwd().'\\cacert.pem',
'transport'
=& 'http',
//计算得出通知验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify-&verifyNotify();
if($verify_result) {//验证成功
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//请在这里加上商户的业务逻辑程序代
//&&请根据您的业务逻辑来编写程序(以下代码仅作参考)&&
//获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
//解析notify_data
//注意:该功能PHP5环境及以上支持,需开通curl、SSL等PHP配置环境。建议本地调试时使用PHP开发软件
$doc = new DOMDocument();
if ($alipay_config['sign_type'] == 'MD5') {
$doc-&loadXML($_POST['notify_data']);
if ($alipay_config['sign_type'] == '0001') {
$doc-&loadXML($alipayNotify-&decrypt($_POST['notify_data']));
if( ! empty($doc-&getElementsByTagName( "notify" )-&item(0)-&nodeValue) ) {
//商户订单号
$out_trade_no = $doc-&getElementsByTagName( "out_trade_no" )-&item(0)-&nodeV
//支付宝交易号
$trade_no = $doc-&getElementsByTagName( "trade_no" )-&item(0)-&nodeV
//交易状态
$trade_status = $doc-&getElementsByTagName( "trade_status" )-&item(0)-&nodeV
if($trade_status == 'TRADE_FINISHED') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序
//该种交易状态只在两种情况下出现
//1、开通了普通即时到账,买家付款成功后。
//2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。
//调试用,写文本函数记录程序运行情况是否正常
//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
echo "success";
//请不要修改或删除
else if ($trade_status == 'TRADE_SUCCESS') {
//买家支付成功,开始修改订单的支付方式和付款状态
//买家支付成功,开始修改订单的支付方式和付款状态
/*$Apply=M('Apply');
$data['pay_state']=1;
$data['pay_type']='alipay';
$ret= $Apply-&where(array('id'=&$out_trade_no))-&save($data);
echo "success";
echo "success";
//请不要修改或删除
//&&请根据您的业务逻辑来编写程序(以上代码仅作参考)&&
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//验证失败
echo "fail".$_SESSION['master']['mas_id'];
//调试用,写文本函数记录程序运行情况是否正常
//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
/******************************
服务器异步通知页面方法
其实这里就是将notify_url.php文件中的代码复制过来进行处理
*******************************/
public function notifyurl(){
vendor('Alipay.Corefunction');
vendor('Alipay.Md5function');
vendor('Alipay.Notify');
vendor('Alipay.Submit');
//这里我们通过TP的C函数把配置项参数读出,赋给$alipay_config;
$alipay_config = array(
C('alipay_partner'),
//这里是你在成功申请支付宝接口后获取到的PID;
C('alipay_key'),//这里是你在成功申请支付宝接口后获取到的Key
'private_key_path'
=& 'key/rsa_private_key.pem',
'ali_public_key_path' =& 'key/alipay_public_key.pem',
'sign_type'
=& strtoupper('MD5'),
'input_charset'
=& 'utf-8',
=& getcwd().'\\cacert.pem',
'transport'
=& 'http',
//计算得出通知验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify-&verifyNotify();
if($verify_result) {
//验证成功
//获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
$out_trade_no
= $_POST['out_trade_no'];
//商户订单号
$extra_common_param = $_POST['extra_common_param'];
= $_POST['trade_no'];
//支付宝交易号
$trade_status
= $_POST['trade_status'];
//交易状态
$total_fee
= $_POST['total_fee'];
//交易金额
$notify_id
= $_POST['notify_id'];
//通知校验ID。
$notify_time
= $_POST['notify_time'];
//通知的发送时间。格式为yyyy-MM-dd HH:mm:ss。
$buyer_email
= $_POST['buyer_email'];
//买家支付宝帐号;
$parameter = array(
"out_trade_no"
=& $out_trade_no, //商户订单编号;
"trade_no"
=& $trade_no,
//支付宝交易号;
"total_fee"
=& $total_fee,
//交易金额;
"trade_status"
=& $trade_status, //交易状态
"extra_common_param" =& $extra_common_param,
"notify_id"
=& $notify_id,
//通知校验ID。
"notify_time"
=& $notify_time,
//通知的发送时间。
"buyer_email"
=& $buyer_email,
//买家支付宝帐号;
if($_POST['trade_status'] == 'TRADE_FINISHED') {
}else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//买家支付成功,开始修改订单的支付方式和付款状态
$Apply=M('Apply');
$data['pay_state']=1;
$data['pay_type']='alipay';
$ret= $Apply-&where(array('id'=&$out_trade_no))-&save($data);
echo "success";
echo "success";
//请不要修改或删除
//验证失败
echo "fail".$_SESSION['master']['mas_id'];
页面跳转处理方法;
这里其实就是将return_url.php这个文件中的代码复制过来,进行处理;
public function returnurl(){
vendor('Alipay.Corefunction');
vendor('Alipay.Md5function');
vendor('Alipay.Notify');
vendor('Alipay.Submit');
//这里我们通过TP的C函数把配置项参数读出,赋给$alipay_config;
$alipay_config = array(
C('alipay_partner'),
//这里是你在成功申请支付宝接口后获取到的PID;
C('alipay_key'),//这里是你在成功申请支付宝接口后获取到的Key
'private_key_path'
=& 'key/rsa_private_key.pem',
'ali_public_key_path' =& 'key/alipay_public_key.pem',
'sign_type'
=& strtoupper('MD5'),
'input_charset'
=& 'utf-8',
=& getcwd().'\\cacert.pem',
'transport'
=& 'http',
$notify_url = C('site_url').'/index.php/Alipay/notifyurl'; //服务器异步通知页面路径
$return_url = C('site_url').U('User/order'); //页面跳转同步通知页面路径
$alipayNotify = new AlipayNotify($alipay_config);//计算得出通知验证结果
$verify_result = $alipayNotify-&verifyReturn();
if($verify_result) {
//验证成功
if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
$this-&success('支付成功',$return_url);
$this-&error('支付失败,'.$_GET['trade_status'],$return_url);
//验证失败
//如要调试,请看alipay_notify.php页面的verifyReturn函数
$this-&error('支付失败,'.$_GET['trade_status'],$return_url);
//空操作处理,所有空操作都指向空模块
public function _empty(){
$this-&redirect('Empty/index');
阅读(...) 评论()

我要回帖

更多关于 南极时间漏洞是真的吗 的文章

 

随机推荐