//判断是否支付成功的回调地址
public function actionNotify(){
$xml = file_get_contents('php://input');
// $xml="<xml><appid><![CDATA[wx68417a8aa5fe7f6f]]></appid>
// <bank_type><![CDATA[CFT]]></bank_type>
// <cash_fee><![CDATA[1]]></cash_fee>
// <fee_type><![CDATA[CNY]]></fee_type>
// <is_subscribe><![CDATA[N]]></is_subscribe>
// <mch_id><![CDATA[1491268242]]></mch_id>
// <nonce_str><![CDATA[fh3fss7dxw2l1lcskyziw42gz6lh1kf2]]></nonce_str>
// <openid><![CDATA[ovXY81lMsGsxKcbRV20VPwqEzp6Y]]></openid>
// <out_trade_no><![CDATA[149126824220180305190313]]></out_trade_no>
// <result_code><![CDATA[SUCCESS]]></result_code>
// <return_code><![CDATA[SUCCESS]]></return_code>
// <sign><![CDATA[1B4ADE76506650CF399F983C868D8164]]></sign>
// <time_end><![CDATA[20180305190517]]></time_end>
// <total_fee>1</total_fee>
// <trade_type><![CDATA[NATIVE]]></trade_type>
// <transaction_id><![CDATA[4200000095201803053286513215]]></transaction_id>
// </xml>";
$arr=json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
$transaction_id=$arr['transaction_id'];
$input = new \WxPayOrderQuery();
$input->SetTransaction_id($transaction_id);
$result = \WxPayApi::orderQuery($input);
Log::writeLog("query:" . json_encode($result));
$xml="<xml>
<return_code><![CDATA[%s]]></return_code>
<return_msg><![CDATA[%s]]></return_msg>
</xml>";
$info=sprintf($xml,$arr['return_code'],$arr['return_msg']);
if(array_key_exists("return_code", $result)
&& array_key_exists("result_code", $result)
&& $result["return_code"] == "SUCCESS"
&& $result["result_code"] == "SUCCESS")
{
//将重要信息写入数据库
$model=new WxPay();
$model->add_pay_log($arr);
}
return $info;
}
/**
* 微信退款
*/
public function actionRefund($data=''){
//交易号退款
if(isset($data["transaction_id"]) && $data["transaction_id"] != ""){
$transaction_id = $data["transaction_id"];
$total_fee =$data["total_fee"]*100;
$refund_fee =$data["refund_fee"]*100;
$input = new \WxPayRefund();
$input->SetTransaction_id($transaction_id);
$input->SetTotal_fee($total_fee);
$input->SetRefund_fee($refund_fee);
$input->SetOut_refund_no(\WxPayConfig::MCHID.date("YmdHis"));
$input->SetOp_user_id(\WxPayConfig::MCHID);
$arr=\WxPayApi::refund($input);
Log::writeLog(json_encode($arr));
if(array_key_exists('result_code',$arr)
&&array_key_exists('return_code',$arr)
&& $arr["return_code"] == "SUCCESS"
&& $arr["result_code"] == "SUCCESS"
){
$model=new WxPay();
$res=$model->add_refund_fee($arr);
if($res){
return true;
}else{
return false;
}
}
}
//订单编号退款===我们的订单号
if(isset($data["out_trade_no"]) && $data["out_trade_no"] != ""){
$out_trade_no = $data["out_trade_no"];
$total_fee = $data["total_fee"];
$refund_fee = $data["refund_fee"];
$input = new \WxPayRefund();
$input->SetOut_trade_no($out_trade_no);
$input->SetTotal_fee($total_fee);
$input->SetRefund_fee($refund_fee);
$input->SetOut_refund_no(\WxPayConfig::MCHID.date("YmdHis"));
$input->SetOp_user_id(\WxPayConfig::MCHID);
$arr=\WxPayApi::refund($input);
Log::writeLog(json_encode($arr));
if(array_key_exists('result_code',$arr)
&&array_key_exists('return_code',$arr)
&& $arr["return_code"] == "SUCCESS"
&& $arr["result_code"] == "SUCCESS"
){
$model=new WxPay();
$res=$model->add_refund_fee($arr);
if($res){
return true;
}else{
return false;
}
}
}
}
微信支付回调地址与退款
最新推荐文章于 2023-03-29 18:19:25 发布