Cancel on expiry and duplication of payments #121
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Konbini payments are unique: There's a considerable time gap between the timing that a payment is ready for capture (payment codes issued, or "authorized" in KOMOJU) and the timing of actual capture. For this purpose, the KOMOJU Payment plugin puts a WooCommerce order pending or on hold when a Konbini payment is "authorized".
During the period that orders on WooCommerce are pending or on-hold, however, WooCommerce allows shoppers to make another payment for the same order, through the page called order-pay (
/checkout/order-pay
- cf https://github.com/woocommerce/woocommerce/blob/4318dac7ecd6547a983148273fd2e278cbb18547/docs/getting-started/woocommerce-endpoints.md#L18). Due to this nature, there are multiple problematic scenarios that can happen, including:This PR adds countermeasures against these scenarios. Particularly, it amends the codes to:
set_transaction_id
much earlier, so thatexpired
webhook events are handled correctly,komoju_payment_id
(throughsave_komoju_meta_data
) much earlier, for easier detection of duplicated payments, and