@doswiftly/storefront-operations 10.0.0 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md CHANGED
@@ -27,10 +27,10 @@ consumer's `codegen.ts` references this package's `.graphql` files as
27
27
  live in the consumer's repo.
28
28
 
29
29
  <!-- AUTOGEN:STATS:BEGIN — auto-regenerated, do not edit by hand -->
30
- - **Schema version**: 10.0.0
30
+ - **Schema version**: 11.1.0
31
31
  - **Queries**: 48
32
- - **Mutations**: 39
33
- - **Fragments**: 99
32
+ - **Mutations**: 40
33
+ - **Fragments**: 100
34
34
  <!-- AUTOGEN:STATS:END -->
35
35
 
36
36
  ## Loading order
package/CHANGELOG.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # Changelog
2
2
 
3
+ ## 11.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - c2e80b2: Add `paymentCreate` — initiate a payment session for a completed order.
8
+
9
+ After `cartComplete` returns an order, call `paymentCreate` (when `order.canCreatePayment` is `true`) to start the payment. Orders with an offline payment method (cash on delivery, manual bank transfer) skip this step. The returned `PaymentSession` is flow-aware — branch on `session.flow`:
10
+ - `ONLINE_REDIRECT` → redirect the browser to `session.redirectUrl`
11
+ - `ONLINE_EMBEDDED` → render an in-page widget with `session.clientSecret`
12
+ - `INSTANT_DIRECT` → already settled, read `session.status`
13
+
14
+ **`@doswiftly/storefront-operations`** — new `PaymentCreate` mutation and `PaymentSession` fragment.
15
+
16
+ **`@doswiftly/storefront-sdk`** — new `CartClient.createPayment(input)` method, plus the `PaymentSession`, `PaymentCreateInput`, `PaymentInitiationFlow` and `PaymentErrorCode` types.
17
+
18
+ ```ts
19
+ const { order } = await cartClient.complete({ cartId });
20
+ if (order.canCreatePayment) {
21
+ const session = await cartClient.createPayment({
22
+ orderId: order.id,
23
+ returnUrl: "https://my-shop.example/checkout/complete",
24
+ });
25
+ if (session.flow === "ONLINE_REDIRECT") {
26
+ window.location.href = session.redirectUrl!;
27
+ }
28
+ }
29
+ ```
30
+
31
+ `paymentCreate` is idempotent on the order — re-calling returns the existing still-valid session instead of creating a duplicate, so it is safe to retry. `returnUrl` / `cancelUrl` are optional and, when supplied, must point to a verified domain of the shop. The call throws on validation/business errors — inspect `error.userErrors[0].code` (`PaymentErrorCode`): `ORDER_NOT_FOUND`, `ORDER_ALREADY_PAID`, `ORDER_NOT_PAYABLE`, `PAYMENT_PROVIDER_NOT_CONFIGURED`, `RETURN_URL_INVALID`, `INVALID_ID_FORMAT`, `PAYMENT_FAILED`.
32
+
33
+ ## 11.0.0
34
+
35
+ ### Major Changes
36
+
37
+ - c1faee7: **Breaking:** `cartComplete` no longer returns `cart` in its payload.
38
+
39
+ After completion the cart is converted and locked — returning it meant an extra server round-trip for a dead resource. The mutation payload (and `cartClient.complete()`) now returns only `{ order, warnings }`. The `order` is the meaningful result of completion and carries `canCreatePayment` + `paymentMethodType` for the post-completion payment flow.
40
+
41
+ **Migration:**
42
+ - `cartClient.complete()` now returns `{ order, warnings }` — remove any use of `result.cart`. After completion, clear your local cart state and work with `result.order`.
43
+ - If you query `cartComplete` directly, drop the `cart { ... }` selection — the field no longer exists on `CartCompletePayload`.
44
+
3
45
  ## 10.0.0
4
46
 
5
47
  ### Major Changes
package/README.md CHANGED
@@ -381,6 +381,7 @@ full executable body of each operation.
381
381
  | `CartRemoveGiftCard` | Removes a gift card from the applied list and recalculates FIFO `appliedAmount` for the remaining cards. Since gift card balances are only debited at `cartComplete`, removing before completion has no effect on the underlying gift card balance. |
