1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
//! Request struct for the Create Payment API

use serde::Serialize;

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

/// 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: 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, PAYMENTS_WRITE_ADDITIONAL_RECIPIENTS 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>,
    /// 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 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.
    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>,
}