首页 > 作文

php对微信支付回调处理的方法(合集)

更新时间:2023-04-07 12:10:03 阅读: 评论:0

微信无论是微信内置jsapi支付、h5外部浏览器支付、扫码支付,都需要通过异步回调接收支付结果。

本文简介如何获取微信支付通知。

仅需要一个在之前设置好的回调地址的方法里写上如下:

//处理微信支付回调    public function notify(){        $testxml  = file_get_contents(中国最大的海"php://input");        $jsonxml = json_encode(simplexml_load_string($testxml, 'simplexmlelement', libxml_nocdata));        $result = json_decode($jsonxml, true);//转成数组,        if($result){            //如果成功返回了            $out_trade_no = $result['out_trade_no'];            if($result['return_code'] == 'success' && $result['result_code'] == 'success'){            //执行业务逻辑          //查询创建订单表 where("out_trade_no='".$out_trade_no."' and status=1") status为1表示待支付状态 1 待支付          //查询出来有该订单 就改变支付状态 status=2 2表示支付成功             }        }    }

对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,
微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。
(通知频率为15/15/30/180/1西湖大学分数线800/1800/1800/1800/3600,单位:秒)

结束微信重新通知用代码:echo ‘success’;

附上:
微信支付返回的xml转化为json格式如下:

{  "appid": "12345",  "attach": "pay",   "bank_type": "cft",  "cash_fee": "1",  "fee_type": "cny",  "is_subscribe": "y",  "mch_id": "12345",  "nonce_str": "dzyfpadyrpf5rwhv",  "openid": "onhwf1hiutuyskcsrv21a6mctt5q",  "out_trade_no": "sh201808222055598628",  "result_code": "success",  "return_code": "success",  "sign": "5a019f52bef1c3a98ae0f1ff29d01574",  "time_end": "20180822205606",  "total_fee": "1",  "trade_type": "mweb",  "transaction_id": "4200000171201808221550954201" }

//详细流程如下

public function wycz(){//我要充值        if(ssion('uid') ==null || ssion('uid') == "" || ssion('uid') == fal){            //没有登录 跳转到登录页            $this->redirect('/login/login');exit;       }el {            //接受参数            if($_post){                $total_fee = trim(i("post.fotal_fee"));                if(!empty($total_fee)){                    if($total_fee<=0){                        //提示输入正整数金额                        $arr['code'] = "301";                        $arr['msg']  = "输入正整数";                        echo json_encode($arr);exit();                    }el{                        ssion("total_fee",$total_fee);                        $arr['code'] = "高一英语课文翻译200";                        $arr['msg'] = "确认充值吗?";                        echo json_encode($arr);exit();                    }                }el{                    //提示输入正整数金额                    $arr['code'] = "302";                    $arr['msg']  = "输入充值金额";                    echo json_encode($arr);exit();                }            }            $this->display();       }    }    //充值确认页面    public function confirmpay(){        if(ssion('uid') ==null || ssion('uid') == "" || ssion('uid') == fal){            //没有登录 跳转到登录页            $this->redirect('/login/login');exit;        }el {            $result = $this->wappay();            $this->assign('jsapiparameters',$result['jsapiparameters']);            $this->assign('editaddress', $result['editaddress']);            $this->display();        }    }    //操作充值    public function wappay($total_fee)    {        /**         *         * example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用         * 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重         * 请勿直接直接使用样例对外提供服务         *         **/        vendor('wxpaysdk.lib.wxpay#api');        vendor('wxpaysdk.example.wxpay#jsapipay');        // vendor('wxpaysdk.example.wxpay#config');        //①、获取用户openid        $tools = new \jsapipay();        $openid = $tools->getopenid();        $total_fee = ssion("total_fee")*100;        //$total_fee = ssion("total_fee");        //②、统一下单        $input = new \wxpayunifiedorder();        $input->tbody("vip充值");        $input->tattach("vip充值");        $input->tout_trade_no("klkq".date("ymdhis"));        $input->ttotal_fee($total_fee);        $input->ttime_start(date("ymdhis"));        $input->ttime_expire(date("ymdhis", time() + 600));        $input->tgoods_tag("vip充值");        //$input->tnotify_url("http://paysdk.weixin.qq.com/notify.php");        $input->tnotify_url("http://wap.yuming.com/member/notify");        $input->ttrade_type("jsapi");        $input->topenid($openid);        $config = new \wxpayconfig();        $order = \wxpayapi::unifiedorder($config, $input);        //echo '<font color="#f00"><b>统一下单支付单信息</b></font><br/>';        //printf_info($order);        $jsapiparameters = $tools->getjsapiparameters($order);        //获取共享收货地址js函数参数        $editaddress = $tools->geteditaddressparameters();        $data['jsapiparameters'] = $jsapiparameters;        $data['editaddress'] = $editaddress;        //写入订单表对应数据        $arr = array(          函授专科  'w_mid'=>ssion('uid'),            'w_openid'=>$openid,            'w_title'=>'vip充值',            'w_time_create'=>date("ymdhis"),            'w_times_create'=>date("y-m-d h:i:s"),            'w_out_trade_no'=>"klkq".date("ymdhis"),        );        m('wxpay_order')->add($arr);                return $data;    }    //处理微信支付回调    public function notify(){    $testxml = file_get_contents("php://input");    $jsonxml = json_encode(simplexml_load_string($testxml,'simplexmlelement',libxml_nocdata));        $result = json_decode($jsonxml,true);    if($result){        $out_trade_no = $result['out_trade_no'];        if($result['return_code'] == 'success' && $result['result_code'] =='success'){                //先判断订单状态是否已经改变                $orderdata = m("wxpay_order")->where("w_out_trade_no='".$result['out_trade_no']."' and w_status=1")->find();                if(!empty($orderdata)){                    //支付成功改变支付状态                    $arr = array(                        'w_id'=>$orderdata['w_id'],                        'w_openid'=>$result['openid'],                        'w_transaction_id'=>$result['transaction_id'],                        'w_time_end'=>$result['time_end'],                        'w_times_end'=>$result['time_end'],                        'w_total_fee'=>$result['total_fee']/100,                        'w_status'=>2,//支付成功 1 待支付 2支付成功 3 支付失败                    );                    m('wxpay_order')->save($arr);                    //操作积分                    $uid = $orderdata['w_mid'];                    //对该人增加$result['total_fee']积分                    $zz_grade = m('grade');                    $g_integral = $zz_grade->where("g_mid=".$uid)->getfield('g_integral');                    $zz_grade->g_integral = $g_integral + intval($result['total_fee']/100);                    //更新积分                    $giddd = $zz_grade->where("g_mid=".$uid)->save();                    //操作积分日志表                    $zz_grade_log = m('grade_log');                    $zz_grade_log->g_gcontent = '充值'.intval($result['total_fee']/100).'积分';                    $zz_grade_log->g_mid = $uid;//邀请者会员id                    $zz_grade_log->g_gnum = intval($result['total_fee']/100);//充值积分                    $zz_grade_log->g_gdate = date('y-m-d');//注册日期                    $zz_grade_log->g_gtime = date('y-m-d h:i:s');//注册时间                    //写入数据库                    $liddd = $zz_grade_log->add();                }            }        }    }

个人评价

本文发布于:2023-04-07 12:09:55,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/a89310f5fcc9c9fc092f9586b896477e.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:php对微信支付回调处理的方法(合集).doc

本文 PDF 下载地址:php对微信支付回调处理的方法(合集).pdf

标签:充值   通知   积分   回调
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图