WooCommerce 对接易支付教程:GitHub 开源免费插件支持 10多种支付方式

几年前,我曾经分享过一篇 WooCommerce 对接易支付的教程。当时使用的是较早的收费插件,支付方式不够完整,对 PHP 8 和新版 WooCommerce 区块结账的兼容性也有限。

这一次我重新整理并开发了一套 EPay for WooCommerce 插件,已经在 GitHub 免费开源。新版插件为每一种支付方式提供独立的 WooCommerce 网关,支持经典结账页和新版 Checkout Block,也加入了支付签名、金额、商户号、通道和重复回调验证。

项目地址: https://github.com/wxcydzcc/epay
插件费用:插件源码免费开源,采用 GPL-3.0 许可证。易支付平台、服务器和具体支付通道可能产生各自的服务费用。
当前教程版本:EPay for WooCommerce 2.1.0

一、新版插件有哪些变化?

旧版教程主要解决“让 WooCommerce 能跳转到易支付”的问题。现在的开源版本不只是简单修改旧插件,而是重新整理了插件结构和关键逻辑。

  • 免费开源:源码托管在 GitHub,用户可以自行下载、检查、修改和提交问题。
  • 10 个独立支付网关:客户在 WooCommerce 结账页直接选择具体支付方式,不使用空 type 的聚合收银台。
  • 支持 PHP 7.4 及以上版本:已经分别通过 PHP 7.4 和 PHP 8.4 语法检查。
  • 支持 HPOS:订单读写使用 WooCommerce API,并声明兼容高性能订单存储。
  • 支持 Checkout Block:新版 WooCommerce 区块结账页可以识别并显示已经启用的 EPay 支付方式。
  • 独立支付图标:银联、Revolut、PayPal、AlipayHK、USDT、LINE Pay、PayNow 和银行卡等通道使用独立图标。
  • 回调验证更完整:验证签名、商户 ID、支付状态、订单支付方式、API type 和完整订单金额,并安全处理重复通知。
重要说明:插件提供的是 WooCommerce 与易支付之间的对接能力,并不会自动帮你开通 PayPal、USDT、Revolut 或银行卡通道。你的易支付服务端必须已经安装并支持相应的支付插件和 API type。

二、支持哪些支付方式?

目前插件包含以下 10 个独立网关:

结账页名称 API type 使用条件
微信支付 wxpay 易支付服务端支持微信通道
支付宝 alipay 易支付服务端支持支付宝通道
银联支付 bank 服务端将银联映射为 bank
Revolut revolut 服务端支持 Revolut 插件
PayPal paypal 服务端支持 PayPal 插件
AlipayHK alipayhk 服务端支持香港支付宝通道
USDT usdt 服务端支持 USDT 通道及对应网络
LINE Pay linepay 服务端支持 LINE Pay
PayNow paynow 服务端支持新加坡 PayNow
信用卡 / 借记卡 card 服务端支持银行卡收款通道

可以陆续增加更多支付

你不需要把 10 种方式全部打开。只启用服务端真实可用、并且已经测试成功的通道,能够减少客户误选和支付失败。

三、安装前需要准备什么?

开始前建议准备以下内容:

  1. 一套可以正常访问的 WordPress 网站。
  2. 已经安装并启用 WooCommerce。
  3. 一个可以正常使用的易支付商户账户。
  4. 易支付站点根地址、商户 ID 和商户密钥。
  5. 至少一个已经在易支付服务端测试过的支付通道。
  6. 网站启用 HTTPS,并允许易支付服务器访问 WooCommerce 回调地址。
  7. 一个低价测试商品,建议使用你能承担风险的最小测试金额。

四、从 GitHub 下载并安装插件

方法一:从 GitHub 页面下载

  1. 打开项目主页:wxcydzcc/epay
  2. 点击绿色的 Code 按钮。
  3. 点击 Download ZIP。
  4. 解压后将目录名称从 epay-main 改成 epay。
  5. 重新压缩为 epay.zip。

也可以直接使用下面的源码下载地址:

下载 EPay for WooCommerce 最新源码

方法二:在 WordPress 后台上传

  1. 登录 WordPress 后台。
  2. 进入“插件 → 安装新插件”。
  3. 点击“上传插件”。
  4. 选择刚才准备好的 epay.zip。
  5. 点击“立即安装”,安装完成后点击“启用插件”。

如果通过 FTP 或服务器面板安装,也可以把完整的 epay 目录上传到:

/wp-content/plugins/epay/

