PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / trunk
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More vtrunk
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
← All changes | paypal/controllers/FrmPayPalLiteActionsController.php +81 -28 6.32 → trunk View file →
@@ -614,9 +614,9 @@
614 614 if ( ! isset( $subscription->status ) ) {
615 615 return false;
616 616 }
617 617
618 - return in_array( $subscription->status, array( 'ACTIVE', 'APPROVED', 'APPROVAL_PENDING' ), true );
618 + return in_array( $subscription->status, array( 'ACTIVE', 'APPROVED' ), true );
619 619 }
620 620
621 621 /**
622 622 * Validate that the subscription amount matches the expected amount.
@@ -628,13 +628,8 @@
628 628 *
629 629 * @return bool
630 630 */
631 631 private static function validate_subscription_amount( $subscription, $expected_amount ) {
632 - // Vault-created subscriptions in APPROVAL_PENDING have no billing details yet.
633 - if ( isset( $subscription->status ) && 'APPROVAL_PENDING' === $subscription->status ) {
634 - return true;
635 - }
636 -
637 632 $subscription_amount = $subscription->billing_info->last_payment->amount->value ?? $subscription->plan->billing_cycles[0]->pricing_scheme->fixed_price->value ?? '';
638 633
639 634 if ( ! $subscription_amount ) {
640 635 return false;
@@ -1263,27 +1258,34 @@
1263 1258 if ( 'subscription' === $intent ) {
1264 1259 $query_args['vault'] = 'true';
1265 1260 }
1266 1261
1267 - $include_buttons = false;
1268 - $include_card_fields = false;
1269 - $include_messages = true;
1262 + if ( 'subscription' === $intent ) {
1263 + $include_buttons = true;
1264 + $include_card_fields = false;
1265 + } else {
1266 + // One time payments.
1267 + $include_buttons = false;
1268 + $include_card_fields = false;
1270 1269
1271 - switch ( $action->post_content['paypal_layout'] ?? 'card_and_checkout' ) {
1272 - case 'card_only':
1273 - $include_card_fields = true;
1274 - break;
1270 + switch ( $action->post_content['paypal_layout'] ?? 'card_and_checkout' ) {
1271 + case 'card_only':
1272 + $include_card_fields = true;
1273 + break;
1275 1274
1276 - case 'checkout_only':
1277 - $include_buttons = true;
1278 - break;
1275 + case 'checkout_only':
1276 + $include_buttons = true;
1277 + break;
1279 1278
1280 - default:
1281 - $include_buttons = true;
1282 - $include_card_fields = true;
1283 - break;
1284 - }
1279 + default:
1280 + $include_buttons = true;
1281 + $include_card_fields = true;
1282 + break;
1283 + }
1284 + }//end if
1285 1285
1286 + $include_messages = true;
1287 +
1286 1288 switch ( $action->post_content['pay_later'] ?? 'auto' ) {
1287 1289 case 'off':
1288 1290 $query_args['disable-funding'] = 'paylater';
1289 1291 break;
@@ -1293,16 +1295,21 @@
1293 1295 $include_messages = false;
1294 1296 break;
1295 1297 }
1296 1298
1297 - $components = array();
1298 - $include_google_apple_pay = $include_buttons && is_ssl() && self::include_google_pay_apple_pay();
1299 + $components = array();
1300 + $supports_wallet_buttons = $include_buttons && 'subscription' !== $intent && is_ssl() && self::include_google_pay_apple_pay();
1301 + $include_google_pay = $supports_wallet_buttons && self::include_google_pay();
1302 + $include_apple_pay = $supports_wallet_buttons && self::include_apple_pay();
1299 1303
1300 1304 if ( $include_buttons ) {
1301 1305 $components[] = 'buttons';
1302 1306
1303 - if ( $include_google_apple_pay ) {
1307 + if ( $include_google_pay ) {
1304 1308 $components[] = 'googlepay';
1309 + }
1310 +
1311 + if ( $include_apple_pay ) {
1305 1312 $components[] = 'applepay';
1306 1313 }
1307 1314 }
1308 1315
@@ -1340,9 +1347,9 @@
1340 1347 $sdk_url = add_query_arg( $query_args, 'https://www.paypal.com/sdk/js' );
1341 1348
1342 1349 wp_register_script( 'paypal-sdk', $sdk_url, array(), null, false );
1343 1350
1344 - if ( $include_google_apple_pay ) {
1351 + if ( $include_apple_pay ) {
1345 1352 wp_register_script( 'apple-pay-sdk', 'https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js', array(), null, false );
1346 1353 }
1347 1354
1348 1355 $has_break = FrmAppHelper::pro_is_installed() && (bool) FrmField::get_all_types_in_form( $form_id, 'break' );
@@ -1383,9 +1390,9 @@
1383 1390 );
1384 1391
1385 1392 $dependencies = array( 'paypal-sdk', 'formidable' );
1386 1393
1387 - if ( $include_google_apple_pay ) {
1394 + if ( $include_apple_pay ) {
1388 1395 $dependencies[] = 'apple-pay-sdk';
1389 1396 }
1390 1397
1391 1398 $script_url = FrmPayPalLiteAppHelper::plugin_url() . 'js/frontend.js';
@@ -1397,9 +1404,9 @@
1397 1404 FrmAppHelper::plugin_version(),
1398 1405 false
1399 1406 );
1400 1407
1401 - if ( $include_google_apple_pay ) {
1408 + if ( $include_google_pay ) {
1402 1409 wp_enqueue_script(
1403 1410 'google-pay',
1404 1411 'https://pay.google.com/gp/p/js/pay.js',
1405 1412 array(),
@@ -1415,9 +1422,12 @@
1415 1422 'settings' => $action_settings,
1416 1423 'style' => self::get_style_for_js( $form_id ),
1417 1424 'buttonStyle' => self::get_button_style_for_js( $action ),
1418 1425 'imagesUrl' => FrmPayPalLiteAppHelper::plugin_url() . 'images/',
1419 - 'includeGooglePayApplePay' => $include_google_apple_pay,
1426 + 'includeGooglePay' => $include_google_pay,
1427 + 'includeApplePay' => $include_apple_pay,
1428 + 'includeGooglePayApplePay' => $include_google_pay || $include_apple_pay,
1429 + 'mode' => FrmPayPalLiteAppHelper::active_mode(),
1420 1430 );
1421 1431
1422 1432 wp_localize_script( 'formidable-paypal', 'frmPayPalVars', $paypal_vars );
1423 1433 }
@@ -1422,8 +1432,13 @@
1422 1432 wp_localize_script( 'formidable-paypal', 'frmPayPalVars', $paypal_vars );
1423 1433 }
1424 1434
1425 1435 /**
1436 + * Check if the Google Pay and Apple Pay wallet buttons are allowed at all.
1437 + *
1438 + * This gates both wallets together. To turn off just one of them, use
1439 + * frm_paypal_commerce_include_google_pay or frm_paypal_commerce_include_apple_pay instead.
1440 + *
1426 1441 * @since 6.31
1427 1442 *
1428 1443 * @return bool
1429 1444 */
@@ -1433,8 +1448,46 @@
1433 1448 *
1434 1449 * @param bool $include_google_pay_apple_pay
1435 1450 */
1436 1451 return (bool) apply_filters( 'frm_include_google_pay_apple_pay', true );
1452 + }
1453 +
1454 + /**
1455 + * Check if the Google Pay wallet button is allowed for PayPal Commerce.
1456 + *
1457 + * Only called when frm_include_google_pay_apple_pay allows the wallets, so this
1458 + * filter turns off Google Pay without affecting Apple Pay.
1459 + *
1460 + * @since 6.34
1461 + *
1462 + * @return bool
1463 + */
1464 + private static function include_google_pay() {
1465 + /**
1466 + * @since 6.34
1467 + *
1468 + * @param bool $include_google_pay
1469 + */
1470 + return (bool) apply_filters( 'frm_paypal_commerce_include_google_pay', true );
1471 + }
1472 +
1473 + /**
1474 + * Check if the Apple Pay wallet button is allowed for PayPal Commerce.
1475 + *
1476 + * Only called when frm_include_google_pay_apple_pay allows the wallets, so this
1477 + * filter turns off Apple Pay without affecting Google Pay.
1478 + *
1479 + * @since 6.34
1480 + *
1481 + * @return bool
1482 + */
1483 + private static function include_apple_pay() {
1484 + /**
1485 + * @since 6.34
1486 + *
1487 + * @param bool $include_apple_pay
1488 + */
1489 + return (bool) apply_filters( 'frm_paypal_commerce_include_apple_pay', true );
1437 1490 }
1438 1491
1439 1492 /**
1440 1493 * @since 6.31