Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add specific type and min supported amount in error response for the payments below min supported amount #10112

Conversation

mgascam
Copy link
Contributor

@mgascam mgascam commented Jan 8, 2025

Fixes #10092

Changes proposed in this Pull Request

This pull request enhances error handling for payment captures in the WooCommerce Payments plugin. The primary changes include adding support for a new error type related to capturing amounts that are too small, updating the associated error messages, and adding relevant tests.

Key changes:

Error Handling Enhancements

  • Introduced a new error type wcpay_capture_error_amount_too_small for cases where the capture amount is too small.
  • Updated the getErrorMessage function to handle the new error type and format the error message with the minimum amount and currency.

Documentation Updates

  • Added documentation for the new error type in the REST API documentation.

These changes provide clearer error messages and ensure that the system handles edge cases more gracefully.

Testing instructions

Pre-requisites

  1. As a merchant, enable the capture later feature in the Settings
  2. The minimum capturable amount for USD is $0.50, so I suggest having a product with a price below that limit.

Capturing an authorization

  1. As a shopper, purchase an order above the minimum amount limit. For instance, you can add several items of a product that has a unit price below the minimum amount.
  2. As a merchant, edit the recently purchased order so the order amount is below the limit. For instance, you can remove some items from the order.
  3. Navigate to Payments > Transactions > Uncaptured and locate the authorization.
  4. Click the capture button and observe a similar error to this one:
Screenshot 2025-01-09 at 17 27 11
  1. Navigate to the order details page and observe a similar note is added with the details of the error:
Screenshot 2025-01-09 at 17 29 27

Capturing a terminal payment

  1. Repeat steps 1 and 2 from the list above. Take a note of the Stripe payment intent id and the order id.
  2. Make a POST request to the capture_terminal_payment endpoint, making sure to use the correct payment intent id and order id:
curl -X POST https://example.com/wp-json/wc/v3/payments/orders/42/capture_terminal_payment \
	-u consumer_key:consumer_secret \
	-H "Content-Type: application/json" \
	-d '{
    "payment_intent_id": "pi_ZZZZZZZZZZZZZZZZAAAAAAAA"
}'
  1. Check that the response is similar to this one:
{
  "code": "wcpay_capture_error",
  "message": "Payment capture failed to complete with the following message: Minimum required amount was not reached. The minimum amount to capture is 0.5 USD.",
  "data": {
    "status": 400,
    "extra_details": {
      "minimum_amount": 50,
      "minimum_amount_currency": "USD"
    },
    "error_type": "amount_too_small"
  }
}

  • Run npm run changelog to add a changelog file, choose patch to leave it empty if the change is not significant. You can add multiple changelog files in one PR by running this command a few times.
  • Covered with tests (or have a good reason not to test in description ☝️)
  • Tested on mobile (or does not apply)

Post merge

@botwoo
Copy link
Collaborator

botwoo commented Jan 8, 2025

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 10112 or branch name add/10092-add-specific-type-and-min-supported-amount-in-error-response-for-the-payments-below-min-supported-amount in your-test.site/wp-admin/admin.php?page=jetpack-beta&plugin=woocommerce-payments

Option 2. Jurassic Ninja - available for logged-in A12s

🚀 Launch a JN site with this branch 🚀

ℹ️ Install this Tampermonkey script to get more options.


Build info:

  • Latest commit: 04b2a46
  • Build time: 2025-01-22 14:29:31 UTC

Note: the build is updated when a new commit is pushed to this PR.

Copy link
Contributor

github-actions bot commented Jan 8, 2025

Size Change: +1.13 kB (0%)

Total Size: 1.36 MB

