export type StoreId = string; export type CardInfo = {paymentNetwork: 'MASTERCARD' | 'MASTERCARD_MAESTRO' | 'VISA' | 'AMEX' | 'DINERS' | 'ELO' | 'HIPERCARD' | 'BANRICOMPRAS' | 'NUGO' | 'GOODCARD' | 'ELO_MAIS' | 'GREENCARD' | 'VEROCARD' | 'COOPER' | 'NUTRICARD' | 'VR' | 'SODEXO' | 'OTHER', type: 'CREDIT' | 'DEBIT' | 'VOUCHER' | 'OTHER'} | null; export type RecordProviderType = 'ALLINPAY' | 'CHECKOUT' | 'CSS' | 'MERCADO_PAGO' | 'OLIVENETWORKS' | 'SHOUQIANBA' | 'STRIPE' | 'UNIONPAY' | 'VAN_DAOU' | 'VAN_JTNET' | 'VAN_KICC' | 'VAN_KIS' | 'VAN_KOVAN' | 'VAN_KSNET' | 'VAN_NICE' | 'VAN_SMARTRO' | 'UNKNOWN'; export type RecordPaymentType = 'ACH_CREDIT' | 'ACH_DEBIT' | 'ACSS_DEBIT' | 'ALIPAY_MINIAPP' | 'ALI_PAY' | 'BACS_DEBIT' | 'BANK_TRANSFER' | 'BECS_DEBIT' | 'BOLETO' | 'CARD' | 'CARD_PRESENT' | 'CASH' | 'CHECK' | 'CHECKOUT_SESSION' | 'ETC' | 'EXTERNAL_CASH_BALANCE' | 'GIFT_CARD' | 'INTERNAL_CASH_BALANCE' | 'KAKAO_PAY' | 'LIABILITY_BALANCE' | 'LINKED_BANK_ACCOUNT' | 'NAVER_PAY' | 'PIX' | 'QRCODE' | 'QRCODE_ALIPAY' | 'QRCODE_WECHAT' | 'SEPA_DEBIT' | 'SPEI_BANK_TRANSFER' | 'WALLET' | 'WECHAT_PAY' | 'UNKNOWN'; export type CardBrandType = 'UNKNOWN' | 'AMEX' | 'DINERS_CLUB' | 'DISCOVER' | 'JCB' | 'MASTERCARD' | 'UNION_PAY' | 'VISA' | 'GIROCARD' | 'EFTPOS_AU' | 'INTERAC'; export type CardFundingType = 'UNKNOWN' | 'CREDIT' | 'DEBIT' | 'PREPAID'; export type CardWalletType = 'UNKNOWN' | 'APPLE_PAY' | 'GOOGLE_PAY'; export type PaymentDetailsCard = {brandType?: CardBrandType | undefined, expiration?: ({year?: number | undefined, month?: number | undefined}) | undefined, fundingType?: CardFundingType | undefined, walletType?: CardWalletType | undefined, lastFour?: string | undefined, walletLastFour?: string | undefined, authorizationCode?: string | undefined, applicationPreferredName?: string | undefined, fingerprint?: string | undefined, readMethod?: string | undefined}; export type MandateStatus = 'ACTIVE' | 'INACTIVE' | 'PENDING'; export type PaymentDetailsBacs = {mandateStatus?: MandateStatus | undefined, lastFour?: string | undefined, sortCode?: string | undefined, mandateId?: string | undefined, reference?: string | undefined, url?: string | undefined}; export type PaymentDetailsAcss = {mandateStatus?: MandateStatus | undefined, acceptedAt?: string | undefined, lastFour?: string | undefined, transitNumber?: string | undefined, institutionNumber?: string | undefined, bankName?: string | undefined, mandateId?: string | undefined, transactionType?: string | undefined, intervalDescription?: string | undefined}; export type PaymentDetailsBecs = {mandateStatus?: MandateStatus | undefined, lastFour?: string | undefined, bsbNumber?: string | undefined, mandateId?: string | undefined, url?: string | undefined}; export type PaymentDetailsSepa = {mandateStatus?: MandateStatus | undefined, lastFour?: string | undefined, branchCode?: string | undefined, bankCode?: string | undefined, countryCode?: string | undefined, mandateId?: string | undefined, reference?: string | undefined, url?: string | undefined}; export type AccountHolderType = 'INDIVIDUAL' | 'COMPANY'; export type AccountType = 'CHECKING' | 'SAVINGS'; export type PaymentDetailsAch = {accountHolderType?: AccountHolderType | undefined, accountType?: AccountType | undefined, mandateStatus?: MandateStatus | undefined, lastFour?: string | undefined, routingNumber?: string | undefined, bankName?: string | undefined, mandateId?: string | undefined}; export type PaymentRecord = {otterPaymentRecordId?: string | undefined, recordProviderType?: RecordProviderType | undefined, recordPaymentType?: RecordPaymentType | undefined, paymentRecordId?: string | undefined, payerId?: string | undefined, balanceTransactionId?: string | undefined, paymentDetails?: (PaymentDetailsCard | PaymentDetailsBacs | PaymentDetailsAcss | PaymentDetailsBecs | PaymentDetailsSepa | PaymentDetailsAch) | undefined}; export type LoyaltyInfo = {hasMembershipPass?: boolean | undefined} | null; export type CustomerPayment = {value: number, processingStatus: 'COLLECTABLE' | 'PROCESSED', paymentMethod: 'CASH' | 'CARD' | 'UNKNOWN' | 'OTHER' | 'CHEQUE' | 'GIFT_CARD', paymentAuthorizer?: ('AMEX' | 'APPLE_PAY_AMEX' | 'APPLE_PAY_MASTERCARD' | 'APPLE_PAY_VISA' | 'BANRICOMPRAS' | 'BANRICOMPRAS_DEBIT' | 'CARNET' | 'CHEF_CARD' | 'DEBIT' | 'DINERS' | 'DISCOVER' | 'ELO' | 'ELO_DEBIT' | 'GER_CC_CREDITO' | 'GOODCARD' | 'GOOGLE_PAY_ELO' | 'GOOGLE_PAY_MASTERCARD' | 'GOOGLE_PAY_VISA' | 'HIPERCARD' | 'IFOOD_CORP' | 'LOOP_CLUB' | 'MASTERCARD' | 'MASTERCARD_DEBIT' | 'MASTERCARD_MAESTRO' | 'MOVILE_PAY' | 'MOVILE_PAY_AMEX' | 'MOVILE_PAY_DINERS' | 'MOVILE_PAY_ELO' | 'MOVILE_PAY_HIPERCARD' | 'MOVILE_PAY_MASTERCARD' | 'MOVILE_PAY_VISA' | 'NUGO' | 'NUTRICARD_REFEICAO_E_ALIMENTACAO' | 'OTHER_TYPE' | 'PAYPAL' | 'PIX' | 'PSE' | 'QR_CODE' | 'RAPPI_PAY' | 'TERMINAL_BANCARIA' | 'UNKNOWN_TYPE' | 'VALE_ALELO' | 'VALE_BEN_VIS' | 'VALE_COOPER_CARD' | 'VALE_GREEN_CARD_CARD' | 'VALE_GREEN_CARD_PAPEL' | 'VALE_REFEISUL' | 'VALE_SODEXO' | 'VALE_TICKET_RESTAURANTE' | 'VALE_VEROCARD' | 'VALE_VR_SMART' | 'VERDECARD' | 'VISA' | 'VISA_DEBIT' | 'VISA_ELECTORN' | null) | undefined, cardInfo?: CardInfo | undefined, externalPaymentType?: (string | null) | undefined, paymentRecords?: (Array | null) | undefined, loyaltyInfo?: LoyaltyInfo | undefined}; export type OrderTotal = {subtotal: number, claimedSubtotal?: (number | null) | undefined, discount?: (number | null) | undefined, tax?: (number | null) | undefined, tip?: (number | null) | undefined, deliveryFee?: (number | null) | undefined, total?: (number | null) | undefined, couponCode?: (string | null) | undefined}; export type SimpleFinanceLine = {subType: 'VALUE' | 'TAX' | 'VALUE_WITH_TAX' | 'VAT', name: string, value: number}; export type CompositeFinanceLine = {breakdown: Array}; export type FinancialData = {foodSales: CompositeFinanceLine, feeForRestaurantProvidedDelivery?: (CompositeFinanceLine | null) | undefined, restaurantFundedDiscount?: (CompositeFinanceLine | null) | undefined, voucherDiscount?: (CompositeFinanceLine | null) | undefined, promotionDiscount?: (CompositeFinanceLine | null) | undefined, operatorDiscount?: (CompositeFinanceLine | null) | undefined, loyaltyDiscount?: (CompositeFinanceLine | null) | undefined, tipForRestaurant?: (CompositeFinanceLine | null) | undefined, adjustments?: (CompositeFinanceLine | null) | undefined, packingFee?: (CompositeFinanceLine | null) | undefined, bagFee?: (CompositeFinanceLine | null) | undefined, serviceProviderDiscount?: (CompositeFinanceLine | null) | undefined, tipForServiceProviderCourier?: (CompositeFinanceLine | null) | undefined, feeForServiceProviderDelivery?: (CompositeFinanceLine | null) | undefined, smallOrderFee?: (CompositeFinanceLine | null) | undefined, serviceFee?: (CompositeFinanceLine | null) | undefined, otherFee?: (CompositeFinanceLine | null) | undefined, netPayout?: (CompositeFinanceLine | null) | undefined, couponCodes?: (Array | null) | undefined}; export type CustomerPaymentV2 = {customerPaymentDue?: (number | null) | undefined, customerPrepayment?: (number | null) | undefined, customerAmountToReturn?: (number | null) | undefined, paymentDueToRestaurant?: (number | null) | undefined} | null; export type Payout = {payoutFromServiceProvider?: (number | null) | undefined, payoutFrom3rdParty?: (number | null) | undefined, cashPayout?: (number | null) | undefined} | null; export type ServiceProviderCharge = {commission?: CompositeFinanceLine | undefined, processingFee?: CompositeFinanceLine | undefined, salesTaxWithheld?: CompositeFinanceLine | undefined, deliveryFeeForRestaurant?: CompositeFinanceLine | undefined, advertisingFee?: CompositeFinanceLine | undefined, chargesAdjustments?: CompositeFinanceLine | undefined, otherFees?: CompositeFinanceLine | undefined} | null; export type OrderTotalV2 = {customerTotal: FinancialData, customerPayment?: (CustomerPaymentV2 | null) | undefined, payout?: (Payout | null) | undefined, serviceProviderCharge?: (ServiceProviderCharge | null) | undefined} | null; export type OrderCustomerPaymentUpdateRequest = {currencyCode: string, customerPayment: Array, orderTotal?: OrderTotal | undefined, orderTotalsV2?: OrderTotalV2 | undefined}; export type UpdateApiV1OrdersOrderIdPaymentsArgs = {'X-Store-Id': StoreId, orderId: string, body: OrderCustomerPaymentUpdateRequest}; export type UpdateApiV1OrdersOrderIdPaymentsOptions = {baseUrl?: string | undefined, OAuth20?: string | undefined, fetch?: typeof fetch | undefined}; /** * Update order customer payment * * PUT /v1/orders/{orderId}/payments */ export const updateApiV1OrdersOrderIdPayments = async (args: UpdateApiV1OrdersOrderIdPaymentsArgs, options?: UpdateApiV1OrdersOrderIdPaymentsOptions) => { const {baseUrl = "https://partners.tryotter.com", fetch: fetchFn = fetch, OAuth20} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") if (args['X-Store-Id'] != null) headers.set("X-Store-Id", String(args['X-Store-Id'])) if (OAuth20 !== undefined) headers.set('authorization', `Bearer ${OAuth20}`) const url = `${baseUrl.replace(/\/+$/, '')}/v1/orders/${encodeURIComponent(String(args.orderId))}/payments${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "PUT", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return undefined };