382
382
  | `CartUpdateGiftCardRecipient` | Sets per-line-item recipient details (name, email, message) for digital gift card products in the cart (line items where the variant represents a gift-card SKU). Required before `cartComplete` for any line item with a gift-card variant. Recipient details propagated to the resulting order. |
383
383
  | `CartComplete` | Finalizes the cart — creates the `Order`, deducts gift cards, sends order-created confirmation — all atomically. **Idempotent on `idempotencyKey`** (auto-generated from cartId + minute timestamp if caller omits it). Returns `order` field after completion. Note: `paymentUrl` is intentionally NOT in payload — for hosted gateways (online providers) the storefront calls a separate `paymentCreate` mutation after this returns (check `order.canCreatePayment` first). Errors: `EMAIL_REQUIRED`, `SHIPPING_ADDRESS_REQUIRED`, `SHIPPING_METHOD_REQUIRED`, `PAYMENT_METHOD_REQUIRED`, `INSUFFICIENT_STOCK`, `ALREADY_COMPLETED`. |
384
+ | `PaymentCreate` | Initiates a payment session for an order created by `cartComplete` — call this when `order.canCreatePayment` is `true` (orders with an offline payment method like cash-on-delivery skip this step). `orderId` is required; `returnUrl` / `cancelUrl` are optional and, when supplied, must point to a verified domain of the shop (open-redirect protected). Branch on the returned `payment.flow`: `ONLINE_REDIRECT` → redirect to `payment.redirectUrl`, `ONLINE_EMBEDDED` → render a widget with `payment.clientSecret`, `INSTANT_DIRECT` → already settled, read `payment.status`. Public, but ownership-checked — an authenticated customer cannot pay for another customer's order. **Idempotent** — calling it again for the same order returns the existing still-valid session instead of creating a duplicate (safe to retry). Rate limit: 5 requests/minute. `userErrors[].code`: `ORDER_NOT_FOUND`, `ORDER_ALREADY_PAID`, `ORDER_NOT_PAYABLE`, `PAYMENT_PROVIDER_NOT_CONFIGURED`, `RETURN_URL_INVALID`, `INVALID_ID_FORMAT`, `PAYMENT_FAILED`. |
384
385
 
385
386
  #### Return Mutations
386
387
 
@@ -503,6 +504,7 @@ full executable body of each operation.
503
504
  | --- | --- | --- |
504
505
  | `PaymentMethod` | `PaymentMethod` | Single payment method enabled for the shop — type (CARD / BANK_TRANSFER / BLIK / PAYPAL / APPLE_PAY / GOOGLE_PAY / CASH_ON_DELIVERY / OTHER), provider, icon, supported currencies, default flag, sort position. Spread on the checkout payment step. |
505
506
  | `AvailablePaymentMethods` | `AvailablePaymentMethods` | Active payment methods list with the merchant's `defaultMethod`. Returned by the `availablePaymentMethods` query. |
507
+ | `PaymentSession` | `PaymentSession` | Initiated payment session for an order — returned by the `paymentCreate` mutation. Branch on `flow`: `ONLINE_REDIRECT` (redirect the browser to `redirectUrl`), `ONLINE_EMBEDDED` (render an in-page widget with `clientSecret`), `INSTANT_DIRECT` (settled with no UI — read `status`). `expiresAt` is ISO 8601, present when the gateway session has a TTL. |
506
508
 
507
509
  #### Shipments / Tracking
508
510
 
package/fragments.graphql CHANGED
@@ -672,6 +672,18 @@ fragment AvailablePaymentMethods on AvailablePaymentMethods {
672
672
  }
673
673
  }
674
674
 
675
+ # Initiated payment session for an order — returned by the `paymentCreate` mutation. Branch on `flow`: `ONLINE_REDIRECT` (redirect the browser to `redirectUrl`), `ONLINE_EMBEDDED` (render an in-page widget with `clientSecret`), `INSTANT_DIRECT` (settled with no UI — read `status`). `expiresAt` is ISO 8601, present when the gateway session has a TTL.
676
+ fragment PaymentSession on PaymentSession {
677
+ id
678
+ orderId
679
+ flow
680
+ provider
681
+ redirectUrl
682
+ clientSecret
683
+ status
684
+ expiresAt
685
+ }
686
+
675
687
  # ============================================
676
688
  # Discount Code Validation
