mirror of
http://124.126.16.154:8888/singularity/hdk-pay.git
synced 2026-01-15 03:55:07 +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\Exception\GuzzleException;
|
||||||
use GuzzleHttp\RequestOptions;
|
use GuzzleHttp\RequestOptions;
|
||||||
use Hyperf\Codec\Json;
|
use Hyperf\Codec\Json;
|
||||||
use Hyperf\Di\Annotation\Inject;
|
use Singularity\HDK\Core\Http\RequestService;
|
||||||
use Singularity\HDK\Core\Service\HttpRequestService;
|
use Singularity\HDK\Core\Http\RequestServiceFactory;
|
||||||
use Singularity\HDK\Pay\Resource\Goods;
|
use Singularity\HDK\Pay\Resource\Goods;
|
||||||
|
|
||||||
use function Hyperf\Config\config;
|
use function Hyperf\Config\config;
|
||||||
|
|
||||||
final class GoodsRpc
|
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');
|
$this->requestService = RequestServiceFactory::make([
|
||||||
if (empty($this->baseUri)) {
|
'base_uri' => $baseUri ?? config('payment.base_uri'),
|
||||||
throw new \InvalidArgumentException('payment.base_uri is required');
|
RequestOptions::ALLOW_REDIRECTS => true,
|
||||||
}
|
]);
|
||||||
$this->requestService->setOptions(
|
|
||||||
[
|
|
||||||
'base_uri' => $this->baseUri,
|
|
||||||
RequestOptions::ALLOW_REDIRECTS => true,
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -44,8 +41,6 @@ final class GoodsRpc
|
|||||||
*/
|
*/
|
||||||
public function find(int $goodsId, array $specifies): Goods
|
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);
|
$response = $this->requestService->requestGet("/rpc/v1/goods/$goodsId/search", $specifies);
|
||||||
$content = $response->getBody()->getContents();
|
$content = $response->getBody()->getContents();
|
||||||
return Goods::make(Json::decode($content));
|
return Goods::make(Json::decode($content));
|
||||||
|
|||||||
@@ -16,7 +16,10 @@ use Hyperf\Di\Annotation\Inject;
|
|||||||
use Lmc\HttpConstants\Header;
|
use Lmc\HttpConstants\Header;
|
||||||
use Money\Money;
|
use Money\Money;
|
||||||
use Psr\Http\Message\RequestInterface;
|
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;
|
use function Hyperf\Config\config;
|
||||||
|
|
||||||
@@ -29,9 +32,15 @@ use function Hyperf\Config\config;
|
|||||||
*/
|
*/
|
||||||
final class WechatRpc
|
final class WechatRpc
|
||||||
{
|
{
|
||||||
#[Inject]
|
private RequestService $requestService;
|
||||||
private HttpRequestService $requestService;
|
|
||||||
|
|
||||||
|
private string $baseUrl;
|
||||||
|
|
||||||
|
public function __construct(?string $baseUrl = null)
|
||||||
|
{
|
||||||
|
$this->requestService = RequestServiceFactory::make();
|
||||||
|
$this->baseUrl = $baseUrl ?? config('payment.base_uri');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param RequestInterface $request
|
* @param RequestInterface $request
|
||||||
@@ -49,7 +58,7 @@ final class WechatRpc
|
|||||||
Money $money,
|
Money $money,
|
||||||
string $uid
|
string $uid
|
||||||
): array {
|
): array {
|
||||||
$url = config('payment.base_uri') . '/rpc/v1/wechat/qrcode';
|
$url = $this->baseUrl . '/rpc/v1/wechat/qrcode';
|
||||||
$data = [
|
$data = [
|
||||||
'service' => config('payment.sp_id'),
|
'service' => config('payment.sp_id'),
|
||||||
'amount' => (int)$money->getAmount(),
|
'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\Resource\Goods;
|
||||||
use Singularity\HDK\Pay\Sdk\GoodsRpc;
|
use Singularity\HDK\Pay\Sdk\GoodsRpc;
|
||||||
|
|
||||||
/** @var GoodsRpc $service */
|
test(
|
||||||
$service = \Hyperf\Support\make(
|
'根据分类和商品名称获取到对应的 SKU',
|
||||||
GoodsRpc::class,
|
/**
|
||||||
[
|
* @throws GuzzleException
|
||||||
'requestService' => \Hyperf\Support\make(HttpRequestService::class),
|
*/
|
||||||
'baseUri' => 'http://localhost:9611'
|
function () {
|
||||||
]);
|
$service = new GoodsRpc('http://localhost:9611');
|
||||||
|
$goods = $service->find(
|
||||||
test('根据分类和商品名称获取到对应的 SKU', function () use ($service) {
|
1,
|
||||||
$goods = $service->find(
|
[
|
||||||
1,
|
'lattice' => 'TYPE-0',
|
||||||
[
|
'precision' => 'high',
|
||||||
'lattice' => 'TYPE-0',
|
'mode' => 'gradient',
|
||||||
'precision' => 'high',
|
],
|
||||||
'mode' => 'gradient',
|
);
|
||||||
],
|
expect($goods)->toBeInstanceOf(Goods::class);
|
||||||
);
|
}
|
||||||
expect($goods)->toBeInstanceOf(Goods::class);
|
);
|
||||||
})->only();
|
|
||||||
|
|||||||
Reference in New Issue
Block a user