作者 lackoxygen

add part api

@@ -7,6 +7,7 @@ use Lackoxygen\TiktokOpen\Base\Event\Fail; @@ -7,6 +7,7 @@ use Lackoxygen\TiktokOpen\Base\Event\Fail;
7 use Lackoxygen\TiktokOpen\Base\Event\Request; 7 use Lackoxygen\TiktokOpen\Base\Event\Request;
8 use Lackoxygen\TiktokOpen\Base\Event\Response; 8 use Lackoxygen\TiktokOpen\Base\Event\Response;
9 use Lackoxygen\TiktokOpen\Base\ServiceManager; 9 use Lackoxygen\TiktokOpen\Base\ServiceManager;
  10 +use Lackoxygen\TiktokOpen\Base\Signer\SignerInterface;
10 use Lackoxygen\TiktokOpen\Base\Traits\BaseClient; 11 use Lackoxygen\TiktokOpen\Base\Traits\BaseClient;
11 use Lackoxygen\TiktokOpen\Wap\Listener; 12 use Lackoxygen\TiktokOpen\Wap\Listener;
12 use GuzzleHttp\RequestOptions; 13 use GuzzleHttp\RequestOptions;
@@ -20,10 +21,13 @@ class Client extends ServiceManager @@ -20,10 +21,13 @@ class Client extends ServiceManager
20 21
21 private bool $withSession; 22 private bool $withSession;
22 23
  24 + private SignerInterface $signer;
  25 +
