关于引用微信支付的配置文件,请看我上一篇文章《tp5+微信公众号支付》,闲话少说,直接上代码,php
public function productRefund() { $succList = []; $condition = [ 'status' => OrderConstant::ORDER_REFUND_NOT, 'refund_time' => array('elt', date('Y-m-d H:i:s')), ]; $merchant_refund = ModelLoader::MerchantRefundModel()->where($condition)->field('order_id,out_refund_no,refund_time')->limit(50)->select()->toArray(); if (!empty($merchant_refund)) { foreach ($merchant_refund as $key => $item) { $order = MerchantOrderModel::getOne(['order_id' => $item['order_id']], 'order_code,amount,deposit'); if (empty($order)) { return json(['code' => 400, 'msg' => '订单不存在']); } $input = new \WxPayRefund(); $input->SetOut_trade_no($order['order_code']);//商户内部订单号 $input->SetTotal_fee($order['amount'] * 100); $input->SetRefund_fee($order['deposit'] * 100-1); $input->SetOut_refund_no($item['out_refund_no']); $config = new \WxPayConfig(); $input->SetOp_user_id($config->GetMerchantId()); $result = \WxPayApi::refund($config, $input); //退款,该方法中包含了签名算法 if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") { $succList[] = $item['order_id']; MerchantOrderModel::updateData(['order_id' => $item['order_id']], ['order_status' => OrderConstant::ORDER_STATUS_REFUND]); $this->payLog($item['order_id'], $result, 2); } else { MerchantOrderModel::updateData(['order_id' => $item['order_id']], ['order_status' => OrderConstant::ORDER_STATUS_REFUND_ERROR]); $this->payLog($item['order_id'], $result, 2, 2); } } if (!$succList) { return json(['code' => 401, 'msg' => '暂无退款']); } $condition['order_id'] = array('in', implode($succList, ',')); MerchantRefundModel::updateData($condition, ['status' => OrderConstant::ORDER_REFUND_DONE]); return json(['code' => 200, 'msg' => '退款成功']); } }
更多php技术交流,可加Q群:884743303,里面各路大神为您保驾护航,算法