diff --git a/OPENAPI_VERSION b/OPENAPI_VERSION new file mode 100644 index 000000000..19a48dddd --- /dev/null +++ b/OPENAPI_VERSION @@ -0,0 +1 @@ +v146 \ No newline at end of file diff --git a/init.php b/init.php index 7b34170ab..5c32b6125 100644 --- a/init.php +++ b/init.php @@ -81,6 +81,7 @@ require __DIR__ . '/lib/ApplePayDomain.php'; require __DIR__ . '/lib/ApplicationFee.php'; require __DIR__ . '/lib/ApplicationFeeRefund.php'; +require __DIR__ . '/lib/Apps/Secret.php'; require __DIR__ . '/lib/Balance.php'; require __DIR__ . '/lib/BalanceTransaction.php'; require __DIR__ . '/lib/BankAccount.php'; @@ -191,6 +192,7 @@ require __DIR__ . '/lib/Service/AccountLinkService.php'; require __DIR__ . '/lib/Service/ApplePayDomainService.php'; require __DIR__ . '/lib/Service/ApplicationFeeService.php'; +require __DIR__ . '/lib/Service/Apps/SecretService.php'; require __DIR__ . '/lib/Service/BalanceService.php'; require __DIR__ . '/lib/Service/BalanceTransactionService.php'; require __DIR__ . '/lib/Service/BillingPortal/ConfigurationService.php'; @@ -275,6 +277,7 @@ require __DIR__ . '/lib/Service/WebhookEndpointService.php'; // Service factories +require __DIR__ . '/lib/Service/Apps/AppsServiceFactory.php'; require __DIR__ . '/lib/Service/BillingPortal/BillingPortalServiceFactory.php'; require __DIR__ . '/lib/Service/Checkout/CheckoutServiceFactory.php'; require __DIR__ . '/lib/Service/CoreServiceFactory.php'; diff --git a/lib/Apps/Secret.php b/lib/Apps/Secret.php new file mode 100644 index 000000000..dfcc36b85 --- /dev/null +++ b/lib/Apps/Secret.php @@ -0,0 +1,78 @@ +secret. Other apps can't + * view secrets created by an app. Additionally, secrets are scoped to provide + * further permission control. + * + * All Dashboard users and the app backend share account scoped + * secrets. Use the account scope for secrets that don't change + * per-user, like a third-party API key. + * + * A user scoped secret is accessible by the app backend and one + * specific Dashboard user. Use the user scope for per-user secrets + * like per-user OAuth tokens, where different users might have different + * permissions. + * + * Related guide: Store + * data between page reloads. + * + * @property string $id Unique identifier for the object. + * @property string $object String representing the object's type. Objects of the same type share the same value. + * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. + * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. + * @property string $name A name for the secret that's unique within the scope. + * @property null|string $payload The plaintext secret value to be stored. + * @property \Stripe\StripeObject $scope + */ +class Secret extends \Stripe\ApiResource +{ + const OBJECT_NAME = 'apps.secret'; + + use \Stripe\ApiOperations\All; + use \Stripe\ApiOperations\Create; + + /** + * @param null|array $params + * @param null|array|string $opts + * + * @throws \Stripe\Exception\ApiErrorException if the request fails + * + * @return \Stripe\Apps\Secret the deleted secret + */ + public static function deleteWhere($params = null, $opts = null) + { + $url = static::classUrl() . '/delete'; + list($response, $opts) = static::_staticRequest('post', $url, $params, $opts); + $obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts); + $obj->setLastResponse($response); + + return $obj; + } + + /** + * @param null|array $params + * @param null|array|string $opts + * + * @throws \Stripe\Exception\ApiErrorException if the request fails + * + * @return \Stripe\Apps\Secret the finded secret + */ + public static function find($params = null, $opts = null) + { + $url = static::classUrl() . '/find'; + list($response, $opts) = static::_staticRequest('get', $url, $params, $opts); + $obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts); + $obj->setLastResponse($response); + + return $obj; + } +} diff --git a/lib/PaymentMethod.php b/lib/PaymentMethod.php index e14e474e2..ed0112f7b 100644 --- a/lib/PaymentMethod.php +++ b/lib/PaymentMethod.php @@ -19,6 +19,7 @@ * @property string $id Unique identifier for the object. * @property string $object String representing the object's type. Objects of the same type share the same value. * @property \Stripe\StripeObject $acss_debit + * @property \Stripe\StripeObject $affirm * @property \Stripe\StripeObject $afterpay_clearpay * @property \Stripe\StripeObject $alipay * @property \Stripe\StripeObject $au_becs_debit @@ -39,6 +40,7 @@ * @property \Stripe\StripeObject $interac_present * @property \Stripe\StripeObject $klarna * @property \Stripe\StripeObject $konbini + * @property \Stripe\StripeObject $link * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. * @property null|\Stripe\StripeObject $metadata Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. * @property \Stripe\StripeObject $oxxo diff --git a/lib/Service/Apps/AppsServiceFactory.php b/lib/Service/Apps/AppsServiceFactory.php new file mode 100644 index 000000000..39f37345d --- /dev/null +++ b/lib/Service/Apps/AppsServiceFactory.php @@ -0,0 +1,25 @@ + + */ + private static $classMap = [ + 'secrets' => SecretService::class, + ]; + + protected function getServiceClass($name) + { + return \array_key_exists($name, self::$classMap) ? self::$classMap[$name] : null; + } +} diff --git a/lib/Service/Apps/SecretService.php b/lib/Service/Apps/SecretService.php new file mode 100644 index 000000000..8c9c74b48 --- /dev/null +++ b/lib/Service/Apps/SecretService.php @@ -0,0 +1,68 @@ + + */ + public function all($params = null, $opts = null) + { + return $this->requestCollection('get', '/v1/apps/secrets', $params, $opts); + } + + /** + * Create or replace a secret in the secret store. + * + * @param null|array $params + * @param null|array|\Stripe\Util\RequestOptions $opts + * + * @throws \Stripe\Exception\ApiErrorException if the request fails + * + * @return \Stripe\Apps\Secret + */ + public function create($params = null, $opts = null) + { + return $this->request('post', '/v1/apps/secrets', $params, $opts); + } + + /** + * Deletes a secret from the secret store by name and scope. + * + * @param null|array $params + * @param null|array|\Stripe\Util\RequestOptions $opts + * + * @throws \Stripe\Exception\ApiErrorException if the request fails + * + * @return \Stripe\Apps\Secret + */ + public function deleteWhere($params = null, $opts = null) + { + return $this->request('post', '/v1/apps/secrets/delete', $params, $opts); + } + + /** + * Finds a secret in the secret store by name and scope. + * + * @param null|array $params + * @param null|array|\Stripe\Util\RequestOptions $opts + * + * @throws \Stripe\Exception\ApiErrorException if the request fails + * + * @return \Stripe\Apps\Secret + */ + public function find($params = null, $opts = null) + { + return $this->request('get', '/v1/apps/secrets/find', $params, $opts); + } +} diff --git a/lib/Service/CoreServiceFactory.php b/lib/Service/CoreServiceFactory.php index 570d3b842..ce9676c21 100644 --- a/lib/Service/CoreServiceFactory.php +++ b/lib/Service/CoreServiceFactory.php @@ -11,6 +11,7 @@ * @property AccountService $accounts * @property ApplePayDomainService $applePayDomains * @property ApplicationFeeService $applicationFees + * @property Apps\AppsServiceFactory $apps * @property BalanceService $balance * @property BalanceTransactionService $balanceTransactions * @property BillingPortal\BillingPortalServiceFactory $billingPortal @@ -76,6 +77,7 @@ class CoreServiceFactory extends \Stripe\Service\AbstractServiceFactory 'accounts' => AccountService::class, 'applePayDomains' => ApplePayDomainService::class, 'applicationFees' => ApplicationFeeService::class, + 'apps' => Apps\AppsServiceFactory::class, 'balance' => BalanceService::class, 'balanceTransactions' => BalanceTransactionService::class, 'billingPortal' => BillingPortal\BillingPortalServiceFactory::class, diff --git a/lib/StripeClient.php b/lib/StripeClient.php index d0e74c641..05989ff62 100644 --- a/lib/StripeClient.php +++ b/lib/StripeClient.php @@ -11,6 +11,7 @@ * @property \Stripe\Service\AccountService $accounts * @property \Stripe\Service\ApplePayDomainService $applePayDomains * @property \Stripe\Service\ApplicationFeeService $applicationFees + * @property \Stripe\Service\Apps\AppsServiceFactory $apps * @property \Stripe\Service\BalanceService $balance * @property \Stripe\Service\BalanceTransactionService $balanceTransactions * @property \Stripe\Service\BillingPortal\BillingPortalServiceFactory $billingPortal diff --git a/lib/Util/ObjectTypes.php b/lib/Util/ObjectTypes.php index 93f7095d9..637e0e885 100644 --- a/lib/Util/ObjectTypes.php +++ b/lib/Util/ObjectTypes.php @@ -16,6 +16,7 @@ class ObjectTypes \Stripe\ApplePayDomain::OBJECT_NAME => \Stripe\ApplePayDomain::class, \Stripe\ApplicationFee::OBJECT_NAME => \Stripe\ApplicationFee::class, \Stripe\ApplicationFeeRefund::OBJECT_NAME => \Stripe\ApplicationFeeRefund::class, + \Stripe\Apps\Secret::OBJECT_NAME => \Stripe\Apps\Secret::class, \Stripe\Balance::OBJECT_NAME => \Stripe\Balance::class, \Stripe\BalanceTransaction::OBJECT_NAME => \Stripe\BalanceTransaction::class, \Stripe\BankAccount::OBJECT_NAME => \Stripe\BankAccount::class, diff --git a/tests/Stripe/GeneratedExamplesTest.php b/tests/Stripe/GeneratedExamplesTest.php index d32761538..fc1e37ba7 100644 --- a/tests/Stripe/GeneratedExamplesTest.php +++ b/tests/Stripe/GeneratedExamplesTest.php @@ -483,6 +483,37 @@ public function testCreateReceivedDebit() static::assertInstanceOf(\Stripe\Treasury\ReceivedDebit::class, $result); } + public function testCreateSecret() + { + $this->expectsRequest('post', '/v1/apps/secrets'); + $result = $this->client->apps->secrets->create( + [ + 'name' => 'sec_123', + 'payload' => 'very secret string', + 'scope' => ['type' => 'account'], + ] + ); + static::assertInstanceOf(\Stripe\Apps\Secret::class, $result); + } + + public function testFindSecret() + { + $this->expectsRequest('get', '/v1/apps/secrets/find'); + $result = $this->client->apps->secrets->find( + ['name' => 'sec_123', 'scope' => ['type' => 'account']] + ); + static::assertInstanceOf(\Stripe\Apps\Secret::class, $result); + } + + public function testDeleteWhereSecret() + { + $this->expectsRequest('post', '/v1/apps/secrets/delete'); + $result = $this->client->apps->secrets->deleteWhere( + ['name' => 'sec_123', 'scope' => ['type' => 'account']] + ); + static::assertInstanceOf(\Stripe\Apps\Secret::class, $result); + } + public function testListCustomer() { $this->expectsRequest('get', '/v1/customers');