23 public function __construct( 26 public function __construct(
24 - Application $app, $requestOption = '', $withSession = false  
25 - )  
26 - { 27 + Application $app,
  28 + $requestOption = '',
  29 + $withSession = false
  30 + ) {
27 parent::__construct($app); 31 parent::__construct($app);
28 32
29 $this->listen(); 33 $this->listen();
@@ -43,38 +47,29 @@ class Client extends ServiceManager @@ -43,38 +47,29 @@ class Client extends ServiceManager
43 47
44 public function asForm(): Client 48 public function asForm(): Client
45 { 49 {
46 - return new Client(  
47 - $this->app,  
48 - RequestOptions::FORM_PARAMS,  
49 - $this->withSession  
50 - ); 50 + return new Client($this->app, RequestOptions::FORM_PARAMS, $this->withSession);
51 } 51 }
52 52
53 public function asJson(): Client 53 public function asJson(): Client
54 { 54 {
55 - return new Client(  
56 - $this->app,  
57 - RequestOptions::JSON,  
58 - $this->withSession  
59 - ); 55 + return new Client($this->app, RequestOptions::JSON, $this->withSession);
60 } 56 }
61 57
62 public function asMultipart(): Client 58 public function asMultipart(): Client
63 { 59 {
64 - return new Client(  
65 - $this->app,  
66 - RequestOptions::MULTIPART,  
67 - $this->withSession  
68 - ); 60 + return new Client($this->app, RequestOptions::MULTIPART, $this->withSession);
69 } 61 }
70 62
71 public function withSession(): Client 63 public function withSession(): Client
72 { 64 {
73 - return new Client(  
74 - $this->app,  
75 - $this->requestOption,  
76 - true  
77 - ); 65 + return new Client($this->app, $this->requestOption, true);
  66 + }
  67 +
  68 + public function signVia(SignerInterface $signer): Client
  69 + {
  70 + $this->signer = $signer;
  71 +
  72 + return $this;
78 } 73 }
79 74
80 public function refresh() 75 public function refresh()
  1 +<?php
  2 +
  3 +namespace Lackoxygen\TiktokOpen\Base\Signer;
  4 +
  5 +use Lackoxygen\TiktokOpen\Base\Client\Request;
  6 +
  7 +class LifeSigner implements SignerInterface
  8 +{
  9 + protected Request $request;
  10 +
  11 + public function setRequest(Request $request)
  12 + {
  13 + $this->request = $request;
  14 + }
  15 +
  16 + public function make()
  17 + {
  18 +
  19 + }
  20 +}
  1 +<?php
  2 +
  3 +namespace Lackoxygen\TiktokOpen\Base\Signer;
  4 +
  5 +use Lackoxygen\TiktokOpen\Base\Client\Request;
  6 +
  7 +interface SignerInterface
  8 +{
  9 + public function setRequest(Request $request);
  10 +
  11 + public function make();
  12 +}
  1 +<?php
  2 +
  3 +namespace Lackoxygen\TiktokOpen\Wap\Life;
  4 +
  5 +use Lackoxygen\TiktokOpen\Base\ServiceManager;
  6 +use Lackoxygen\TiktokOpen\Base\Signer\LifeSigner;
  7 +
  8 +class Coupon extends ServiceManager
  9 +{
  10 + /**
  11 + * 验券准备
  12 + *
  13 + * @param string $encryptedData
  14 + * @param string $code
  15 + *
  16 + * @return mixed
  17 + */
  18 + public function prepare(string $encryptedData = '', string $code = '')
  19 + {
  20 + return $this->app['client']->signVia(new LifeSigner())
  21 + ->asForm()
  22 + ->post('/goodlife/v1/fulfilment/certificate/prepare/',
  23 + ['encrypted_data' => $encryptedData, 'code' => $code]);
  24 + }
  25 +
  26 + /**
  27 + * 验券
  28 + *
  29 + * @param array $body
  30 + *
  31 + * @return mixed
  32 + */
  33 + public function verify(array $body = [])
  34 + {
  35 + return $this->app['client']->signVia(new LifeSigner())
  36 + ->asForm()
  37 + ->post('/goodlife/v1/fulfilment/certificate/verify/', $body);
  38 + }
  39 +
  40 + /**
  41 + * 撤销核销
  42 + *
  43 + * @link https://developer.open-douyin.com/docs/resource/zh-CN/dop/develop/openapi/life-service-open-ability/life.capacity/life.capacity.fulfilment/certificate.verify
  44 + *
  45 + * @param array $body
  46 + *
  47 + * @return mixed
  48 + */
  49 + public function cancel(array $body = [])
  50 + {
  51 + return $this->app['client']->signVia(new LifeSigner())
  52 + ->asForm()
  53 + ->post('/goodlife/v1/fulfilment/certificate/cancel/', $body);
  54 + }
  55 +
  56 + /**
  57 + * 券状态查询
  58 + *
  59 + * @param string $encryptedCode
  60 + *
  61 + * @return mixed
  62 + */
  63 + public function get(string $encryptedCode)
  64 + {
  65 + return $this->app['client']->signVia(new LifeSigner())
  66 + ->asForm()
  67 + ->get('/goodlife/v1/fulfilment/certificate/get/', ['encrypted_code' => $encryptedCode]);
  68 + }
  69 +
  70 + /**
  71 + * 券状态批量查询
  72 + *
  73 + * @param string $encryptedCode
  74 + * @param string $orderId
  75 + *
  76 + * @return mixed
  77 + */
  78 + public function query(string $encryptedCode = '', string $orderId = '')
  79 + {
  80 + return $this->app['client']->signVia(new LifeSigner())
  81 + ->asForm()
  82 + ->get('/goodlife/v1/fulfilment/certificate/query/',
  83 + ['encrypted_code' => $encryptedCode, 'order_id' => $orderId]);
  84 + }
  85 +}
@@ -4,7 +4,7 @@ namespace Lackoxygen\TiktokOpen\Wap; @@ -4,7 +4,7 @@ namespace Lackoxygen\TiktokOpen\Wap;
4 4
5 use Lackoxygen\TiktokOpen\Base\AbstractProvider; 5 use Lackoxygen\TiktokOpen\Base\AbstractProvider;
6 use Lackoxygen\TiktokOpen\Base\Client\Client; 6 use Lackoxygen\TiktokOpen\Base\Client\Client;
7 -use Lackoxygen\TiktokOpen\Wap\{Data\Data, Js\Js, OAuth\OAuth, User\User, Video\Video}; 7 +use Lackoxygen\TiktokOpen\Wap\{Data\Data, Js\Js, Life\Coupon, OAuth\OAuth, User\User, Video\Video};
8 8
9 /** 9 /**
10 * @method OAuth oauth() 10 * @method OAuth oauth()
@@ -24,7 +24,8 @@ class WapProvider extends AbstractProvider @@ -24,7 +24,8 @@ class WapProvider extends AbstractProvider
24 'user' => User::class, 24 'user' => User::class,
25 'video' => Video::class, 25 'video' => Video::class,
26 'data' => Data::class, 26 'data' => Data::class,
27 - 'session' => Session::class 27 + 'session' => Session::class,
  28 + 'lifeCoupon' => Coupon::class
28 ]; 29 ];
29 30
30 public function __construct(string $alias) 31 public function __construct(string $alias)