123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- <?php
- namespace App\Services;
- use BsPaySdk\core\BsPayClient;
- use BsPaySdk\request\V2TradeOnlinepaymentWappayRequest;
- use BsPaySdk\request\V2TradePaymentJspayRequest;
- use BsPaySdk\request\V2TradePaymentQueryRequest;
- use BsPaySdk\request\V2TradePaymentRefundRequest;
- use Illuminate\Support\Facades\Log;
- class DgPayService
- {
- protected BsPayClient $client;
- public function __construct()
- {
- // 加载SDK初始化文件
- require_once app_path('Support/BsPay/loader.php');
- $this->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;
- }
- }
- }
|