Title: eCheckpoint
Author: eCheckpoint
Published: <strong>2024 年 10 月 15 日</strong>
Last modified: 2026 年 10 月 8 日

---

搜索插件

![](https://ps.w.org/echeckpoint/assets/banner-772x250.png?rev=3170179)

![](https://ps.w.org/echeckpoint/assets/icon-256x256.png?rev=3169626)

# eCheckpoint

 作者：[eCheckpoint](https://profiles.wordpress.org/echeckpointplugin/)

[下载](https://downloads.wordpress.org/plugin/echeckpoint.3.1.5.zip)

 * [详情](https://cn.wordpress.org/plugins/echeckpoint/#description)
 * [评价](https://cn.wordpress.org/plugins/echeckpoint/#reviews)
 *  [安装](https://cn.wordpress.org/plugins/echeckpoint/#installation)
 * [开发进展](https://cn.wordpress.org/plugins/echeckpoint/#developers)

 [支持](https://wordpress.org/support/plugin/echeckpoint/)

## 描述

eCheckpoint provides comprehensive compliance verification for firearms, ammunition,
magazines, and knives eCommerce. It validates customer eligibility based on federal,
state, and local regulations before and after order placement.

**Key Features:**

 * **Pre-Order Compliance Checks** – Validates customer eligibility before checkout
   completion
 * **Post-Order Verification** – Screens each order again after it is placed and
   records the result on the order
 * **Address Validation** – Automatic address verification and correction
 * **Regional Restrictions** – Enforces state and local sales restrictions
 * **FFL Dealer Integration** – Google Maps-powered FFL dealer selection for firearm
   transfers
 * **Customer Type Support** – Supports B2C (consumer), B2B (business), and B2G (
   government) transactions
 * **Dual Checkout Support** – Works with both Classic and Block checkout

**WooCommerce Blocks Compatible**

eCheckpoint fully supports WooCommerce’s new Block-based checkout, providing the
same robust compliance verification in both Classic and Block checkout experiences.

**Customizable Messaging**

Configure customer-facing compliance messages directly from the WordPress admin:

 * Blocked Products message
 * FFL Required message
 * Additional Information Required message

## 屏幕截图

[⌊Compliance notice displayed during checkout⌉⌊Compliance notice displayed during
checkout⌉[

Compliance notice displayed during checkout

[⌊FFL dealer selection map⌉⌊FFL dealer selection map⌉[

FFL dealer selection map

[⌊Admin settings page⌉⌊Admin settings page⌉[

Admin settings page

[[

[[

[[

[[

[[

[[

## 安装

 1. Upload the `echeckpoint` folder to the `/wp-content/plugins/` directory
 2. Activate the plugin through the ‘Plugins’ menu in WordPress
 3. Navigate to WooCommerce > eCheckpoint to configure your API settings
 4. Configure your eCheckpoint API credentials
 5. Set up Google Maps API key for FFL dealer mapping (optional)

## 常见问题

### What is eCheckpoint?

eCheckpoint is a compliance verification service that helps firearms retailers ensure
their sales comply with federal, state, and local regulations.

### Does this work with WooCommerce Blocks checkout?

Yes, eCheckpoint fully supports both Classic WooCommerce checkout and the new Block-
based checkout.

### What customer types are supported?

eCheckpoint supports B2C (Business to Consumer), B2B (Business to Business), and
B2G (Business to Government) transaction types.

### How does FFL dealer selection work?

When a product requires transfer through a Federal Firearms License holder, customers
can select from nearby FFL dealers displayed on an integrated Google Maps interface.

## 评价

此插件暂无评价。

## 贡献者及开发者

「eCheckpoint」是开源软件。 以下人员对此插件做出了贡献。

贡献者

 *   [ eCheckpoint ](https://profiles.wordpress.org/echeckpointplugin/)
 *   [ echeckpoint ](https://profiles.wordpress.org/echeckpoint/)

[帮助将「eCheckpoint」翻译成简体中文。](https://translate.wordpress.org/projects/wp-plugins/echeckpoint)

### 对开发感兴趣吗?

您可以[浏览代码](https://plugins.trac.wordpress.org/browser/echeckpoint/)，查看[SVN仓库](https://plugins.svn.wordpress.org/echeckpoint/)，
或通过[RSS](https://plugins.trac.wordpress.org/log/echeckpoint/?limit=100&mode=stop_on_copy&format=rss)
订阅[开发日志](https://plugins.trac.wordpress.org/log/echeckpoint/)。

## 更新日志

#### 3.1.5

 * The automatic re-check of held orders is not available in this version and will
   return in a later one. Its settings (Enable Automatic Remediation, Daily Order
   Volume, Enable Auto-Cancel for Failed Orders and Compliance Timeout) no longer
   appear on the Post-Order Checkpoint tab, and it is switched off on every store,
   including a store that turned it on in an earlier version. We found that the 
   re-check could release, cancel or refund a held order using the compliance record
   of a different order: one placed on another site that uses the same eCheckpoint
   account and has the same order number and products. It will come back once each
   record can be matched to the store that placed the order. Orders are still checked
   after purchase, held according to your Place Orders On Hold setting, and have
   their compliance result recorded, exactly as before. A held order now stays on
   hold until you release, cancel or refund it yourself. Your earlier choices for
   these settings are kept, but have no effect in this version.
 * Fixed a failure that broke the product data feed on a newly set up store. On 
   a store running no other plugins, the requests the block-based storefront makes
   for product information returned an error, so product blocks, product filters
   and anything else reading your catalogue that way failed to load. The shop and
   product pages, and the cart and checkout pages, were unaffected, which is why
   the problem could go unnoticed. The cause was the plugin clearing leftover checkout
   messages before the visitor had a session for those messages to live in; it now
   clears them only once there is one. A store running other plugins may never have
   seen this, because a plugin that starts a visitor session early enough hides 
   it. This has been present since version 3.1.1.
 * Fixed a case where an order could be left unscreened while reading as though 
   it had been screened. Before running an after-order compliance check the plugin
   asks the eCheckpoint service whether that order has already been checked, so 
   that a shopper who reloads the thank-you page is not screened twice and the merchant
   is not billed twice. It was treating any reply it could read as “already checked”,
   including replies that were error responses rather than answers, so anything 
   sitting between your store and the eCheckpoint service that alters the request,
   such as another plugin or a proxy, could silently cancel the check and still 
   mark the order as handled. The plugin now treats a reply as “already checked”
   only when the service actually answered that way, and runs the check whenever
   it cannot get a straight answer, because a duplicate check costs a call and a
   missed check is a compliance failure. Orders the service confirms were already
   checked are still not checked a second time. When a check goes ahead because 
   the question could not be answered, the order says so in its notes and the reason
   is written to the WooCommerce logs, so an order screened for that reason can 
   be told apart from one that was skipped.
 * Fixed orders paid by card being left unscreened, with no compliance result and
   no eCheckpoint note, while orders paid by cash on delivery were screened normally.
   A card payment completes during checkout, and at that point the plugin asks the
   eCheckpoint service whether the order has already been checked. The service files
   its records by order number, and an order number is not unique to one store: 
   a staging copy, a restored database or a second shop using the same eCheckpoint
   account can each have an order with the same number. The plugin was accepting
   any record under that number as proof the order had been checked, so a card order
   whose number had been used before was skipped and nothing on it said so. A record
   now counts only when your store itself has already started a check of that same
   order, and the record names the order and lists only products on it, and is no
   older than that check (allowing a few minutes for any difference between your
   store’s clock and the service’s). Anything else is noted on the order and the
   order is checked. Reloading the thank-you page, or a payment confirmation arriving
   twice, still does not check or bill an order a second time, because the plugin
   remembers on the order itself that it has been checked. If a payment confirmation
   arrives while your store’s own check of that order is still under way, the order
   is not checked a second time; it records that check’s result, follows your Place
   Orders On Hold setting exactly as a fresh check would, and carries a note saying
   which record it relied on. The after-order check now also waits up to 30 seconds
   for the eCheckpoint service to answer, as the check during checkout already did,
   instead of 5 seconds, so a slower check on an order with a licensed dealer is
   no longer lost; on a card payment that wait is part of placing the order.
 * Fixed a case on the block-based checkout where the compliance message a shopper
   saw could describe a cart they no longer had. The result of a check was reused
   whenever the delivery address had not changed, so changing the cart left the 
   previous answer standing. A shopper who removed the product that had been refused
   and put something else in its place could still be refused, by name, for the 
   product they had just taken out. More seriously, a shopper who had already entered
   their delivery address and then added a product that cannot be sold to them could
   be shown nothing at all, and would only find out when they pressed Place Order.
   What the checkout shows is now worked out for the cart the shopper currently 
   has as well as for the address it ships to, and a shopper who arrives at the 
   checkout with their address already on file is told what applies to their cart
   without having to edit anything to bring it up. Changing what is in the cart 
   now costs a compliance check where it previously did not. Viewing the checkout
   again and changing the quantity of an item already in the cart do not, and an
   empty cart is no longer checked at all. What happens when an order is placed 
   is unchanged by this fix. The shortcode checkout was not affected and is unchanged.
 * A shopper whose cart contains a product that has not been registered with eCheckpoint
   is now told about it on the checkout screen, at the same point as any other compliance
   problem, instead of only finding out when they press Place Order. The explanation
   now asks them to contact customer service, which is the step that actually resolves
   it. On the block-based checkout these shoppers were previously told that federal,
   state or local regulations prevented the item being shipped to their location,
   which was not the case: an unregistered product is a setup step that has not 
   been finished in the eCheckpoint Portal, and it has nothing to do with where 
   the shopper lives. The shortcode checkout already showed the correct wording.
   Orders containing such a product are still declined, and a product that genuinely
   cannot ship to the shopper’s location still shows the blocked-products message
   configured in your settings, unchanged.
 * Clearing the Blocked Products Message, Dealer Required Message or Additional 
   Information Message box in the settings now restores the standard wording rather
   than leaving shoppers with no explanation, and the settings screen shows that
   wording in the box. A message box saved empty was previously treated as configured
   wording, so the refusal it belongs to arrived with nothing in it, the block-based
   checkout showed no dealer explanation and no additional information notice, and
   the shortcode checkout showed wording of its own instead, so the two checkouts
   disagreed. Both checkouts now show the same wording for the same settings. On
   the shortcode checkout this also means a custom Dealer Required Message is shown
   once rather than twice, the dealer notice no longer adds its own line asking 
   for an active FFL address, and a product needing additional information is announced
   in your Additional Information Message rather than in a fixed sentence naming
   the product. If you had deliberately blanked one of these boxes, the default 
   text will reappear; put your own wording in the box to replace it.
 * The licensed dealer recorded on an order is now written only when that order 
   actually ships to that dealer’s registry-validated premise, and the selection
   is released once the order is created. Previously a dealer chosen earlier in 
   a shopping session could be copied onto whatever order was placed next, so an
   accepted order could name a dealer that had nothing to do with it. For a firearms
   order the dealer named on the order is the record of where the transfer took 
   place, so an order now either names the dealer it shipped to or names no dealer
   at all.
 * Fixed a case on the classic checkout where a compliance message could stay on
   screen after a later check had passed, so a shopper could be stopped by a verdict
   that no longer applied to their cart or delivery address. A message shown at 
   checkout is now tied to the cart contents and the delivery address it was produced
   for, and is taken down as soon as a check passes or as soon as the address it
   was based on changes. Editing a name, phone number or company does not take down
   a message that still applies.
 * An order that passes its after-order compliance check now records that it passed,
   and an order skipped because it ships to an excluded state records that too. 
   Previously a screened order and a never-screened order carried no way to tell
   them apart, so there was no record that a check had been done. The record is 
   held on the order itself and is available to support and to anything reading 
   the order through the API; it does not yet appear on the orders list in your 
   admin. **Please note this changes the outcome for some orders, and the reason
   is worth reading.** The compliance service returns one of three results per item:
   pass, fail, or a conditional result. The plugin was treating a conditional result
   as a failure when it came from the regional restrictions check, and as a pass
   when the same result came from the product-catalog or address checks. So an order
   the service had flagged could be completed and recorded as compliant, purely 
   because of which check reported it. All three are now treated the same way, which
   is how the eCheckpoint extension for Magento has always worked. The compliance
   rules themselves are unchanged; this is the plugin honouring the whole of the
   service’s answer rather than part of it. Whether a flagged order is placed on
   hold remains controlled by your Place Orders On Hold setting.
 * Compliance guidance at checkout is now worked out by the store and sent to the
   shopper’s screen, rather than the screen keeping its own copy and deciding what
   to show. The copy could fall out of date, which is what caused shoppers to be
   told a licensed dealer was needed when their delivery address already was one,
   and caused a message from an earlier attempt to keep blocking a shopper after
   a later check had passed. What a shopper is told now always reflects the address
   they have actually entered, and a delivery address that cannot be verified is
   explained to them with a link to look it up. This also matches how the eCheckpoint
   extension for Magento has always worked, so the two behave the same way for the
   same situation.
 * Fixed a case on the block-based checkout where a shopper could be prevented from
   completing an order the store would have accepted. If the delivery address already
   satisfies the dealer requirement, for example a shopper who enters a licensed
   dealer’s address directly, or a store that uses a separate dealer-selection service
   alongside eCheckpoint, the order now completes. An address that does not satisfy
   the requirement is still declined, with an explanation naming the products that
   need a dealer. Stores using a third-party dealer service were previously unable
   to complete firearms orders at all.
 * Fixed a case on the block-based checkout where a shopper buying a product that
   must ship to a licensed dealer could be stopped at Place Order with nothing on
   screen telling them why. The dealer explanation now stays visible for as long
   as a dealer is still needed, and the checkout is never held closed without an
   explanation the shopper can see. An order that needs a dealer still cannot be
   completed until one is properly selected.
 * Choosing a licensed dealer on the map at the block-based checkout now clears 
   the dealer requirement message as soon as the dealer is confirmed, with no other
   step needed from the shopper, and any detail the shopper is part-way through 
   entering is kept. Removing the dealer, or moving the delivery address away from
   the dealer, brings the message back. Choosing a dealer runs one compliance check,
   so the guidance shown reflects the dealer the shopper picked.
 * The dealer-lookup feature used by the FFL map is now turned off together with
   the pre-order check setting, and a single visitor can no longer run unlimited
   dealer lookups: after a burst of rapid lookups the store asks them to wait a 
   few minutes. Real shoppers are unaffected; this protects the merchant’s compliance
   service usage from abuse.
 * When an order is refused for compliance on the block-based checkout, the plugin
   no longer adds its own copy of an explanation the checkout is already showing.
   Previously the same message could appear twice, once from the checkout itself
   and once from the plugin’s own notice.
 * The security token that protects order placement on the classic checkout is now
   built into the page itself instead of being added by a script. Stores whose scripts
   are altered or blocked, for example by a site optimizer or a conflicting plugin,
   can no longer see orders refused with “Security verification failed” for that
   reason.
 * The “Enable Pre-Order Check” setting now works. Turning it off stops all pre-
   order compliance screening at checkout, removes the customer type field, and 
   stops the compliance fee, on both checkout types; turning it back on restores
   all of them. Previously the setting had no effect. Post-order screening is not
   affected by this setting. While the setting is off, an admin notice reminds staff
   that pre-order screening is disabled.
 * Fixed a checkout failure that could refuse every order on stores whose checkout
   page setting does not match the checkout their shoppers actually use. Affected
   stores showed “Security verification failed. Please refresh the page and try 
   again.” and could not take orders at all.
 * The plugin now loads its checkout files based on the page a shopper is actually
   on, rather than the page nominated in the store’s checkout setting.
 * Removed a reference to a script file the plugin does not include, which produced
   a browser error on affected stores.
 * Hardened compliance screening so it cannot be skipped by a forged request header.
 * Compliance screening on the block-based checkout is now enforced on the server
   when an order is placed. Previously the block checkout relied on the browser 
   to stop a restricted order, so an order submitted outside the normal checkout
   screen could be accepted without being screened.
 * Screening on the block-based checkout is now performed against the address actually
   submitted with the order, rather than the last address the shopper had entered.
 * Orders with nothing to pay, such as a cart fully covered by a coupon, are now
   screened. Previously they were not.
 * If a compliance check cannot be completed, the block-based checkout now declines
   the order instead of accepting it unscreened. Please note this is a change in
   behavior: if the eCheckpoint service is unreachable, or if an order is submitted
   without complete billing and shipping address details, that order will be declined
   and the shopper is asked to try again. Stores that have made billing name, address
   or email optional at checkout may see those orders declined.
 * Orders shipping outside the United States are not screened and are not affected
   by the changes above. eCheckpoint covers United States sales.
 * Products that must ship to a licensed dealer are now enforced on the server when
   an order is placed on the block-based checkout. An order containing such a product
   is declined unless the shipping address satisfies the dealer requirement, and
   the shopper is told which products need a dealer. Previously this relied on the
   checkout screen in the browser.
 * Compliance screening now determines the customer type from the type recorded 
   on the order rather than from separate browser values, on both checkout types.
   This closes a path by which a submission could claim a customer type that skips
   a required rule without that type being recorded on the order.
 * Fixed a case where a shopper who removed a restricted item from the cart could
   still be prevented from checking out for the rest of their visit.
 * A selected firearms dealer is now confirmed against the eCheckpoint dealer registry
   before its license is used for screening, and the dealer’s official premise address
   is used rather than any address submitted with the selection. If the dealer cannot
   be confirmed (including when the registry lookup is temporarily unavailable),
   the shopper is asked to re-select a dealer. This ensures a regulated product 
   can only ship to a genuine, verified dealer.
 * The 50-State Compliance Fee now decides whether an order is a United States order
   using the same test as compliance screening, so the two can no longer disagree.
   Please note this is a change in behavior for stores that charge the fee: a country
   recorded in lower case or with extra spaces now correctly counts as United States
   and is charged the fee, and an order whose country is missing or is not a valid
   two-letter code is now treated as a United States order for the fee, where previously
   the fee was skipped. Orders with a valid country outside the United States are
   unaffected and are still not charged.

#### 3.1.4

 * FFL dealer selection is now recorded on the order and shown to staff on the order
   screen
 * Firearm compliance confirms the selected FFL dealer by license number, so a lawful
   transfer is approved even when the dealer’s address cannot be validated
 * Selecting a dealer sets the shipping address and company to the dealer’s premise;
   changing the address requires re-selecting a dealer
 * The FFL map now lists all nearby dealers for the customer’s ZIP, so a dealer 
   can be changed after selection

#### 3.1.3

 * Added automatic compliance remediation cron for held orders
 * Orders automatically released when compliance clears in the eCheckpoint portal
 * Configurable check frequency based on daily order volume
 * Action Scheduler integration for reliable background processing
 * Added compliance pending flag infrastructure for order tracking

#### 3.1.2

 * Added woocommerce_payment_complete hook for off-site payment gateways (e.g., 
   Credova)
 * Post-order compliance check now fires reliably for all payment methods
 * Two-layer deduplication prevents duplicate compliance checks (local meta + OrderStatus
   API)

#### 3.1.1

 * Updated post-order check to better handle excluded states

#### 3.1.0

 * Fixed styling conflicts with other WooCommerce plugins
 * Improved checkout compatibility

#### 3.0.0

 * Added admin-configurable Blocked Products checkout message
 * Added admin-configurable FFL Required checkout message
 * Added admin-configurable Additional Information Required checkout message
 * Added Block checkout shipping address change detection for compliance rechecks
 * Improved product list display in compliance notices (comma-delimited format)
 * Consolidated message system with centralized PHP helper methods
 * Fixed notice styling alignment in Block checkout

#### 2.0.0

 * Added full WooCommerce Blocks checkout support
 * React-based checkout integration
 * Improved FFL dealer map integration
 * Enhanced customer type selection

#### 1.0.0

 * Initial release
 * Classic WooCommerce checkout support
 * Pre-order and post-order compliance checks
 * Address validation
 * Regional restrictions enforcement
 * FFL dealer selection

## 额外信息

 *  版本 **3.1.5**
 *  最后更新：**2 小时前**
 *  活跃安装数量 **不到10**
 *  WordPress 版本 ** 6.6 或更高版本 **
 *  已测试的最高版本为 **7.1.3**
 *  PHP 版本 ** 8.1 或更高版本 **
 *  语言
 * [English (US)](https://wordpress.org/plugins/echeckpoint/)
 * 标签
 * [age verification](https://cn.wordpress.org/plugins/tags/age-verification/)[compliance](https://cn.wordpress.org/plugins/tags/compliance/)
   [FFL](https://cn.wordpress.org/plugins/tags/ffl/)[firearms](https://cn.wordpress.org/plugins/tags/firearms/)
   [woocommerce](https://cn.wordpress.org/plugins/tags/woocommerce/)
 *  [高级视图](https://cn.wordpress.org/plugins/echeckpoint/advanced/)

## 评级

尚未提交反馈。

[您的评价](https://wordpress.org/support/plugin/echeckpoint/reviews/#new-post)

[查看全部评论](https://wordpress.org/support/plugin/echeckpoint/reviews/)

## 贡献者

 *   [ eCheckpoint ](https://profiles.wordpress.org/echeckpointplugin/)
 *   [ echeckpoint ](https://profiles.wordpress.org/echeckpoint/)

## 支持

有话要说吗？是否需要帮助？

 [查看支持论坛](https://wordpress.org/support/plugin/echeckpoint/)