五、填写易支付全局参数

启用插件后,进入:

WooCommerce → 易支付设置

这里的参数由所有支付方式共同使用。

1. 支付网关地址

填写易支付站点的根地址,例如:

https://pay.example.com

不需要手动添加 /submit.php,插件会自动拼接。建议不要在末尾添加多余路径或参数。

2. 商户 ID

填写易支付商户后台分配的 PID。不要填写支付平台订单号、登录账号或插件编号。

3. 商户密钥

填写商户后台对应的 Key。这个密钥用于生成和校验 MD5 签名,不能公开。以后修改其他设置时,如果不需要更换密钥,可以把密钥输入框留空,插件会保留原值。

4. 自定义支付后返回地址

通常建议留空,让 WooCommerce 自动返回订单完成页。只有明确知道业务需求时,才填写自定义 HTTPS 地址。

录屏安全提醒:商户密钥相当于支付接口密码。录制视频时应提前打码,不要依赖后期才处理;上传前再完整检查一次画面和声音。

六、启用需要的支付方式

填写全局参数后,还需要单独启用支付方式。进入:

WooCommerce → 设置 → 付款

你会看到微信支付、支付宝、银联支付、Revolut、PayPal、AlipayHK、USDT、LINE Pay、PayNow 和信用卡 / 借记卡。

  1. 先选择一个服务端已经支持的支付通道。
  2. 打开“启用”开关。
  3. 进入管理页面,确认结账标题和说明。
  4. 保存设置。
  5. 依次启用其他已经测试可用的通道。

如果你的易支付服务端没有对应的 type,不要在 WooCommerce 中启用该方式。例如服务端没有 paynow 通道,启用 PayNow 后客户虽然可以看到选项,但提交订单时可能无法进入正确的支付页面。

七、新版 Checkout Block 说明

WooCommerce 新网站通常默认使用 Checkout Block。旧版支付插件经常出现后台已经启用,但结账页提示“无可用的付款方式”的问题。

EPay for WooCommerce 2.1.0 已加入 Checkout Block 的 PHP 和 JavaScript 注册层。已经启用的 EPay 网关会同时显示在:

  • 经典 shortcode 结账页:[woocommerce_checkout]
  • WooCommerce 新版 Checkout Block

区块结账会沿用传统网关中的启用状态、标题、说明、图标和 process_payment 跳转流程,不需要重复填写商户参数。

八、创建测试商品并完成付款

支付插件安装完成后,不要直接上线推广,先做一笔完整的小额测试。

  1. 创建一个低价测试商品。
  2. 使用无痕窗口或退出管理员账号访问网站。
  3. 把商品加入购物车。
  4. 进入结账页,填写测试所需的账单信息。
  5. 选择刚刚启用的 EPay 支付方式。
  6. 点击“下单”或“Place order”。
  7. 确认浏览器跳转到正确的易支付地址和通道。
  8. 完成付款,等待返回 WooCommerce。

插件提交给易支付的主要参数包括商户 ID、支付 type、WooCommerce 订单号、异步通知地址、返回地址、商品名称、订单金额、签名和签名类型。

九、检查异步回调是否成功

客户在支付页面看到“支付成功”并不等于 WooCommerce 已经收到回调。完整测试必须回到 WordPress 后台检查订单状态。

进入:

WooCommerce → 订单 → 打开刚才的测试订单

正常情况下可以看到:

  • 订单从“待付款”变成“处理中”或“已完成”。
  • 订单备注中出现易支付付款成功及平台交易号。
  • 付款方式与本次选择的 EPay 通道一致。
  • 易支付服务端收到纯文本 success,不再重复通知。

插件接收回调时会检查:

  • MD5 签名是否正确;
  • 回调商户 ID 是否与后台配置一致;
  • trade_status 是否为 TRADE_SUCCESS;
  • WooCommerce 订单是否存在;
  • 订单支付方式与回调 type 是否一致;
  • 回调金额与订单完整金额是否一致;
  • 订单是否已经支付,避免重复完成订单。

十、常见问题排查

问题 1:结账页提示“无可用的付款方式”

  • 确认插件已启用。
  • 确认至少一个 EPay 支付方式已经在“WooCommerce → 设置 → 付款”中启用。
  • 确认安装的是 2.1.0 或更新版本。
  • 清除 WordPress、对象缓存、页面缓存和 CDN 缓存。
  • 确认测试订单确实需要付款,免费订单不会显示普通付款方式。
  • 临时停用可能过滤支付方式的多币种、地区限制或结账优化插件进行排查。

