PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 14.9.2
Jetpack – WP Security, Backup, Speed, & Growth v14.9.2
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / simple-payments / simple-payments.php
jetpack / modules / simple-payments Last commit date
paypal-express-checkout.js 1 year ago simple-payments.css 1 year ago simple-payments.php 1 year ago
simple-payments.php
270 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Simple Payments lets users embed a PayPal button fully integrated with wpcom to sell products on the site.
4 * This is not a proper module yet, because not all the pieces are in place. Until everything is shipped, it can be turned
5 * into module that can be enabled/disabled.
6 *
7 * @package automattic/jetpack
8 */
9
10 use Automattic\Jetpack\Paypal_Payments\Simple_Payments as PayPal_Simple_Payments;
11
12 /**
13 * Jetpack_Simple_Payments
14 */
15 class Jetpack_Simple_Payments {
16 // These have to be under 20 chars because that is CPT limit.
17
18 /**
19 * Post type order.
20 *
21 * @var string
22 */
23 public static $post_type_order = 'jp_pay_order';
24
25 /**
26 * Post type product.
27 *
28 * @var string
29 */
30 public static $post_type_product = 'jp_pay_product';
31
32 /**
33 * Define simple payment shortcode.
34 *
35 * @var string
36 */
37 public static $shortcode = 'simple-payment';
38
39 /**
40 * Define simple payment CSS prefix.
41 *
42 * @var string
43 */
44 public static $css_classname_prefix = 'jetpack-simple-payments';
45
46 /**
47 * Which plan the user is on.
48 *
49 * @var string value_bundle or jetpack_premium
50 */
51 public static $required_plan;
52
53 /**
54 * Instance of the class.
55 *
56 * @var Jetpack_Simple_Payments
57 */
58 private static $instance;
59
60 /**
61 * Construction function.
62 */
63 private function __construct() {}
64
65 /**
66 * Original singleton.
67 *
68 * @todo Remove this when nothing calles getInstance anymore.
69 */
70 public static function getInstance() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
71 return self::get_instance();
72 }
73
74 /**
75 * Create instance of class.
76 */
77 public static function get_instance() {
78 if ( ! self::$instance ) {
79 self::$instance = new self();
80 self::$instance->init_hook_action();
81 self::$required_plan = ( defined( 'IS_WPCOM' ) && IS_WPCOM ) ? 'value_bundle' : 'jetpack_premium';
82 }
83 return self::$instance;
84 }
85
86 /**
87 * Actions that are run on init.
88 */
89 public function init_hook_action() {
90 return PayPal_Simple_Payments::get_instance()->init_hook_action();
91 }
92
93 /**
94 * Enqueue the static assets needed in the frontend.
95 */
96 public function enqueue_frontend_assets() {
97 return PayPal_Simple_Payments::get_instance()->enqueue_frontend_assets();
98 }
99
100 /**
101 * Add an inline script for setting up the PayPal checkout button.
102 *
103 * @param int $id Product ID.
104 * @param int $dom_id ID of the DOM element with the purchase message.
105 * @param boolean $is_multiple Whether multiple items of the same product can be purchased.
106 */
107 public function setup_paypal_checkout_button( $id, $dom_id, $is_multiple ) {
108 return PayPal_Simple_Payments::get_instance()->setup_paypal_checkout_button( $id, $dom_id, $is_multiple );
109 }
110
111 /**
112 * Remove auto paragraph from product description.
113 *
114 * @param string $content - the content of the post.
115 */
116 public function remove_auto_paragraph_from_product_description( $content ) {
117 return PayPal_Simple_Payments::get_instance()->remove_auto_paragraph_from_product_description( $content );
118 }
119
120 /** Return the blog ID */
121 public function get_blog_id() {
122 return PayPal_Simple_Payments::get_instance()->get_blog_id();
123 }
124
125 /**
126 * Used to check whether Simple Payments are enabled for given site.
127 *
128 * @return bool True if Simple Payments are enabled, false otherwise.
129 */
130 public function is_enabled_jetpack_simple_payments() {
131 return PayPal_Simple_Payments::is_enabled_jetpack_simple_payments();
132 }
133
134 /**
135 * Creates the content from a shortcode
136 *
137 * @param array $attrs Shortcode attributes.
138 * @param mixed $content unused.
139 *
140 * @return string|void
141 */
142 public function parse_shortcode( $attrs, $content = false ) {
143 return PayPal_Simple_Payments::get_instance()->parse_shortcode( $attrs, $content );
144 }
145
146 /**
147 * Output an admin warning if user can't use Pay with PayPal.
148 *
149 * @param array $data unused.
150 */
151 public function output_admin_warning( $data ) {
152 return PayPal_Simple_Payments::get_instance()->output_admin_warning( $data );
153 }
154
155 /**
156 * Get the HTML output to use as PayPal purchase box.
157 *
158 * @param string $dom_id ID of the DOM element with the purchase message.
159 * @param boolean $is_multiple Whether multiple items of the same product can be purchased.
160 *
161 * @return string
162 */
163 public function output_purchase_box( $dom_id, $is_multiple ) {
164 return PayPal_Simple_Payments::get_instance()->output_purchase_box( $dom_id, $is_multiple );
165 }
166
167 /**
168 * Get the HTML output to replace the `simple-payments` shortcode.
169 *
170 * @param array $data Product data.
171 * @return string
172 */
173 public function output_shortcode( $data ) {
174 return PayPal_Simple_Payments::get_instance()->output_shortcode( $data );
175 }
176
177 /**
178 * Allows custom post types to be used by REST API.
179 *
180 * @param array $post_types - the allows post types.
181 * @see hook 'rest_api_allowed_post_types'
182 * @return array
183 */
184 public function allow_rest_api_types( $post_types ) {
185 return PayPal_Simple_Payments::get_instance()->allow_rest_api_types( $post_types );
186 }
187
188 /**
189 * Merge $post_meta with additional meta information.
190 *
191 * @param array $post_meta - the post's meta information.
192 */
193 public function allow_sync_post_meta( $post_meta ) {
194 return PayPal_Simple_Payments::get_instance()->allow_sync_post_meta( $post_meta );
195 }
196
197 /**
198 * Enable Simple payments custom meta values for access through the REST API.
199 * Field's value will be exposed on a .meta key in the endpoint response,
200 * and WordPress will handle setting up the callbacks for reading and writing
201 * to that meta key.
202 *
203 * @link https://developer.wordpress.org/rest-api/extending-the-rest-api/modifying-responses/
204 */
205 public function register_meta_fields_in_rest_api() {
206 return PayPal_Simple_Payments::get_instance()->register_meta_fields_in_rest_api();
207 }
208
209 /**
210 * Sanitize three-character ISO-4217 Simple payments currency
211 *
212 * List has to be in sync with list at the block's client side and widget's backend side:
213 *
214 * @param array $currency - list of currencies.
215 * @link https://github.com/Automattic/jetpack/blob/31efa189ad223c0eb7ad085ac0650a23facf9ef5/extensions/blocks/simple-payments/constants.js#L9-L39
216 * @link https://github.com/Automattic/jetpack/blob/31efa189ad223c0eb7ad085ac0650a23facf9ef5/modules/widgets/simple-payments.php#L19-L44
217 *
218 * Currencies should be supported by PayPal:
219 * @link https://developer.paypal.com/docs/api/reference/currency-codes/
220 *
221 * Indian Rupee (INR) not supported because at the time of the creation of this file
222 * because it's limited to in-country PayPal India accounts only.
223 * Discussion: https://github.com/Automattic/wp-calypso/pull/28236
224 */
225 public static function sanitize_currency( $currency ) {
226 return PayPal_Simple_Payments::sanitize_currency( $currency );
227 }
228
229 /**
230 * Sanitize price:
231 *
232 * Positive integers and floats
233 * Supports two decimal places.
234 * Maximum length: 10.
235 *
236 * See `price` from PayPal docs:
237 *
238 * @link https://developer.paypal.com/docs/api/orders/v1/#definition-item
239 *
240 * @param string $price - the price we want to sanitize.
241 * @return null|string
242 */
243 public static function sanitize_price( $price ) {
244 return PayPal_Simple_Payments::sanitize_price( $price );
245 }
246
247 /**
248 * Sets up the custom post types for the module.
249 */
250 public function setup_cpts() {
251 return PayPal_Simple_Payments::get_instance()->setup_cpts();
252 }
253
254 /**
255 * Validate the block attributes
256 *
257 * @param array $attrs The block attributes, expected to contain:
258 * * email - an email address.
259 * * price - a float between 0.01 and 9999999999.99.
260 * * productId - the ID of the product being paid for.
261 *
262 * @return bool
263 */
264 public function is_valid( $attrs ) {
265 return PayPal_Simple_Payments::get_instance()->is_valid( $attrs );
266 }
267 }
268
269 PayPal_Simple_Payments::get_instance();
270