mirror of
https://github.com/anikeen-com/id.git
synced 2026-10-31 20:59:32 +00:00
Fixed (called endpoints that don't exist):
- charge(): POST v1/billing/charge (Stripe options aren't passed through anymore)
- Invoice::getInvoiceTemporaryUrl(): GET instead of a non-existent PUT
- OrderItems::create(): POST v1/orders/{order}/items
- createUser() / isEmailExisting(): admin endpoints with the app token
- sshKeysByUserId(): app endpoint; no longer returns the first user's keys for every user
- createOrderPreview(): country_iso goes into billing_address as the API expects
- public endpoints (products, order preview) work without a token
- SshKeys::find() results can be deleted
Added:
- Billable: sshKeys() (create, update, delete), billingOverview(), PaymentMethod::delete()
- AnikeenId: products(), boxes(), shipping labels (list, show, pdf, issue, ship, price list),
createOrderForUser(), createTransactionForUser(), findOrCreateSocialiteUser()
Requirements: PHP 8.2+, Laravel 11-13 (Laravel 10 and PHP 8.1 are end of life).
Docs generator handles union types; README regenerated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
43 lines
1.3 KiB
PHP
43 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace Anikeen\Id\Concerns;
|
|
|
|
use Anikeen\Id\ApiOperations\Post;
|
|
use Anikeen\Id\Result;
|
|
use Throwable;
|
|
|
|
trait ManagesPricing
|
|
{
|
|
use Post;
|
|
|
|
/**
|
|
* Make a new order preview (will not be stored into the database).
|
|
*
|
|
* VAT is calculated based on the billing address and shown in the order response.
|
|
*
|
|
* @param array{
|
|
* country_iso: string,
|
|
* items: array<array{
|
|
* type: string,
|
|
* name: string,
|
|
* description: string,
|
|
* price: float|int,
|
|
* unit: string,
|
|
* units: int
|
|
* }>
|
|
* } $attributes The order data:
|
|
* - country_iso: ISO 3166-1 alpha-2 country code
|
|
* - items: Array of order items (each with type, name, price, unit, units, and quantity)
|
|
* @throws Throwable
|
|
*/
|
|
public function createOrderPreview(array $attributes = []): Result
|
|
{
|
|
// the API expects the country as part of the billing address
|
|
if (isset($attributes['country_iso']) && !isset($attributes['billing_address'])) {
|
|
$attributes['billing_address'] = ['country_iso' => $attributes['country_iso']];
|
|
unset($attributes['country_iso']);
|
|
}
|
|
|
|
return $this->post('v1/orders/preview', $attributes);
|
|
}
|
|
}
|