mirror of
http://124.126.16.154:8888/singularity/hdk-pay.git
synced 2026-01-15 01:55:05 +08:00
perf: 使用更先进的 hdk 方法创建 http 请求
This commit is contained in:
19
src/Resource/GoodsCollection.php
Normal file
19
src/Resource/GoodsCollection.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* GoodsCollection.php@LuxPay
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2023/7/20
|
||||
*/
|
||||
|
||||
namespace Singularity\HDK\Pay\Resource;
|
||||
|
||||
use Hyperf\Resource\Json\ResourceCollection;
|
||||
|
||||
final class GoodsCollection extends ResourceCollection
|
||||
{
|
||||
public ?string $wrap = null;
|
||||
}
|
||||
@@ -14,25 +14,22 @@ namespace Singularity\HDK\Pay\Sdk;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use GuzzleHttp\RequestOptions;
|
||||
use Hyperf\Codec\Json;
|
||||
use Hyperf\Di\Annotation\Inject;
|
||||
use Singularity\HDK\Core\Service\HttpRequestService;
|
||||
use Singularity\HDK\Core\Http\RequestService;
|
||||
use Singularity\HDK\Core\Http\RequestServiceFactory;
|
||||
use Singularity\HDK\Pay\Resource\Goods;
|
||||
|
||||
use function Hyperf\Config\config;
|
||||
|
||||
final class GoodsRpc
|
||||
{
|
||||
public function __construct(private HttpRequestService $requestService, private ?string $baseUri = null)
|
||||
private RequestService $requestService;
|
||||
|
||||
public function __construct(?string $baseUri = null)
|
||||
{
|
||||
$this->baseUri ??= config('payment.base_uri');
|
||||
if (empty($this->baseUri)) {
|
||||
throw new \InvalidArgumentException('payment.base_uri is required');
|
||||
}
|
||||
$this->requestService->setOptions(
|
||||
[
|
||||
'base_uri' => $this->baseUri,
|
||||
RequestOptions::ALLOW_REDIRECTS => true,
|
||||
]
|
||||
);
|
||||
$this->requestService = RequestServiceFactory::make([
|
||||
'base_uri' => $baseUri ?? config('payment.base_uri'),
|
||||
RequestOptions::ALLOW_REDIRECTS => true,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -44,8 +41,6 @@ final class GoodsRpc
|
||||
*/
|
||||
public function find(int $goodsId, array $specifies): Goods
|
||||
{
|
||||
$url = $this->baseUri . '/rpc/v1/wechat/qrcode';
|
||||
|
||||
$response = $this->requestService->requestGet("/rpc/v1/goods/$goodsId/search", $specifies);
|
||||
$content = $response->getBody()->getContents();
|
||||
return Goods::make(Json::decode($content));
|
||||
|
||||
@@ -16,7 +16,10 @@ use Hyperf\Di\Annotation\Inject;
|
||||
use Lmc\HttpConstants\Header;
|
||||
use Money\Money;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
use Singularity\HDK\Core\Service\HttpRequestService;
|
||||
|
||||
use Singularity\HDK\Core\Http\RequestService;
|
||||
|
||||
use Singularity\HDK\Core\Http\RequestServiceFactory;
|
||||
|
||||
use function Hyperf\Config\config;
|
||||
|
||||
@@ -29,9 +32,15 @@ use function Hyperf\Config\config;
|
||||
*/
|
||||
final class WechatRpc
|
||||
{
|
||||
#[Inject]
|
||||
private HttpRequestService $requestService;
|
||||
private RequestService $requestService;
|
||||
|
||||
private string $baseUrl;
|
||||
|
||||
public function __construct(?string $baseUrl = null)
|
||||
{
|
||||
$this->requestService = RequestServiceFactory::make();
|
||||
$this->baseUrl = $baseUrl ?? config('payment.base_uri');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RequestInterface $request
|
||||
@@ -49,7 +58,7 @@ final class WechatRpc
|
||||
Money $money,
|
||||
string $uid
|
||||
): array {
|
||||
$url = config('payment.base_uri') . '/rpc/v1/wechat/qrcode';
|
||||
$url = $this->baseUrl . '/rpc/v1/wechat/qrcode';
|
||||
$data = [
|
||||
'service' => config('payment.sp_id'),
|
||||
'amount' => (int)$money->getAmount(),
|
||||
|
||||
@@ -11,26 +11,25 @@ declare(strict_types=1);
|
||||
*/
|
||||
|
||||
|
||||
use Singularity\HDK\Core\Service\HttpRequestService;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use Singularity\HDK\Pay\Resource\Goods;
|
||||
use Singularity\HDK\Pay\Sdk\GoodsRpc;
|
||||
|
||||
/** @var GoodsRpc $service */
|
||||
$service = \Hyperf\Support\make(
|
||||
GoodsRpc::class,
|
||||
[
|
||||
'requestService' => \Hyperf\Support\make(HttpRequestService::class),
|
||||
'baseUri' => 'http://localhost:9611'
|
||||
]);
|
||||
|
||||
test('根据分类和商品名称获取到对应的 SKU', function () use ($service) {
|
||||
$goods = $service->find(
|
||||
1,
|
||||
[
|
||||
'lattice' => 'TYPE-0',
|
||||
'precision' => 'high',
|
||||
'mode' => 'gradient',
|
||||
],
|
||||
);
|
||||
expect($goods)->toBeInstanceOf(Goods::class);
|
||||
})->only();
|
||||
test(
|
||||
'根据分类和商品名称获取到对应的 SKU',
|
||||
/**
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
function () {
|
||||
$service = new GoodsRpc('http://localhost:9611');
|
||||
$goods = $service->find(
|
||||
1,
|
||||
[
|
||||
'lattice' => 'TYPE-0',
|
||||
'precision' => 'high',
|
||||
'mode' => 'gradient',
|
||||
],
|
||||
);
|
||||
expect($goods)->toBeInstanceOf(Goods::class);
|
||||
}
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user