client = new BsPayClient(); } /** * 创建支付订单 */ public function createOrder(string $orderNo, float $amount, string $subject, string $payType): array { try { // 根据支付方式选择对应的请求类 $request = match ($payType) { 'ALIPAY_H5', 'WECHAT_H5' => new V2TradeOnlinepaymentWappayRequest(), 'ALIPAY_JSAPI', 'WECHAT_JSAPI' => new V2TradePaymentJspayRequest(), default => throw new \InvalidArgumentException('Unsupported pay type: ' . $payType), }; // 设置请求参数 $request->setReqDate(date('Ymd')); $request->setReqSeqId(date('YmdHis') . mt_rand(1000, 9999)); $request->setTransAmt($amount); $request->setGoodsDesc($subject); // 其他参数 // 调用接口 $result = $this->client->postRequest($request); if (!$result || $result->isError()) { return [ 'success' => false, 'message' => $result ? $result->getErrorInfo() : '支付失败' ]; } return [ 'success' => true, 'data' => $result->getRspDatas() ]; } catch (\Exception $e) { Log::error('DgPay create order error: ' . $e->getMessage()); return [ 'success' => false, 'message' => $e->getMessage() ]; } } /** * 查询订单 */ public function queryOrder(string $orderNo): array { try { $request = new V2TradePaymentJspayRequest(); $request->setReqDate(date('Ymd')); $request->setReqSeqId(date('YmdHis') . mt_rand(1000, 9999)); $result = $this->client->postRequest($request); if (!$result || $result->isError()) { return [ 'success' => false, 'message' => $result ? $result->getErrorInfo() : '查询失败' ]; } return [ 'success' => true, 'data' => $result->getRspDatas() ]; } catch (\Exception $e) { Log::error('DgPay query order error: ' . $e->getMessage()); return [ 'success' => false, 'message' => $e->getMessage() ]; } } /** * 退款 */ public function refund(string $orderNo, string $refundNo, float $amount): array { try { $request = new V2TradePaymentJspayRequest(); $request->setReqDate(date('Ymd')); $request->setReqSeqId(date('YmdHis') . mt_rand(1000, 9999)); $result = $this->client->postRequest($request); if (!$result || $result->isError()) { return [ 'success' => false, 'message' => $result ? $result->getErrorInfo() : '退款失败' ]; } return [ 'success' => true, 'data' => $result->getRspDatas() ]; } catch (\Exception $e) { Log::error('DgPay refund error: ' . $e->getMessage()); return [ 'success' => false, 'message' => $e->getMessage() ]; } } /** * 验证签名 */ public function verifySign(array $data): bool { try { // TODO: 实现签名验证 return true; } catch (\Exception $e) { Log::error('DgPay verify sign error: ' . $e->getMessage()); return false; } } }