美文网首页
微信支付退款 PHP

微信支付退款 PHP

作者: 无聊的电风扇 | 来源:发表于2019-04-18 11:09 被阅读0次

    退款需要双向证书,再商户平台-》API安全-》下载证书

    $config = array(
                'mch_id' => "商户ID",
                'appid' => "appid",
                'key' => "APIKEY",
            );
            $unified = array(
                'appid' => "APPID", 
                'mch_id' => "商户ID",
                'nonce_str' => md5(time()),
                'total_fee' => 1,       //订单金额    单位 转为分
                'refund_fee' => 1,       //退款金额 单位 转为分
                'sign_type' => 'MD5',           //签名类型 支持HMAC-SHA256和MD5,默认为MD5
                'out_trade_no'=> $order_id,        //商户订单号
                'out_refund_no'=>'re_'.time(),        //商户退款单号
                'refund_desc'=>'退款原因',     //退款原因(选填),
                'notify_url' => 'github.com' //退款成功回调地址
            );
            $unified['sign'] = $this->getSign($unified, $config['key']);
            $responseXml = $this->curlPost('https://api.mch.weixin.qq.com/secapi/pay/refund', $this->arrayToXml($unified));
            $unifiedOrder = simplexml_load_string($responseXml, 'SimpleXMLElement', LIBXML_NOCDATA);
    
            if ($unifiedOrder === false) {
                die('parse xml error');
            }
            if ($unifiedOrder->return_code != 'SUCCESS') {
                die($unifiedOrder->return_msg);
            }
            if ($unifiedOrder->result_code != 'SUCCESS') {
                die($unifiedOrder->err_code);
            }
    

    在这里设置

    function curlPost($url = '', $postData = '', $options = array())
        {
            if (is_array($postData)) {
                $postData = http_build_query($postData);
            }
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
            curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置cURL允许执行的最长秒数
            if (!empty($options)) {
                curl_setopt_array($ch, $options);
            }
            //https请求 不验证证书和host
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            //第一种方法,cert 与 key 分别属于两个.pem文件
            //默认格式为PEM,可以注释
            curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
            curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/cert/apiclient_cert.pem');//证书路径
            //默认格式为PEM,可以注释
            curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
            curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'/cert/apiclient_key.pem');//证书路径
            //第二种方式,两个文件合成一个.pem文件
    //        curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/all.pem');
            $data = curl_exec($ch);
            curl_close($ch);
            return $data;
        }
    

    相关文章

      网友评论

          本文标题:微信支付退款 PHP

          本文链接:https://www.haomeiwen.com/subject/pdszwqtx.html