Commit Graph

3852 Commits

Author SHA1 Message Date
David Bomba
7415813589 minor updates for dependencies 2026-06-07 15:00:25 +10:00
David Bomba
f15ea7dab6 updated dependencies 2026-06-03 10:00:15 +10:00
David Bomba
a24286ac51 Merge branch 'v5-develop' into v5-develop
Signed-off-by: David Bomba <turbo124@gmail.com>
2026-05-27 07:56:13 +10:00
David Bomba
8bb5e37961 Updated package.json 2026-05-25 18:36:27 +10:00
David Bomba
808adb825a Roll back report generation for payments for fr 2026-05-25 18:18:35 +10:00
hillelcoren
c51956544a Admin Portal - Selfhosted 2026-05-14 04:54:34 +00:00
hillelcoren
2e8b703ae6 Admin Portal - Profile 2026-05-14 04:47:39 +00:00
hillelcoren
187d2570c8 Admin Portal - Hosted 2026-05-14 04:40:40 +00:00
David Bomba
1d75567800 Merge branch 'v5-develop' into v5-develop
Signed-off-by: David Bomba <turbo124@gmail.com>
2026-05-13 09:26:36 +10:00
David Bomba
0543995a35 Updates for statements - use current invoice footer rather than first invitations footer 2026-05-13 09:23:21 +10:00
payware
826e85bfd2 Merge branch 'v5-develop' of github.com:invoiceninja/invoiceninja into feature/payware-payment-gateway
Resolve conflict in database/seeders/PaymentLibrariesSeeder.php: upstream
hid LawPay (gateway id 66) while this branch added payware MOBILE_PAYMENT
(gateway id 67) on the same visible-gateways line. Drop 66, keep 67.
2026-05-08 16:56:03 +03:00
David Bomba
8e7f96b5fb Merge pull request #11944 from turbo124/v5-develop
v5.13.22
2026-05-08 12:50:53 +10:00
David Bomba
ad5da1fcf3 Improvements for client portal checkbox selection 2026-05-08 12:40:24 +10:00
hillelcoren
697d827a19 Admin Portal - Selfhosted 2026-05-05 10:48:56 +00:00
hillelcoren
1bd64aeeab Admin Portal - Profile 2026-05-05 10:41:48 +00:00
hillelcoren
8cae355be4 Admin Portal - Hosted 2026-05-05 10:34:42 +00:00
hillelcoren
0936aab804 Admin Portal - Selfhosted 2026-05-05 10:16:32 +00:00
hillelcoren
c6bcb9d987 Admin Portal - Profile 2026-05-05 10:09:30 +00:00
hillelcoren
625f6730df Admin Portal - Hosted 2026-05-05 10:02:14 +00:00
hillelcoren
963a57245f Admin Portal - Selfhosted 2026-05-05 09:37:55 +00:00
hillelcoren
cfb01b4793 Admin Portal - Profile 2026-05-05 09:31:57 +00:00
hillelcoren
946e0a67a6 Admin Portal - Hosted 2026-05-05 09:25:48 +00:00
hillelcoren
ec4b29f2a1 Admin Portal - Selfhosted 2026-05-05 09:13:31 +00:00
hillelcoren
17a1f559c8 Admin Portal - Profile 2026-05-05 09:06:49 +00:00
hillelcoren
5a930f42fb Admin Portal - Hosted 2026-05-05 09:00:10 +00:00
hillelcoren
39b64b2af7 Admin Portal - Selfhosted 2026-05-04 12:50:53 +00:00
hillelcoren
90e1b70620 Admin Portal - Profile 2026-05-04 12:43:52 +00:00
hillelcoren
4aa7af009b Admin Portal - Hosted 2026-05-04 12:36:52 +00:00
David Bomba
e195db6c94 Merge pull request #11924 from turbo124/v5-develop
V5 develop
2026-05-02 10:12:17 +10:00
David Bomba
307e661a6c Minor styling fixes for stripe ach list 2026-05-02 09:11:57 +10:00
payware
af86b398ec Address review feedback and comprehensive driver audit
Webhook integrity (security hardening alignment with server-side updates):
- Verify body via SHA-256 hash carried in JWT contentSha256 header. The
  driver was looking up contentMd5 against an md5() hash; the server now
  emits SHA-256 per recent server-side hardening, so the prior check was
  silently a no-op. Fail-closed if the header is absent.
- Tighten iat freshness to asymmetric +60s/-300s (was symmetric 300s,
  allowed future-dated tokens).
- Reject empty transactionId webhooks early (was defaulting to '' and
  would have poisoned the new dedup query).
- Filter on callbackType == TRANSACTION_FINALIZED so PROCESSED callbacks
  no longer overwrite local status mid-flight.

Idempotency (PR review item 1):
- Check existing Payment by transaction_reference + company_id before
  createPayment in the CONFIRMED branch. Prevents duplicate Payment rows
  when payware retries up to 15 times on slow IN responses.

Status enum:
- Drop local 'PENDING' string in favour of server's 'ACTIVE'. Aligns the
  polling, frontend, and webhook handler on one set of names
  (ACTIVE / CONFIRMED / DECLINED / FAILED / CANCELLED / EXPIRED).

Browser compatibility (PR review item 2 plus broader audit):
- Pass event explicitly to copy handler. Was relying on deprecated
  window.event, which is undefined in Firefox inside a Promise.then -
  the copy feedback was already silently broken there.
