/** * 退单 * $transaction_id 微信订单号 * $out_trade_no 系统订单号 * $total_fee 订单金额 * $refund_fee 退款金额 * */ function refund($data = array()) { $input = new WxPayRefund(); if ($data['transaction_id']) { $input->SetTransaction_id($data['transaction_id']); } if ($data['out_trade_no']) { $input->SetOut_trade_no($data['out_trade_no']); } $input->SetTotal_fee($data['total_fee']); $input->SetRefund_fee($data['refund_fee']); $input->SetOut_refund_no(get_order_sn('zr')); $input->SetOp_user_id(WxPayConfig::MCHID); return WxPayApi::refund($input); }
/** * @param $out_trade_no * @return bool * @throws \WxPayException */ public function refund($out_trade_no, $fee) { $WxPayRefund = new \WxPayRefund(); $WxPayRefund->setWxPayApi($this->wxPayApi); $WxPayRefund->SetOut_trade_no($out_trade_no); $WxPayRefund->SetOut_refund_no($out_trade_no); $WxPayRefund->SetTotal_fee($fee); $WxPayRefund->SetRefund_fee($fee); $WxPayRefund->SetOp_user_id($this->wxPayApi->getWxPayConfig()['MCHID']); $result = $this->wxPayApi->refund($WxPayRefund, $this->wxPayConfig['CURL_TIMEOUT']); if ($result['return_code'] == 'FAIL') { //系统出错 throw new \WxPayException("接口调用失败!" . $result['return_msg']); } if ($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS') { //退款申请 接收成功 ,结果通过退款查询接口查询 return true; } if ($result['result_code'] == 'FAIL') { //业务提交失败 throw new \WxPayException("业务提交失败!"); } return false; }
$input->SetTotal_fee($total_fee); $input->SetRefund_fee($refund_fee); $input->SetOut_refund_no(WxPayConfig::MCHID . date("YmdHis")); $input->SetOp_user_id(WxPayConfig::MCHID); printf_info(WxPayApi::refund($input)); exit; } //$_REQUEST["out_trade_no"]= "122531270220150304194108"; ///$_REQUEST["total_fee"]= "1"; //$_REQUEST["refund_fee"] = "1"; 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(); $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); printf_info(WxPayApi::refund($input)); exit; } ?> <body> <form action="#" method="post"> <div style="margin-left:2%;color:#f00">微信订单号和商户订单号选少填一个,微信订单号优先:</div><br/> <div style="margin-left:2%;">微信订单号:</div><br/> <input type="text" style="width:96%;height:35px;margin-left:2%;" name="transaction_id" /><br /><br /> <div style="margin-left:2%;">商户订单号:</div><br/> <input type="text" style="width:96%;height:35px;margin-left:2%;" name="out_trade_no" /><br /><br />
/** * @note 申请退款 * @access public * @author zhangchong <*****@*****.**> * @date 2015/7/9 17:31 * @param $params['out_trade_no'] 原订单号 * @param $params['transaction_id'] 微信交易号 交易号和原订单号2选1,如果同时存在 交易号优先级大于原订单号 * @param $params['total_fee'] 订单总金额 单位:元 * @param $params['refund_fee'] 退款金额 单位:元 * @param $params['refund_code'] 退款订单号 * @return array|boolean 返回false表示参数设置错误 **/ public function refund($params = array()) { if (!isset($params['transaction_id']) && !isset($params['out_trade_no'])) { return false; } //简单的验证,订单号和微信交易号都不存在 $input = new WxPayRefund($this->config); if (isset($params['transaction_id'])) { $input->SetTransaction_id($params['transaction_id']); } else { $input->SetOut_trade_no($params['out_trade_no']); } $input->SetTotal_fee($params['total_fee'] * 100); //微信金额单位是分,咱们是元,所以要乘以100 $input->SetRefund_fee($params['refund_fee'] * 100); //微信金额单位是分,咱们是元,所以要乘以100 $input->SetOut_refund_no($params['refund_code']); $input->SetOp_user_id($this->config->mchid); return Pay\WxPayApi::refund($input); }