问题 2:点击下单后提示易支付配置不完整

检查支付网关地址、商户 ID 和商户密钥是否都已保存。网关地址填写根域名,不要重复添加 submit.php。

问题 3:能够下单,但没有跳转到付款页面

  • 确认易支付地址使用 http:// 或 https:// 开头。
  • 直接访问易支付站点,确认服务端没有故障。
  • 确认服务端支持本次选择的 API type。
  • 检查安全插件或防火墙是否阻止外部跳转。

问题 4:付款成功,但 WooCommerce 订单仍然待付款

  • 在“WooCommerce → 易支付设置”查看插件显示的异步通知地址。
  • 确认该地址可以从公网访问,不能被登录验证、维护模式或 IP 白名单拦截。
  • 检查 Cloudflare、宝塔防火墙、WordPress 安全插件和服务器 WAF。
  • 确认易支付后台的商户 ID 和密钥与 WordPress 配置完全一致。
  • 检查订单金额和支付币种,避免通道换算后回调金额不一致。
  • 进入“WooCommerce → 状态 → 日志”,查找来源为 epay-callback 的警告。

问题 5:部分支付方式跳转错误

通常是易支付服务端的插件调用值与本项目约定不一致。WooCommerce 端使用的是固定值,例如银联为 bank、银行卡为 card。如果服务端使用其他调用值,需要先统一两端协议,不要只修改显示名称。

问题 6:图标没有更新

清除浏览器、WordPress 和 CDN 缓存;检查服务器是否允许正确返回 SVG 文件。如果安全策略不允许 SVG,可以把对应图标转换成 PNG,并同步修改网关类中的图标文件名。

十一、安全与使用建议

  • 不要在文章、视频、截图或 GitHub Issue 中公开商户密钥。
  • WordPress、WooCommerce 和插件都应及时更新。
  • 网站和易支付服务端应使用有效 HTTPS 证书。
  • 不要通过前端返回页面直接把订单标记为已支付,应以服务器异步通知为准。
  • 先测试单一通道,再逐个增加其他通道。
  • 正式上线前分别测试成功付款、取消付款、金额不一致和重复通知。
  • WooCommerce 商店币种必须与实际支付通道的结算逻辑相符。插件本身不会自动进行汇率转换。
  • 定期核对 WooCommerce 订单、易支付订单和最终到账记录。

十二、常见问题 FAQ

这个 WooCommerce 易支付插件收费吗?

插件源码已经在 GitHub 免费开源。易支付服务器、支付通道、收单机构和银行卡处理服务可能有自己的费用。

支持 PHP 8 吗?

支持。项目代码已经通过 PHP 7.4 和 PHP 8.4 语法检查。实际运行仍建议搭配受支持版本的 WordPress、WooCommerce 和 PHP 扩展。

支持新版 WooCommerce Checkout Block 吗?

2.1.0 及以上版本支持 Checkout Block,同时保留经典 shortcode 结账。

为什么我启用了 PayPal 或 USDT,但仍然无法支付?

WooCommerce 插件只负责传递对应的 API type。易支付服务端必须已经安装、启用并正确配置相应的 PayPal 或 USDT 支付插件。

可以跳转到不指定通道的聚合收银台吗?

当前开源版有意采用独立支付方式,不提供空 type 的聚合收银台。这样客户选择的方式、订单记录和回调通道可以保持一致。

支付成功后订单没有自动完成怎么办?

先检查异步通知地址是否能被公网访问,再检查防火墙、缓存、商户密钥、订单金额和 epay-callback 日志。只有浏览器跳回网站,不代表异步回调已经成功。

总结

新版 EPay for WooCommerce 把旧教程中依赖收费插件的流程改成了可公开检查、可持续维护的 GitHub 开源方案。它适合希望把 WooCommerce 与自有易支付服务端连接起来,并在结账页提供多个独立支付通道的用户。

如果这篇教程对你有帮助,欢迎访问 GitHub 项目点一个 Star,也欢迎订阅我的 YouTube 频道。后续我还会继续更新易支付、WooCommerce、跨境收款、银行卡支付和 USDT 支付方面的实际演示。

查看 GitHub 开源项目  |  订阅八道科技 YouTube 频道

免责声明:本文仅用于技术交流和插件配置演示,不构成金融、法律或支付合规建议。请确保你的业务、商品、客户地区、收款账户和支付通道符合所在地法律、平台规则及收单机构要求。