- Feature-detect navigator.clipboard + isSecureContext, fall back to
  document.execCommand('copy') for plain-HTTP self-hosters.
- Vendor qrcode.js into public/vendor/qrcodejs/ instead of loading from
  cdnjs (no SRI, no fallback, blocked under strict CSP). Added an
  onerror fallback that displays the payware:// URL as text.
- Drift-free countdown via Date.now() instead of a 1s setInterval that
  browsers throttle in background tabs.
- Chained setTimeout polling with AbortController instead of overlapping
  setInterval(fetch, 3000). Cancels in-flight fetches on beforeunload.
- 'No compatible app installed' helper text under the mobile pay button.
- Inline English fallback strings replaced with ctrans keys.

Confirmation flow:
- On CONFIRMED, JS now submits #server-response so paymentResponse is
  the live confirmation handler that performs the redirect (matches
  btcpay/razorpay livewire pattern). Removes the dead AJAX-poll branch
  and closes the gap where the redirect URL was client-controlled.

Currency precision:
- PaywareApi::createTransaction accepts currencyPrecision; driver pulls
  from client->currency()->precision. JPY (0 decimals) and BHD/KWD
  (3 decimals) now serialize correctly.

Login circuit breaker:
- 60s cooldown after a failed /vpos/login. Caps cascading attempts
  against payware's 5-strike vPOS lockout when credentials are
  misconfigured (without it, 5 customer page loads can lock out the
  merchant's vPOS for 15 minutes across all channels).

New 'Mobile Payment' payment type (id 53):
- Generic payment_type for mobile-initiated A2A payments. Mirrors the
  existing GatewayType::MOBILE_PAYMENT (id 30) and follows the
  precedent of MOLLIE_BANK_TRANSFER (34) and STRIPE_BANK_TRANSFER (50).
  Migration extended to seed the row idempotently. Driver now stamps
  payments with this type instead of INSTANT_BANK_PAY (which is
  GoCardless's brand for their A2A flow). Companion change for the
  React side will follow in invoiceninja/ui.

Translations:
- New keys (payment_was_not_completed, no_compatible_app_installed,
  payment_type_Mobile Payment) added to lang/en/texts.php as the source
  of truth, plus lang/bg/texts.php for completeness. Other locales fall
  back to en until community translators sync.

Modified files:
- app/Models/PaymentType.php
- app/PaymentDrivers/Payware/BankTransfer.php
- app/PaymentDrivers/Payware/PaywareApi.php
- app/PaymentDrivers/PaywarePaymentDriver.php
- database/migrations/2026_02_15_000000_add_payware_gateway.php
- lang/bg/texts.php
- lang/en/texts.php
- resources/views/portal/ninja2020/gateways/payware/pay_livewire.blade.php

New file:
- public/vendor/qrcodejs/qrcode.min.js (MIT, qrcodejs 1.0.0)
2026-04-27 16:59:51 +03:00
Vladimir
d83f1740a5 Merge v5-stable into feature/payware-payment-gateway
Resolve conflicts with upstream LawPay gateway (merged 2026-03-30):
- payware gateway ID: 66 -> 67 (LawPay took 66)
- SystemLog::TYPE_PAYWARE: 328 -> 329 (LawPay took 328)
- Merge Bulgarian translations, keeping upstream's work plus payware keys
2026-04-23 14:44:51 +03:00
hillelcoren
77724992db Admin Portal - Selfhosted 2026-04-19 05:33:52 +00:00
hillelcoren
1a80969018 Admin Portal - Profile 2026-04-19 05:26:58 +00:00
hillelcoren
71b167b799 Admin Portal - Hosted 2026-04-19 05:20:07 +00:00
hillelcoren
34b0b27eb2 Admin Portal - Selfhosted 2026-04-15 13:01:13 +00:00
hillelcoren
0e850f70e5 Admin Portal - Profile 2026-04-15 12:54:36 +00:00
hillelcoren
82e9adbe54 Admin Portal - Hosted 2026-04-15 12:47:40 +00:00
David Bomba
811099ebeb Updated dependencies 2026-04-15 11:24:34 +10:00
David Bomba
69226bb8d4 Updated dependencies 2026-03-27 08:35:56 +11:00
David Bomba
ad92776700 v5.13.8 2026-03-26 20:40:35 +11:00
David Bomba
fb1fb32b4b Updated dependencies 2026-03-26 16:53:26 +11:00
David Bomba
2df9e25eeb Remove redundant illuminate methods 2026-03-24 12:47:52 +11:00
Vladimir
4379864d97 Add payware certified badge to payment method selection and payment page
- Show payware certified badge on the right side of payment method buttons
- Replace footer certified text with badge positioned top-right of payment details
- Use consistent font styling for transaction ID
2026-03-23 13:00:23 +02:00
David Bomba
17144cacbb Updated dependencies 2026-03-18 14:43:37 +11:00
David Bomba
ec3ec5c25e Checkout.com Flow 2026-03-18 14:34:19 +11:00
David Bomba
1096bb3839 Checkout FLOW 2026-03-18 09:48:46 +11:00
David Bomba
5bad912a1f Improvements for square payments 2026-03-13 12:29:08 +11:00
David Bomba
7cba8c3f2b Improvements for square payments 2026-03-13 12:13:14 +11:00
David Bomba
c3390a4c54 Updated sepa js dependency 2026-03-12 10:49:49 +11:00