tp5+微信公衆號申請退款

關於引用微信支付的配置文件,請看我上一篇文章《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,裏面各路大神爲您保駕護航,算法

相關文章
相關標籤/搜索