677
689
  # ============================================
package/llms-full.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  # DoSwiftly Storefront Operations — Full Reference
2
2
 
3
- > Schema version: **10.0.0**
4
- > 48 queries · 39 mutations · 99 fragments
3
+ > Schema version: **11.1.0**
4
+ > 48 queries · 40 mutations · 100 fragments
5
5
 
6
6
  Auto-generated from `.graphql` source files. Do not edit by hand — this file is
7
7
  regenerated on every release to match the published schema.
@@ -1992,15 +1992,12 @@ mutation CartUpdateGiftCardRecipient($input: CartUpdateGiftCardRecipientInput!)
1992
1992
  **Variables**:
1993
1993
  - `$input`: `CartCompleteInput!`
1994
1994
 
1995
- **Fragments used**: `Cart`, `CartWarning`, `Order`, `UserError`
1995
+ **Fragments used**: `CartWarning`, `Order`, `UserError`
1996
1996
 
1997
1997
  **GraphQL**:
1998
1998
  ```graphql
1999
1999
  mutation CartComplete($input: CartCompleteInput!) {
2000
2000
  cartComplete(input: $input) {
2001
- cart {
2002
- ...Cart
2003
- }
2004
2001
  order {
2005
2002
  ...Order
2006
2003
  }
@@ -2014,6 +2011,31 @@ mutation CartComplete($input: CartCompleteInput!) {
2014
2011
  }
2015
2012
  ```
2016
2013
 
2014
+ ### Mutation: `PaymentCreate`
2015
+
2016
+ **Section**: Cart Completion Mutations
2017
+
2018
+ **Description**: Initiates a payment session for an order created by `cartComplete` — call this when `order.canCreatePayment` is `true` (orders with an offline payment method like cash-on-delivery skip this step). `orderId` is required; `returnUrl` / `cancelUrl` are optional and, when supplied, must point to a verified domain of the shop (open-redirect protected). Branch on the returned `payment.flow`: `ONLINE_REDIRECT` → redirect to `payment.redirectUrl`, `ONLINE_EMBEDDED` → render a widget with `payment.clientSecret`, `INSTANT_DIRECT` → already settled, read `payment.status`. Public, but ownership-checked — an authenticated customer cannot pay for another customer's order. **Idempotent** — calling it again for the same order returns the existing still-valid session instead of creating a duplicate (safe to retry). Rate limit: 5 requests/minute. `userErrors[].code`: `ORDER_NOT_FOUND`, `ORDER_ALREADY_PAID`, `ORDER_NOT_PAYABLE`, `PAYMENT_PROVIDER_NOT_CONFIGURED`, `RETURN_URL_INVALID`, `INVALID_ID_FORMAT`, `PAYMENT_FAILED`.
2019
+
2020
+ **Variables**:
2021
+ - `$input`: `PaymentCreateInput!`
2022
+
2023
+ **Fragments used**: `PaymentSession`, `UserError`
2024
+
2025
+ **GraphQL**:
2026
+ ```graphql
2027
+ mutation PaymentCreate($input: PaymentCreateInput!) {
2028
+ paymentCreate(input: $input) {
2029
+ payment {
2030
+ ...PaymentSession
2031
+ }
2032
+ userErrors {
2033
+ ...UserError
2034
+ }
2035
+ }
2036
+ }
2037
+ ```
2038
+
2017
2039
  ### Mutation: `ReturnCreate`
2018
2040
 
2019
2041
  **Section**: Return Mutations
@@ -3318,6 +3340,26 @@ fragment AvailablePaymentMethods on AvailablePaymentMethods {
3318
3340
  }
