微信支付回调地址与退款

    //判断是否支付成功的回调地址
    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;
                }
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值