PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.6.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.6.1
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Models / Checkout.php
surecart / app / src / Models Last commit date
Traits 3 years ago AbandonedCheckout.php 3 years ago AbandonedCheckoutProtocol.php 3 years ago Account.php 3 years ago AccountPortalSession.php 3 years ago Activation.php 3 years ago ApiToken.php 3 years ago BalanceTransaction.php 3 years ago Brand.php 3 years ago Bump.php 3 years ago BuyLink.php 3 years ago CancellationAct.php 3 years ago CancellationReason.php 3 years ago Charge.php 3 years ago Checkout.php 3 years ago Collection.php 3 years ago Component.php 3 years ago Coupon.php 3 years ago Customer.php 3 years ago CustomerLink.php 3 years ago CustomerNotificationProtocol.php 3 years ago DatabaseModel.php 2 years ago Download.php 3 years ago Event.php 3 years ago Form.php 3 years ago Fulfillment.php 3 years ago FulfillmentItem.php 3 years ago IncomingWebhook.php 2 years ago Integration.php 3 years ago Invoice.php 3 years ago License.php 3 years ago LineItem.php 3 years ago ManualPaymentMethod.php 3 years ago Media.php 3 years ago Model.php 3 years ago ModelInterface.php 3 years ago Order.php 3 years ago OrderProtocol.php 3 years ago PaymentIntent.php 3 years ago PaymentMethod.php 3 years ago Period.php 3 years ago PortalProtocol.php 3 years ago PortalSession.php 3 years ago Price.php 3 years ago Processor.php 3 years ago Product.php 3 years ago ProductGroup.php 3 years ago ProductMedia.php 3 years ago Promotion.php 3 years ago ProvisionalAccount.php 3 years ago Purchase.php 3 years ago Refund.php 3 years ago RegisteredWebhook.php 2 years ago ShippingMethod.php 3 years ago ShippingProfile.php 3 years ago ShippingProtocol.php 3 years ago ShippingRate.php 3 years ago ShippingZone.php 3 years ago Statistic.php 3 years ago Subscription.php 2 years ago SubscriptionProtocol.php 3 years ago TaxProtocol.php 3 years ago TaxRegistration.php 3 years ago TaxZone.php 3 years ago Upload.php 3 years ago User.php 3 years ago VerificationCode.php 3 years ago Webhook.php 2 years ago WebhookRegistration.php 2 years ago
Checkout.php
164 lines
1 <?php
2
3 namespace SureCart\Models;
4
5 use SureCart\Models\Traits\HasCustomer;
6 use SureCart\Models\Traits\HasSubscriptions;
7 use SureCart\Models\LineItem;
8 use SureCart\Models\Traits\CanFinalize;
9 use SureCart\Models\Traits\HasDiscount;
10 use SureCart\Models\Traits\HasPaymentIntent;
11 use SureCart\Models\Traits\HasPaymentMethod;
12 use SureCart\Models\Traits\HasProcessorType;
13 use SureCart\Models\Traits\HasPurchases;
14 use SureCart\Models\Traits\HasShippingAddress;
15
16 /**
17 * Order model
18 */
19 class Checkout extends Model {
20 use HasCustomer,
21 HasSubscriptions,
22 HasDiscount,
23 HasShippingAddress,
24 HasPaymentIntent,
25 HasPaymentMethod,
26 HasPurchases,
27 CanFinalize,
28 HasProcessorType;
29
30 /**
31 * Rest API endpoint
32 *
33 * @var string
34 */
35 protected $endpoint = 'checkouts';
36
37 /**
38 * Object name
39 *
40 * @var string
41 */
42 protected $object_name = 'checkout';
43
44 /**
45 * Need to pass the processor type on create
46 *
47 * @param array $attributes Optional attributes.
48 * @param string $type stripe, paypal, etc.
49 */
50 public function __construct( $attributes = [], $type = '' ) {
51 $this->processor_type = $type;
52 parent::__construct( $attributes );
53 }
54
55 /**
56 * Create a new model
57 *
58 * @param array $attributes Attributes to create.
59 *
60 * @return $this|\WP_Error|false
61 */
62 protected function create( $attributes = [] ) {
63 $this->setAttribute( 'ip_address', $this->getIPAddress() );
64 return parent::create( $attributes );
65 }
66
67 /**
68 * Get the IP address of the user
69 *
70 * TOD0: Move this to a helper class.
71 *
72 * @return string
73 */
74 protected function getIPAddress() {
75 return $_SERVER['HTTP_CLIENT_IP'] ?? $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '';
76 }
77
78 /**
79 * Set the product attribute
80 *
81 * @param object $value Product properties.
82 * @return void
83 */
84 public function setLineItemsAttribute( $value ) {
85 $this->setCollection( 'line_items', $value, LineItem::class );
86 }
87
88 /**
89 * Finalize the session for checkout.
90 *
91 * @return $this|\WP_Error
92 */
93 protected function manuallyPay() {
94 if ( $this->fireModelEvent( 'manually_paying' ) === false ) {
95 return false;
96 }
97
98 if ( empty( $this->attributes['id'] ) ) {
99 return new \WP_Error( 'not_saved', 'Please create the checkout session.' );
100 }
101
102 $finalized = \SureCart::request(
103 $this->endpoint . '/' . $this->attributes['id'] . '/manually_pay/',
104 [
105 'method' => 'PATCH',
106 'query' => $this->query,
107 'body' => [
108 $this->object_name => $this->getAttributes(),
109 ],
110 ]
111 );
112
113 if ( is_wp_error( $finalized ) ) {
114 return $finalized;
115 }
116
117 $this->resetAttributes();
118
119 $this->fill( $finalized );
120
121 $this->fireModelEvent( 'manually_paid' );
122
123 return $this;
124 }
125
126 /**
127 * Cancel an checkout
128 *
129 * @return $this|\WP_Error
130 */
131 protected function cancel() {
132 if ( $this->fireModelEvent( 'cancelling' ) === false ) {
133 return false;
134 }
135
136 if ( empty( $this->attributes['id'] ) ) {
137 return new \WP_Error( 'not_saved', 'Please create the order.' );
138 }
139
140 $cancelled = $this->makeRequest(
141 [
142 'method' => 'PATCH',
143 'query' => $this->query,
144 'body' => [
145 $this->object_name => $this->getAttributes(),
146 ],
147 ],
148 $this->endpoint . '/' . $this->attributes['id'] . '/cancel/'
149 );
150
151 if ( is_wp_error( $cancelled ) ) {
152 return $cancelled;
153 }
154
155 $this->resetAttributes();
156
157 $this->fill( $cancelled );
158
159 $this->fireModelEvent( 'cancelled' );
160
161 return $this;
162 }
163 }
164