3319
3341
  ```
3320
3342
 
3343
+ ### Fragment: `PaymentSession` on `PaymentSession`
3344
+
3345
+ **Section**: Payment Methods
3346
+
3347
+ **Description**: Initiated payment session for an order — returned by the `paymentCreate` mutation. Branch on `flow`: `ONLINE_REDIRECT` (redirect the browser to `redirectUrl`), `ONLINE_EMBEDDED` (render an in-page widget with `clientSecret`), `INSTANT_DIRECT` (settled with no UI — read `status`). `expiresAt` is ISO 8601, present when the gateway session has a TTL.
3348
+
3349
+ **GraphQL**:
3350
+ ```graphql
3351
+ fragment PaymentSession on PaymentSession {
3352
+ id
3353
+ orderId
3354
+ flow
3355
+ provider
3356
+ redirectUrl
3357
+ clientSecret
3358
+ status
3359
+ expiresAt
3360
+ }
3361
+ ```
3362
+
3321
3363
  ### Fragment: `ShipmentEvent` on `ShipmentEvent`
3322
3364
 
3323
3365
  **Section**: Shipments / Tracking
package/mutations.graphql CHANGED
@@ -392,9 +392,6 @@ mutation CartUpdateGiftCardRecipient($input: CartUpdateGiftCardRecipientInput!)
392
392
  # Finalizes the cart — creates the `Order`, deducts gift cards, sends order-created confirmation — all atomically. **Idempotent on `idempotencyKey`** (auto-generated from cartId + minute timestamp if caller omits it). Returns `order` field after completion. Note: `paymentUrl` is intentionally NOT in payload — for hosted gateways (online providers) the storefront calls a separate `paymentCreate` mutation after this returns (check `order.canCreatePayment` first). Errors: `EMAIL_REQUIRED`, `SHIPPING_ADDRESS_REQUIRED`, `SHIPPING_METHOD_REQUIRED`, `PAYMENT_METHOD_REQUIRED`, `INSUFFICIENT_STOCK`, `ALREADY_COMPLETED`.
393
393
  mutation CartComplete($input: CartCompleteInput!) {
394
394
  cartComplete(input: $input) {
395
- cart {
396
- ...Cart
397
- }
398
395
  order {
399
396
  ...Order
400
397
  }
@@ -407,6 +404,18 @@ mutation CartComplete($input: CartCompleteInput!) {
407
404
  }
408
405
  }
409
406
 
407
+ # Initiates a payment session for an order created by `cartComplete` — call this when `order.canCreatePayment` is `true` (orders with an offline payment method like cash-on-delivery skip this step). `orderId` is required; `returnUrl` / `cancelUrl` are optional and, when supplied, must point to a verified domain of the shop (open-redirect protected). Branch on the returned `payment.flow`: `ONLINE_REDIRECT` → redirect to `payment.redirectUrl`, `ONLINE_EMBEDDED` → render a widget with `payment.clientSecret`, `INSTANT_DIRECT` → already settled, read `payment.status`. Public, but ownership-checked — an authenticated customer cannot pay for another customer's order. **Idempotent** — calling it again for the same order returns the existing still-valid session instead of creating a duplicate (safe to retry). Rate limit: 5 requests/minute. `userErrors[].code`: `ORDER_NOT_FOUND`, `ORDER_ALREADY_PAID`, `ORDER_NOT_PAYABLE`, `PAYMENT_PROVIDER_NOT_CONFIGURED`, `RETURN_URL_INVALID`, `INVALID_ID_FORMAT`, `PAYMENT_FAILED`.
408
+ mutation PaymentCreate($input: PaymentCreateInput!) {
409
+ paymentCreate(input: $input) {
410
+ payment {
411
+ ...PaymentSession
412
+ }
413
+ userErrors {
414
+ ...UserError
415
+ }
416
+ }
417
+ }
418
+
410
419
  # ============================================
411
420
  # Return Mutations
412
421
  # ============================================
package/operations.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "10.0.0",
2
+ "schemaVersion": "11.1.0",
3
3
  "queries": [
4
4
  {
5
5
  "name": "Shop",
@@ -1534,12 +1534,29 @@
1534
1534
  }
1535
1535
  ],
1536
1536
  "fragmentRefs": [
1537
- "Cart",
1538
1537
  "CartWarning",
1539
1538
  "Order",
1540
1539
  "UserError"
1541
1540
  ],
1542
- "body": "mutation CartComplete($input: CartCompleteInput!) {\n cartComplete(input: $input) {\n cart {\n ...Cart\n }\n order {\n ...Order\n }\n userErrors {\n ...UserError\n }\n warnings {\n ...CartWarning\n }\n }\n}"
1541
+ "body": "mutation CartComplete($input: CartCompleteInput!) {\n cartComplete(input: $input) {\n order {\n ...Order\n }\n userErrors {\n ...UserError\n }\n warnings {\n ...CartWarning\n }\n }\n}"
1542
+ },
1543
+ {
1544
+ "name": "PaymentCreate",
1545
+ "kind": "mutation",
1546
+ "section": "Cart Completion Mutations",
1547
+ "description": "Initiates a payment session for an order created by `cartComplete` — call this when `order.canCreatePayment` is `true` (orders with an offline payment method like cash-on-delivery skip this step). `orderId` is required; `returnUrl` / `cancelUrl` are optional and, when supplied, must point to a verified domain of the shop (open-redirect protected). Branch on the returned `payment.flow`: `ONLINE_REDIRECT` → redirect to `payment.redirectUrl`, `ONLINE_EMBEDDED` → render a widget with `payment.clientSecret`, `INSTANT_DIRECT` → already settled, read `payment.status`. Public, but ownership-checked — an authenticated customer cannot pay for another customer's order. **Idempotent** — calling it again for the same order returns the existing still-valid session instead of creating a duplicate (safe to retry). Rate limit: 5 requests/minute. `userErrors[].code`: `ORDER_NOT_FOUND`, `ORDER_ALREADY_PAID`, `ORDER_NOT_PAYABLE`, `PAYMENT_PROVIDER_NOT_CONFIGURED`, `RETURN_URL_INVALID`, `INVALID_ID_FORMAT`, `PAYMENT_FAILED`.",
1548
+ "variables": [
1549
+ {
1550
+ "name": "input",
1551
+ "type": "PaymentCreateInput!",
1552
+ "defaultValue": null
1553
+ }
1554
+ ],
1555
+ "fragmentRefs": [
1556
+ "PaymentSession",
1557
+ "UserError"
1558
+ ],
1559
+ "body": "mutation PaymentCreate($input: PaymentCreateInput!) {\n paymentCreate(input: $input) {\n payment {\n ...PaymentSession\n }\n userErrors {\n ...UserError\n }\n }\n}"
1543
1560
  },
1544
1561
  {
1545
1562
  "name": "ReturnCreate",
@@ -2241,6 +2258,16 @@
2241
2258
  "body": "fragment AvailablePaymentMethods on AvailablePaymentMethods {\n methods {\n ...PaymentMethod\n }\n defaultMethod {\n ...PaymentMethod\n }\n}",
2242
2259
  "onType": "AvailablePaymentMethods"
2243
2260
  },
2261
+ {
2262
+ "name": "PaymentSession",
2263
+ "kind": "fragment",
2264
+ "section": "Payment Methods",
2265
+ "description": "Initiated payment session for an order — returned by the `paymentCreate` mutation. Branch on `flow`: `ONLINE_REDIRECT` (redirect the browser to `redirectUrl`), `ONLINE_EMBEDDED` (render an in-page widget with `clientSecret`), `INSTANT_DIRECT` (settled with no UI — read `status`). `expiresAt` is ISO 8601, present when the gateway session has a TTL.",
2266
+ "variables": [],
2267
+ "fragmentRefs": [],
2268
+ "body": "fragment PaymentSession on PaymentSession {\n id\n orderId\n flow\n provider\n redirectUrl\n clientSecret\n status\n expiresAt\n}",
2269
+ "onType": "PaymentSession"
2270
+ },
2244
2271
  {
2245
2272
  "name": "ShipmentEvent",
2246
2273
  "kind": "fragment",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doswiftly/storefront-operations",
3
- "version": "10.0.0",
3
+ "version": "11.1.0",
4
4
  "description": "GraphQL operations for DoSwiftly Storefront - SSOT from backend",
5
5
  "homepage": "https://doswiftly.pl",
6
6
  "publishConfig": {
package/schema.graphql CHANGED
@@ -917,12 +917,9 @@ input CartCompleteInput {
917
917
  }
918
918
 
919
919
  """
920
- Result of completing cart — transition cart → order (per D4 NO paymentUrl)
920
+ Result of completing cart — transition cart → order (per D4 NO paymentUrl). Cart NIE w payload — po complete koszyk jest CONVERTED/locked.
921
921
  """
922
922
  type CartCompletePayload {
923
- """Cart finalised (status CONVERTED — read-only po complete)"""
924
- cart: Cart
925
-
926
923
  """
927
924
  Order created z cart. Zapewnia canCreatePayment + paymentMethodType (Phase 4 ResolveFields) dla decyzji storefront przycisku "Zapłać".
928
925
  """
@@ -2275,6 +2272,7 @@ enum DiscountApplicationType {
2275
2272
 
2276
2273
  """Error codes for discount validation"""
2277
2274
  enum DiscountErrorCode {
2275
+ CUSTOMER_GROUP_NOT_ELIGIBLE
2278
2276
  CUSTOMER_NOT_ELIGIBLE
2279
2277
  CUSTOMER_USAGE_LIMIT_REACHED
2280
2278
  DISCOUNT_COMBINATION_NOT_ALLOWED
@@ -3512,6 +3510,11 @@ type Mutation {
3512
3510
  """Redeem a loyalty reward"""
3513
3511
  loyaltyRedeemReward(input: RedeemRewardInput!): RedeemRewardPayload!
3514
3512
 
3513
+ """
3514
+ Initiate a payment session for an order — call after cartComplete when order.canCreatePayment is true
3515
+ """
3516
+ paymentCreate(input: PaymentCreateInput!): PaymentCreatePayload!
3517
+
3515
3518
  """Cancel a return request"""
3516
3519
  returnCancel(id: ID!): ReturnCancelPayload!
3517
3520
 
@@ -3720,6 +3723,41 @@ enum PageSortKeys {
3720
3723
  UPDATED_AT
3721
3724
  }
3722
3725
 
3726
+ """Input dla paymentCreate mutation"""
3727
+ input PaymentCreateInput {
3728
+ """
3729
+ URL powrotu klienta po anulowaniu płatności — musi być na zweryfikowanej domenie sklepu
3730
+ """
3731
+ cancelUrl: URL
3732
+
3733
+ """ID zamówienia (z cartComplete) do opłacenia"""
3734
+ orderId: ID!
3735
+
3736
+ """
3737
+ URL powrotu klienta po płatności — musi być na zweryfikowanej domenie sklepu
3738
+ """
3739
+ returnUrl: URL
3740
+ }
3741
+
3742
+ """Wynik paymentCreate mutation"""
3743
+ type PaymentCreatePayload {
3744
+ """Utworzona sesja płatności (null gdy userErrors)"""
3745
+ payment: PaymentSession
3746
+
3747
+ """Błędy walidacji / biznesowe"""
3748
+ userErrors: [UserError!]!
3749
+ }
3750
+
3751
+ """
3752
+ Sposób uruchomienia płatności po stronie klienta — storefront rozgałęzia krok po tej wartości
3753
+ """
3754
+ enum PaymentInitiationFlow {
3755
+ INSTANT_DIRECT
3756
+ OFFLINE_MANUAL
3757
+ ONLINE_EMBEDDED
3758
+ ONLINE_REDIRECT
3759
+ }
3760
+
3723
3761
  """Payment method available for checkout"""
3724
3762
  type PaymentMethod {
3725
3763
  """Description for customers"""
@@ -3759,6 +3797,33 @@ enum PaymentMethodType {
3759
3797
  OTHER
3760
3798
  }
3761
3799
 
3800
+ """Sesja płatności utworzona dla zamówienia"""
3801
+ type PaymentSession {
3802
+ """Token/secret do widgetu in-page — wypełniony dla flow ONLINE_EMBEDDED"""
3803
+ clientSecret: String
3804
+
3805
+ """Kiedy redirectUrl/clientSecret przestaje być ważny (ISO 8601)"""
3806
+ expiresAt: String
3807
+
3808
+ """Sposób uruchomienia — storefront robi switch(flow)"""
3809
+ flow: PaymentInitiationFlow!
3810
+
3811
+ """ID rekordu płatności"""
3812
+ id: ID!
3813
+
3814
+ """ID zamówienia"""
3815
+ orderId: ID!
3816
+
3817
+ """Kod providera płatności (np. PAYU)"""
3818
+ provider: String!
3819
+
3820
+ """URL hosted gateway — wypełniony dla flow ONLINE_REDIRECT"""
3821
+ redirectUrl: URL
3822
+
3823
+ """Status płatności zamówienia"""
3824
+ status: OrderPaymentStatus!
3825
+ }
3826
+
3762
3827
  """Shop payment configuration (currency, country, providers)"""
3763
3828
  type PaymentSettings {
3764
3829
  """Country code sklepu — driver dostępności metod płatności"""