123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?php
- ini_set('date.timezone','Asia/Shanghai');
- error_reporting(E_ERROR);
- require_once "../lib/WxPay.Api.php";
- require_once '../lib/WxPay.Notify.php';
- require_once 'log.php';
- //初始化日志
- $logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log');
- $log = Log::Init($logHandler, 15);
- class PayNotifyCallBack extends WxPayNotify
- {
- //查询订单
- public function Queryorder($transaction_id)
- {
- $input = new WxPayOrderQuery();
- $input->SetTransaction_id($transaction_id);
- $result = WxPayApi::orderQuery($input);
- Log::DEBUG("query:" . json_encode($result));
- if(array_key_exists("return_code", $result)
- && array_key_exists("result_code", $result)
- && $result["return_code"] == "SUCCESS"
- && $result["result_code"] == "SUCCESS")
- {
- Log::DEBUG("已进入");
- $attach=$result['attach'];
- $out_trade_no=$result['out_trade_no'];
- $fee=$result['total_fee'];
- $transaction_id=$result['transaction_id'];
- $total_fee=$fee*0.01;
- if(function_exists('mysqli_close')){
- $link = new mysqli("127.0.0.1","","","");
- if($link){
- $link->query("set names utf8");
- $result = $link->query("select * from cmf_user_charge where orderno='{$out_trade_no}' and status='0' and type='2'");
- Log::DEBUG("select * from cmf_user_charge where orderno='{$out_trade_no}' and status='0' and type='2'");
- $row = $result->fetch_assoc();
- if($row){
- $coin=$row['coin']+$row['coin_give'];
- $link->query("update cmf_user set coin=coin+{$coin} where id='$row[touid]'");
- $link->query("update cmf_user_charge set status='1',trade_no='{$transaction_id}' where id={$row['id']}");
- Log::DEBUG("支付成功");
- }else{
- Log::DEBUG($out_trade_no.' 订单信息不存在');
- }
- }else{
- Log::DEBUG("数据库链接失败");
- }
- }else{
- $link = mysql_connect("127.0.0.1","","");
- if($link){
- mysql_select_db("",$link);
- mysql_query("set names utf8");
- $result = mysql_query("select * from cmf_user_charge where orderno='{$out_trade_no}' and status='0' and type='2'");
- Log::DEBUG("select * from cmf_user_charge where orderno='{$out_trade_no}' and status='0' and type='2'");
- $row = mysql_fetch_assoc($result);
- $str = json_encode($row);
- if($row){
- $coin=$row['coin']+$row['coin_give'];
- mysql_query("update cmf_user set coin=coin+{$coin} where id='$row[touid]'");
- mysql_query("update cmf_user_charge set status='1',trade_no='{$transaction_id}' where id={$row['id']}");
- Log::DEBUG("支付成功");
- }else{
- Log::DEBUG($out_trade_no.' 订单信息不存在');
- }
- }else{
- Log::DEBUG("数据库链接失败");
- }
-
- }
-
-
- return true;
- }
- return false;
- }
-
- //重写回调处理函数
- public function NotifyProcess($data, &$msg)
- {
- Log::DEBUG("call back:" . json_encode($data));
- $notfiyOutput = array();
-
- if(!array_key_exists("transaction_id", $data)){
- $msg = "输入参数不正确";
- return false;
- }
- //查询订单,判断订单真实性
- if(!$this->Queryorder($data["transaction_id"])){
- $msg = "订单查询失败";
- return false;
- }
- return true;
- }
- }
- Log::DEBUG("begin notify");
- $notify = new PayNotifyCallBack();
- $notify->Handle(false);
|