~~~ $database=include_once '../application/database.php'; //连接数据库 $dbms=$database['type']; //数据库类型 $host=$database['hostname']; //数据库主机名 $dbName=$database['database']; //使用的数据库 $user=$database['username']; //数据库连接用户名 $pass=$database['password']; //对应的密码 $dsn="$dbms:host=$host;dbname=$dbName"; if (isset($_GET["out_trade_no"]) && $_GET["out_trade_no"] != ""){ $out_trade_no = $_GET["out_trade_no"]; $total_fee = $_GET["total_fee"]*100; $refund_fee = $total_fee; $input=new WxPayRefund(); //设置微信订单号 //$input->SetTransaction_id(); //设置商户系统内部的订单号 $input->SetOut_trade_no($out_trade_no); //设置订单总金额,只能为整数,详见支付金额 $input->SetTotal_fee($total_fee); //设置退款总金额,订单总金额,单位为分,只能为整数,详见支付金额 $input->SetRefund_fee($refund_fee); //设置商户系统内部的退款单号,商户系统内部唯一,同一退款单号多次请求只退一笔 $input->SetOut_refund_no(date('Ymdhms').rand(1,99999)); //设置操作员帐号, 默认为商户号 $input->SetOp_user_id(WxPayConfig::MCHID); //print_r($input); $info=WxPayApi::refund($input); libxml_disable_entity_loader(true); $arr= json_decode(json_encode(simplexml_load_string($info, 'SimpleXMLElement', LIBXML_NOCDATA)), true); $arr['return_msg'].'/'.$arr['out_trade_no'].'/'.$arr['refund_fee']; // 退款成功之后需要修改数据库的状态值 $out_trade_no=$arr['out_trade_no']; try{ $dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象 // 根据回到查询当前订单是否存在 $findsql='select * from yx_order WHERE ordersn='.$out_trade_no.' LIMIT 1'; $find=$dbh->query($findsql); $info=''; foreach ($find as $row) { $info=$row; } if ($info){ // 存在就更改数据 $updatesql='UPDATE `nuoyu`.`yx_order` SET `status` = \'6\' WHERE `yx_order`.`ordersn` = '.$out_trade_no; $update=$dbh->query($updatesql); // 更改完之后查询该订单状态的是否存在 存在就退款失败,不存在退款成功 $findsql2='SELECT * FROM `yx_order` WHERE `ordersn`='.$out_trade_no.' AND `status`=6 LIMIT 1'; $find2=$dbh->query($findsql2); $info2=''; foreach ($find2 as $row2) { $info2=$row2; } if ($info2){ echo '退款成功'; }else{ echo '退款失败'; } }else{ echo '数据异常'; } // print_r($info); }catch (PDOException $e){ die ("Error!: " . $e->getMessage() . "<br/>"); } } ~~~