squareup 2.13.0

Rust SDK for the Square Developer API
Documentation
//! Request struct for the Create Payment API

use crate::models::enums::DelayAction;
use serde::Serialize;

use super::{
    Address, CashPaymentDetails, CustomerDetails, ExternalPaymentDetails, Money,
    OfflinePaymentDetails,
};

/// This is a model class for CreatePaymentRequest type.
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize)]
pub struct CreatePaymentRequest {
    /// The ID for the source of funds for this payment. This can be a payment token (card nonce)
    /// generated by the Square payment form or a card on file made with the Customers API. If
    /// recording a payment that the seller received outside of Square, specify either "CASH" or
    /// "EXTERNAL". For more information, see [Take
    /// Payments](https://developer.squareup.com/docs/payments-api/take-payments).
    pub source_id: String,
    /// A unique string that identifies this `CreatePayment` request. Keys can be any valid string
    /// but must be unique for every `CreatePayment` request.
    ///
    /// Note: The number of allowed characters might be less than the stated maximum, if multi-byte
    /// characters are used.
    ///
    /// For more information, see
    /// [Idempotency](https://developer.squareup.com/docs/working-with-apis/idempotency).
    pub idempotency_key: String,
    /// The amount of money to accept for this payment, not including `tip_money`.
    ///
    /// The amount must be specified in the smallest denomination of the applicable currency (for
    /// example, US dollar amounts are specified in cents). For more information, see [Working with
    /// Monetary Amounts](https://developer.squareup.com/docs/build-basics/working-with-monetary-amounts).
    ///
    /// The currency code must match the currency associated with the business that is accepting the
    /// payment.
    pub amount_money: Option<Money>,
    /// The amount designated as a tip, in addition to `amount_money`.
    ///
    /// The amount must be specified in the smallest denomination of the applicable currency (for
    /// example, US dollar amounts are specified in cents). For more information, see [Working with
    /// Monetary Amounts](https://developer.squareup.com/docs/build-basics/working-with-monetary-amounts).
    ///
    /// The currency code must match the currency associated with the business that is accepting the payment.
    pub tip_money: Option<Money>,
    /// The amount of money that the developer is taking as a fee for facilitating the payment on
    /// behalf of the seller.
    ///
    /// The amount cannot be more than 90% of the total amount of the payment.
    ///
    /// The amount must be specified in the smallest denomination of the applicable currency (for
    /// example, US dollar amounts are specified in cents). For more information, see [Working with
    /// Monetary Amounts](https://developer.squareup.com/docs/build-basics/working-with-monetary-amounts).
    ///
    /// The fee currency code must match the currency associated with the seller that is accepting
    /// the payment. The application must be from a developer account in the same country and using
    /// the same currency code as the seller.
    ///
    /// For more information about the application fee scenario, see [Take Payments and Collect
    /// Fees](https://developer.squareup.com/docs/payments-api/take-payments-and-collect-fees).
    ///
    /// To set this field, PaymentsWriteAdditionalRecipients OAuth permission is required. For
    /// more information, see
    /// [Permissions](https://developer.squareup.com/docs/payments-api/take-payments-and-collect-fees#permissions).
    pub app_fee_money: Option<Money>,
    /// The duration of time after the payment's creation when Square automatically cancels the
    /// payment. This automatic cancellation applies only to payments that do not reach a terminal
    /// state (COMPLETED, CANCELED, or FAILED) before the `delay_duration` time period.
    ///
    /// This parameter should be specified as a time duration, in RFC 3339 format, with a minimum
    /// value of 1 minute.
    ///
    /// Note: This feature is only supported for card payments. This parameter can only be set for a
    /// delayed capture payment (`autocomplete=false`).
    ///
    /// Default:
    /// * Card-present payments: "PT36H" (36 hours) from the creation time.
    /// * Card-not-present payments: "P7D" (7 days) from the creation time.
    ///
    /// Example for 2 days, 12 hours, 30 minutes, and 15 seconds: P2DT12H30M15S
    pub delay_duration: Option<String>,
    /// The action to be applied to the payment when the delay_duration has elapsed. The action must be
    /// CANCEL or COMPLETE. For more information, see Time Threshold
    /// Default: CANCEL
    pub delay_action: Option<DelayAction>,
    /// If set to `true`, this payment will be completed when possible. If set to `false`, this
    /// payment is held in an approved state until either explicitly completed (captured) or
    /// canceled (voided). For more information, see [Delayed
    /// capture](https://developer.squareup.com/docs/payments-api/take-payments/card-payments#delayed-capture-of-a-card-payment).
    ///
    /// Default: true
    pub autocomplete: Option<bool>,
    /// Associates a previously created order with this payment.
    pub order_id: Option<String>,
    /// The [Customer] ID of the customer associated with the payment.
    ///
    /// This is required if the `source_id` refers to a card on file created using the Customers
    /// API.
    pub customer_id: Option<String>,
    /// The location ID to associate with the payment. If not specified, the default location is
    /// used.
    pub location_id: Option<String>,
    /// An optional [TeamMember] ID to associate with this payment.
    pub team_member_id: Option<String>,
    /// A user-defined ID to associate with the payment.
    ///
    /// You can use this field to associate the payment to an entity in an external system (for
    /// example, you might specify an order ID that is generated by a third-party shopping cart).
    pub reference_id: Option<String>,
    /// An identifying token generated by
    /// [payments.verifyBuyer()](https://developer.squareup.com/reference/sdks/web/payments/objects/Payments#Payments.verifyBuyer).
    /// Verification tokens encapsulate customer device information and 3-D Secure challenge results
    /// to indicate that Square has verified the buyer identity.
    ///
    /// For more information, see [SCA Overview](https://developer.squareup.com/docs/sca-overview).
    pub verification_token: Option<String>,
    /// If set to `true` and charging a Square Gift Card, a payment might be returned with
    /// `amount_money` equal to less than what was requested. For example, a request for $20 when
    /// charging a Square Gift Card with a balance of $5 results in an APPROVED payment of $5. You
    /// might choose to prompt the buyer for an additional payment to cover the remainder or cancel
    /// the Gift Card payment. This field cannot be `true` when `autocomplete = true`.
    ///
    /// For more information, see [Partial amount with Square Gift
    /// Cards](https://developer.squareup.com/docs/payments-api/take-payments#partial-payment-gift-card).
    ///
    /// Default: false
    pub accept_partial_authorization: Option<bool>,
    /// The buyer's email address.
    pub buyer_email_address: Option<String>,
    /// The buyer's phone number. Must follow the following format:
    ///   1. A leading + symbol (followed by a country code)
    ///   2. The phone number can contain spaces and the special characters ( , ) , - , and
    ///      Alphabetical characters aren't allowed.
    ///   3. The phone number must contain between 9 and 16 digits.
    pub buyer_phone_number: Option<String>,
    /// The buyer's billing address.
    pub billing_address: Option<Address>,
    /// The buyer's shipping address.
    pub shipping_address: Option<Address>,
    /// An optional note to be entered by the developer when creating a payment.
    /// Max Length 500
    pub note: Option<String>,
    /// Optional additional payment information to include on the customer's card statement as part
    /// of the statement description. This can be, for example, an invoice number, ticket number, or
    /// short description that uniquely identifies the purchase.
    ///
    /// Note that the `statement_description_identifier` might get truncated on the statement
    /// description to fit the required information including the Square identifier (SQ *) and name
    /// of the seller taking the payment.
    pub statement_description_identifier: Option<String>,
    /// Additional details required when recording a cash payment (`source_id` is CASH).
    pub cash_details: Option<CashPaymentDetails>,
    /// Additional details required when recording an external payment (`source_id` is EXTERNAL).
    pub external_details: Option<ExternalPaymentDetails>,
    /// Details about the customer making the payment.
    pub customer_details: Option<CustomerDetails>,
    /// An optional field for specifying the offline payment details. This is intended for internal
    /// 1st-party callers only.
    pub offline_payment_details: Option<OfflinePaymentDetails>,
}