coingate
All checks were successful
Deploy / build-deploy (push) Successful in 3m10s

This commit is contained in:
Jorijn van der Graaf 2026-08-13 23:34:19 +02:00
commit 70668af8f5
20 changed files with 2354 additions and 1048 deletions

View file

@ -206,12 +206,13 @@ export struct Product {
std::int64_t priceInclMinor = 0;
std::vector<Variant> variants;
std::string currency = "EUR";
// Flat shipping per zone, in cents, consumer-facing (VAT-inclusive where
// VAT applies). The fallback when Sendcloud has no rate for a country —
// live carrier rates take precedence wherever they exist.
std::int64_t shipNlMinor = 0;
std::int64_t shipEuMinor = 0;
std::int64_t shipWorldMinor = 0;
// Shipping weight of ONE unit as it leaves here — device, retail box and
// outer packaging — in grams. There are no shipping prices in this record
// any more: the carrier prices by weight bracket, so this number plus the
// quantity is what selects a rate from the live Sendcloud table, and what
// decides how many units fit one parcel. A destination the carrier has no
// bracket for is refused at checkout rather than priced from a guess.
std::int64_t shipWeightGrams = 0;
// Root-relative path of the product photo, e.g. "/fp6-pmos.jpg". Served
// from our own origin like every other asset — the privacy notice's
// "everything comes from catcrafts.net" applies to product images too.
@ -291,7 +292,11 @@ export struct OrderView {
std::string colorLabel; // "Forest Green", empty for variantless products
std::int64_t quantity = 1;
std::int64_t unitMinor = 0;
std::string payUrl; // bunq.me link; empty once paid or when cancelled
std::string payUrl; // the provider's hosted checkout; empty once paid
// or when cancelled
std::string payChoice; // Form::kPayBank | Form::kPayCrypto — decides what
// the "resume payment" copy promises is waiting
// there. Anything but crypto reads as bank.
std::string createdAt; // ISO 8601, shown verbatim
std::string country;
std::int64_t goodsMinor = 0;