/**
* 微信退款
*
* @access? public
* @param? string? ? ? $total_amount? ? 訂單總金額? ? ? 單位 分!!!!!!!!!!!!!!!!!!!!!!
* @param? string? ? ? $refund_fee? ? 退款金額? ? ? 單位 分!!!!!!!!!!!!!!!!!!!!!!
* @param? string? ? ? $out_trade_no? ? 支付時傳入的訂單號
* @return? string? ? ? $out_request_no? 訂單的退款單號
*/
public function refund_order($total_amount,$refund_fee, $out_trade_no,$out_request_no)
{
$data = array();
$data['appid'] = $this->user_config['appid'];
$data['mch_id'] = $this->user_config['mch_id'];
$data['nonce_str'] = MD5(time().rand(10000,99999));
//? ? ? ? $data['body'] = $body;
$data['out_trade_no'] = (string)$out_trade_no;
$data['out_refund_no'] = (string)$out_request_no;
$data['total_fee'] = (int)$total_amount;
$data['refund_fee'] = (int)$refund_fee;
$data['sign'] = getSign($data,$this->user_config['api']);
//轉(zhuǎn)為xml格式
$xml_str = arrayToXml($data);
//發(fā)送請求 使用封裝好的curl_post
$result = postXmlRefundCurl($xml_str);
//解析得到的值
$res = xmlstr_to_array($result);
if($res['result_code'] == "SUCCESS")
{
$data = [
'status' => true,
'msg' => '退款成功'
];
}
else
{
$data = [
'status' => false,
'msg' =>'退款失敗,'.$res['err_code_des']
];
}
return $data;
}
function postXmlRefundCurl($xml,$url='https://api.mch.weixin.qq.com/secapi/pay/refund') { //初始化curl $ch = curl_init(); //設(shè)置抓取的url curl_setopt($ch, CURLOPT_URL, $url); //設(shè)置頭文件的信息作為數(shù)據(jù)流輸出// curl_setopt($ch, CURLOPT_HEADER, 1); //設(shè)置獲取的信息以文件流的形式返回娄柳,而不是直接輸出院仿。 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //證書檢查 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,1); curl_setopt($ch,CURLOPT_SSLCERTTYPE,'pem'); curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).'/wxcertificate/apiclient_cert.pem'); curl_setopt($ch,CURLOPT_SSLCERTTYPE,'pem'); curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).'/wxcertificate/apiclient_key.pem'); curl_setopt($ch,CURLOPT_SSLCERTTYPE,'pem'); curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).'/wxcertificate/rootca.pem'); //設(shè)置post方式提交 curl_setopt($ch, CURLOPT_POST, 1); //設(shè)置post數(shù)據(jù) curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); //執(zhí)行命令 $data = curl_exec($ch); if($data) { curl_close($ch); return $data; } else { $error = curl_errno($ch); echo "curl出錯堪唐,錯誤碼:$error"."
";? ? ? ? ? ? echo "錯誤原因查詢
";? ? ? ? ? ? curl_close($ch);? ? ? ? ? ? return false;? ? ? ? }? ? }