Filename Size Change
release/woocommerce-payments/dist/index.js 301 kB +229 B (0%)
release/woocommerce-payments/dist/multi-currency-switcher-block.js 61.1 kB +189 B (0%)
release/woocommerce-payments/dist/multi-currency.js 57.8 kB +179 B (0%)
release/woocommerce-payments/dist/order.js 42.5 kB +171 B (0%)
release/woocommerce-payments/dist/payment-gateways.js 38.9 kB +184 B (0%)
release/woocommerce-payments/dist/settings.js 224 kB +179 B (0%)
ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.37 kB
release/woocommerce-payments/assets/css/admin.rtl.css 1.37 kB
release/woocommerce-payments/assets/css/success.css 182 B
release/woocommerce-payments/assets/css/success.rtl.css 184 B
release/woocommerce-payments/dist/blocks-checkout-rtl.css 2.64 kB
release/woocommerce-payments/dist/blocks-checkout.css 2.64 kB
release/woocommerce-payments/dist/blocks-checkout.js 55.6 kB
release/woocommerce-payments/dist/cart-block.js 17.2 kB
release/woocommerce-payments/dist/cart.js 5.73 kB
release/woocommerce-payments/dist/checkout-rtl.css 1.13 kB
release/woocommerce-payments/dist/checkout.css 1.13 kB
release/woocommerce-payments/dist/checkout.js 33.6 kB
release/woocommerce-payments/dist/express-checkout-rtl.css 229 B
release/woocommerce-payments/dist/express-checkout.css 229 B
release/woocommerce-payments/dist/express-checkout.js 15.7 kB
release/woocommerce-payments/dist/frontend-tracks.js 854 B
release/woocommerce-payments/dist/index-rtl.css 39.6 kB
release/woocommerce-payments/dist/index.css 39.5 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.08 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 4.47 kB
release/woocommerce-payments/dist/multi-currency.css 4.47 kB
release/woocommerce-payments/dist/order-rtl.css 730 B
release/woocommerce-payments/dist/order.css 730 B
release/woocommerce-payments/dist/payment-gateways-rtl.css 1.33 kB
release/woocommerce-payments/dist/payment-gateways.css 1.33 kB
release/woocommerce-payments/dist/plugins-page-rtl.css 386 B
release/woocommerce-payments/dist/plugins-page.css 386 B
release/woocommerce-payments/dist/plugins-page.js 20.1 kB
release/woocommerce-payments/dist/product-details-rtl.css 433 B
release/woocommerce-payments/dist/product-details.css 436 B
release/woocommerce-payments/dist/product-details.js 12.5 kB
release/woocommerce-payments/dist/settings-rtl.css 11.6 kB
release/woocommerce-payments/dist/settings.css 11.5 kB
release/woocommerce-payments/dist/subscription-edit-page.js 703 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 524 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 524 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 20.2 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 730 B
release/woocommerce-payments/dist/subscriptions-empty-state-rtl.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.js 19.3 kB
release/woocommerce-payments/dist/tokenized-express-checkout-rtl.css 229 B
release/woocommerce-payments/dist/tokenized-express-checkout.css 229 B
release/woocommerce-payments/dist/tokenized-express-checkout.js 16.6 kB
release/woocommerce-payments/dist/tos-rtl.css 235 B
release/woocommerce-payments/dist/tos.css 235 B
release/woocommerce-payments/dist/tos.js 21.8 kB
release/woocommerce-payments/dist/woopay-direct-checkout.js 6.13 kB
release/woocommerce-payments/dist/woopay-express-button.js 25 kB
release/woocommerce-payments/dist/woopay-rtl.css 4.31 kB
release/woocommerce-payments/dist/woopay.css 4.28 kB
release/woocommerce-payments/dist/woopay.js 71 kB
release/woocommerce-payments/includes/subscriptions/assets/css/plugin-page.css 625 B
release/woocommerce-payments/includes/subscriptions/assets/js/plugin-page.js 814 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/i18n-loader.js 2.46 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/jetpack-script-data.js 772 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/i18n-loader.js 1.02 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/script-data.js 69 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/babel.config.js 163 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.css 2.47 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.js 14.2 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.rtl.css 2.47 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.css 10 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.js 28.4 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.rtl.css 10 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.js 280 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.rtl.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.css 625 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.js 333 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.rtl.css 626 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-users.js 424 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-ajax.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-callables.js 585 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.css 215 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.css 721 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.js 412 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-users.js 632 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/about.css 1.04 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-empty-state.css 294 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-order-statuses.css 408 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin.css 3.59 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/checkout.css 301 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/modal.css 746 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/view-subscription.css 574 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/wcs-upgrade.css 414 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin-pointers.js 543 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin.js 9.4 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.js 6.78 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.min.js 3.84 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-coupon.js 545 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-subscription.js 2.52 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.js 22.2 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.min.js 11.7 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/payment-method-restrictions.js 1.29 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/wcs-meta-boxes-order.js 507 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/payment-methods.js 358 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/single-product.js 428 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/view-subscription.js 1.38 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/wcs-cart.js 782 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/modal.js 1.09 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/wcs-upgrade.js 1.26 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.css 391 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.js 3.04 kB

compressed-size-action

@mgascam mgascam changed the title [WIP] Add specifics to the amount too small exception Add specific type and min supported amount in error response for the payments below min supported amount Jan 9, 2025
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
@mgascam mgascam marked this pull request as ready for review January 9, 2025 17:05
@mgascam mgascam requested a review from a team January 9, 2025 17:05
@mgascam mgascam self-assigned this Jan 9, 2025
Copy link
Contributor

@deepakpathania deepakpathania left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left some comments.

client/data/authorizations/actions.ts Outdated Show resolved Hide resolved
client/data/authorizations/actions.ts Outdated Show resolved Hide resolved
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
…rted-amount-in-error-response-for-the-payments-below-min-supported-amount
Copy link
Contributor

@deepakpathania deepakpathania left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes LGTM now.

@mgascam mgascam enabled auto-merge January 22, 2025 14:29
@mgascam mgascam added this pull request to the merge queue Jan 22, 2025
Merged via the queue into develop with commit cce23de Jan 22, 2025
25 checks passed
@mgascam mgascam deleted the add/10092-add-specific-type-and-min-supported-amount-in-error-response-for-the-payments-below-min-supported-amount branch January 22, 2025 14:39
dmvrtx pushed a commit that referenced this pull request Jan 31, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add specific type and min supported amount in error response for the payments below min supported amount
4 participants