request->param(); \think\facade\Log::info(['微信服务商APP支付接收参数', $params]); //订单信息 $order = WechatPayServiceMerchantPaymentLogic::createPayOrder($params); if (false === $order) { return $this->fail('支付订单创建失败', $params); } //支付流程 $result = (new WeChatPayMerchantService())->wechatPayServiceMerchantAppPay($order); if (false === $result) { return $this->fail((new WeChatPayMerchantService())->getError(), $params); } return $this->success('', $result); } /** * 申请退款 * 先查询有没有支付订单 * 在查询微信支付有没有支付记录 * 最后再发起退款申请 */ public function refund() { $params = $this->request->param(); // business_order_no business_callback_url $payOrder = PayOrder::where(['business_order_no' => $params['business_order_no'], 'pay_status'=>PayOrderEnum::PAY_STATUS_ISPAID])->find(); if (empty($payOrder)) { return $this->fail('系统未找到该订单的支付记录'); } $wechatPayOrder = (new WeChatPayMerchantService())->queryPayOrder($payOrder); if ($wechatPayOrder['trade_state'] === 'REFUND') { return $this->fail('该订单已申请退款,请勿重复申请'); } if ($wechatPayOrder['trade_state'] !== 'SUCCESS') { return $this->fail('交易平台查询到该笔订单未支付成功,无法发起退款'); } $refundOrder = WechatPayServiceMerchantPaymentLogic::createRefundOrder($params); if (false === $refundOrder) { return $this->fail('退款订单创建失败', $params); } // 发起退款申请 $result = (new WeChatPayMerchantService())->refund($refundOrder); if (false === $result) { return $this->fail((new WeChatPayMerchantService())->getError(), $params); } return $this->success('成功', $result); } /** * @notes app支付回调 * @return \Psr\Http\Message\ResponseInterface * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException * @throws \EasyWeChat\Kernel\Exceptions\RuntimeException * @throws \ReflectionException * @throws \Throwable * @date 2023/2/28 14:21 */ public function notifyApp() { return (new WeChatPayMerchantService())->notify(); } /** * 退款回调 */ public function refundNotify() { return (new WeChatPayMerchantService())->refundNotify(); } }