申请退款
对应文件管理中example文件夹下的refund.php文件
1,头文件引入
必须引入的头文件,以SDK的路径为例子
require_once "../lib/WxPay.Api.php";
可选的头文件引入,该头文件只是微信支付用于记录操作日志
require_once 'log.php';
2,退款参数
除了要输入要退款的订单号之外,退款还需要商户号、退款的款数、商户订单号、为该次退款设置一个退款单号等,在这里要注意退款的款数要化为单位分,例如要退款2元,那么设置时要设置为200。
2,发起退款
这里我们以REQUEST的方式获取传过来的参数为例子,这种方式对发送端是get还是post没要求,无论是get的方式还是post方式,都能接收到,在安全方面不够post形式好。
if(isset($_REQUEST["out_trade_no"]) && $_REQUEST["out_trade_no"] != ""){
$out_trade_no = $_REQUEST["out_trade_no"]; // 要退款的订单的商户订单号
$total_fee = $_REQUEST["total_fee"]; // 该订单的一共支付总额
$refund_fee = $_REQUEST["refund_fee"]; // 要退款的钱数
$input = new WxPayRefund();
/** SetOut_trade_no 设置该订单的商户订单号,凭借这个唯一确定 */
$input->SetOut_trade_no($out_trade_no);
/** SetTotal_fee 设置订单的当时支付的总额 */
$input->SetTotal_fee($total_fee);
/** SetRefund_fee 设置要退款多少钱 */
$input->SetRefund_fee($refund_fee);
/** SetOut_refund_no 设置此次商户退款的单号,它不是商户订单号 */
$input->SetOut_refund_no(WxPayConfig::MCHID.date("YmdHis"));
/** SetOp_user_id 设置商户号 */
$input->SetOp_user_id(WxPayConfig::MCHID);
/** 发起退款 */
$order = WxPayApi::refund($input);
/** 在返回的数组中,我们能够获取键名return_code */
if($order["return_code"]=="SUCCESS"){
// 退款申请成功
}else if($order["return_code"]=="FAIL"){
// 退款申请失败
}else{
// 未知状态
}
var_dump($order);
}
3,退款效果
一旦申请退款成功,那么该订单号对应的用户便会在微信客户端收到退款的凭据,同时在商家的商户平台也会有该退款记录生成。