PluginProbe ʕ •ᴥ•ʔ
WooCommerce Square / 2.2.5
WooCommerce Square v2.2.5
5.5.0 5.4.3 5.4.2 5.4.1 5.4.0 trunk 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.6.0 2.7.0 2.8.0 2.9.0 2.9.1 3.0.0 3.0.1 3.0.2 3.0.3 3.1.0 3.2.0 3.3.0 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.7.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 4.0.0 4.1.0 4.2.0 4.2.1 4.2.2 4.2.3 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.4.2 4.5.0 4.5.1 4.5.2 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.1 4.8.2 4.8.3 4.8.4 4.8.5 4.8.6 4.8.7 4.8.8 4.9.0 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.6 4.9.7 4.9.8 4.9.9 5.0.0 5.0.1 5.1.0 5.1.1 5.1.2 5.2.0 5.3.0 5.3.1 5.3.2 5.3.3
woocommerce-square / includes / Gateway / API / Requests / Customers.php
woocommerce-square / includes / Gateway / API / Requests Last commit date
Customers.php 5 years ago Orders.php 5 years ago Payments.php 6 years ago Refunds.php 6 years ago Transactions.php 6 years ago
Customers.php
171 lines
1 <?php
2 /**
3 * WooCommerce Square
4 *
5 * This source file is subject to the GNU General Public License v3.0
6 * that is bundled with this package in the file license.txt.
7 * It is also available through the world-wide-web at this URL:
8 * http://www.gnu.org/licenses/gpl-3.0.html
9 * If you did not receive a copy of the license and are unable to
10 * obtain it through the world-wide-web, please send an email
11 * to license@woocommerce.com so we can send you a copy immediately.
12 *
13 * DISCLAIMER
14 *
15 * Do not edit or add to this file if you wish to upgrade WooCommerce Square to newer
16 * versions in the future. If you wish to customize WooCommerce Square for your
17 * needs please refer to https://docs.woocommerce.com/document/woocommerce-square/
18 *
19 * @author WooCommerce
20 * @copyright Copyright: (c) 2019, Automattic, Inc.
21 * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
22 */
23
24 namespace WooCommerce\Square\Gateway\API\Requests;
25
26 defined( 'ABSPATH' ) || exit;
27
28 use SkyVerge\WooCommerce\PluginFramework\v5_4_0 as Framework;
29 use SquareConnect\Model as SquareModel;
30 use WooCommerce\Square\API;
31
32 /**
33 * The customers API request class.
34 *
35 * @since 2.0.0
36 */
37 class Customers extends API\Requests\Customers {
38
39
40 /**
41 * Sets the data for creating a new customer.
42 *
43 * @since 2.0.0
44 *
45 * @param \WC_Order $order order object
46 */
47 public function set_create_customer_data( \WC_Order $order ) {
48
49 $this->square_api_method = 'createCustomer';
50
51 // set the customer email as the WP user email, if available
52 try {
53
54 if ( ! $order->get_user_id() ) {
55 throw new Framework\SV_WC_Plugin_Exception( 'No user account' );
56 }
57
58 $customer = new \WC_Customer( $order->get_user_id() );
59
60 $email = $customer->get_email();
61
62 } catch ( \Exception $exception ) { // otherwise, use the order billing email
63
64 $email = $order->get_billing_email();
65 }
66
67 $customer_request = new SquareModel\CreateCustomerRequest();
68 $customer_request->setGivenName( $order->get_billing_first_name() );
69 $customer_request->setFamilyName( $order->get_billing_last_name() );
70 $customer_request->setCompanyName( $order->get_billing_company() );
71 $customer_request->setEmailAddress( $email );
72 $customer_request->setPhoneNumber( $order->get_billing_phone() );
73
74 if ( $order->get_user_id() ) {
75 $customer_request->setReferenceId( (string) $order->get_user_id() );
76 }
77
78 $customer_request->setAddress( $this->get_address_from_order( $order ) );
79
80 $this->square_request = $customer_request;
81
82 $this->square_api_args = array(
83 $this->square_request,
84 );
85 }
86
87
88 /**
89 * Sets the data for creating a new customer card.
90 *
91 * @since 2.0.0
92 *
93 * @param \WC_Order $order order object
94 */
95 public function set_create_card_data( \WC_Order $order ) {
96
97 $this->square_api_method = 'createCustomerCard';
98
99 $request = new SquareModel\CreateCustomerCardRequest();
100
101 $request->setCardNonce( $order->payment->nonce );
102 $request->setBillingAddress( $this->get_address_from_order( $order ) );
103 $request->setCardholderName( $order->get_formatted_billing_full_name() );
104
105 // 3DS / SCA verification token (from JS)
106 if ( ! empty( $order->payment->verification_token ) ) {
107 $request->setVerificationToken( $order->payment->verification_token );
108 }
109
110 $this->square_request = $request;
111
112 $this->square_api_args = array(
113 $order->customer_id,
114 $this->square_request,
115 );
116 }
117
118
119 /**
120 * Sets the data for deleting an existing card.
121 *
122 * @since 2.0.0
123 *
124 * @param string $customer_id Square customer ID
125 * @param string $card_id Square card ID
126 */
127 public function set_delete_card_data( $customer_id, $card_id ) {
128
129 $this->square_api_method = 'deleteCustomerCard';
130
131 $this->square_api_args = array(
132 $customer_id,
133 $card_id,
134 );
135 }
136
137
138 /**
139 * Gets a billing address model from a WC order.
140 *
141 * @since 2.0.0
142 *
143 * @param \WC_Order $order order object
144 * @return SquareModel\Address
145 */
146 protected function get_address_from_order( \WC_Order $order ) {
147
148 $address = new SquareModel\Address();
149 $address->setFirstName( $order->get_billing_first_name() );
150 $address->setLastName( $order->get_billing_last_name() );
151 $address->setOrganization( $order->get_billing_company() );
152 $address->setAddressLine1( $order->get_billing_address_1() );
153 $address->setAddressLine2( $order->get_billing_address_2() );
154 $address->setLocality( $order->get_billing_city() );
155 $address->setAdministrativeDistrictLevel1( $order->get_billing_state() );
156 if ( ! empty( $order->payment->postcode ) ) {
157 $address->setPostalCode( $order->payment->postcode );
158 } else {
159 $address->setPostalCode( $order->get_billing_postcode() );
160 }
161
162 if ( $order->get_billing_country() ) {
163 $address->setCountry( $order->get_billing_country() );
164 }
165
166 return $address;
167 }
168
169
170 }
171