M2Pool ETH Payment Gateway for WordPress
WordPress 支付网关插件,支持以太坊 (ETH) 交易的支付、监听和返回支付结果。
功能特性
- ✅ 集成 WooCommerce 支付网关
- ✅ 支持 ETH 和 USDT 支付
- ✅ 自动监听支付状态
- ✅ 支持 Webhook 回调
- ✅ 支付状态实时更新
- ✅ 完整的订单管理
安装要求
- WordPress 5.0+
- WooCommerce 3.0+
- PHP 7.4+
安装步骤
- 将插件文件夹上传到
/wp-content/plugins/目录 - 在 WordPress 后台激活插件
- 进入
设置 > M2Pool ETH 支付配置 API 地址和密钥 - 在
WooCommerce > 设置 > 支付中启用并配置支付网关
配置说明
基本设置
- API 地址: 支付系统的 API 地址(例如:
http://localhost:8080) - API 密钥: 用于签名验证的密钥(与后端系统的
msgKey对应) - 接收地址: 用于接收支付的以太坊地址
- 监听间隔: 检查支付状态的间隔时间(秒)
Webhook 配置
Webhook URL: https://your-site.com/wp-json/m2pool-eth/v1/webhook
将此 URL 配置到您的支付系统中,以便接收支付状态更新。
API 接口说明
插件需要与后端支付系统通信。如果后端系统只支持 RabbitMQ,您需要创建一个中间 API 服务。
需要的 API 接口
1. 创建支付请求
POST /api/payment/create
请求体:
{
"queue_id": "wp_123_1234567890",
"chain": "ETH",
"symbol": "ETH",
"from_address": "0x...",
"to_address": "0x...",
"amount": 0.1,
"fee": 0,
"timestamp": 1234567890,
"sign": "signature_hash"
}
响应:
{
"success": true,
"queue_id": "wp_123_1234567890"
}
2. 查询支付状态
GET /api/payment/status/{queue_id}
响应:
{
"queue_id": "wp_123_1234567890",
"status": 1,
"tx_hash": "0x...",
"block_height": 12345,
"amount": 0.1
}
状态码说明:
0: 待支付1: 支付成功2: 待确认3: 支付失败
中间 API 服务
如果您的后端系统只支持 RabbitMQ,可以创建一个简单的 HTTP API 服务来桥接 WordPress 和 RabbitMQ。
示例代码(Go):
package main
import (
"encoding/json"
"log"
"net/http"
"github.com/streadway/amqp"
)
func createPaymentHandler(w http.ResponseWriter, r *http.Request) {
var req PaymentRequest
json.NewDecoder(r.Body).Decode(&req)
// 发送到 RabbitMQ
conn, _ := amqp.Dial("amqp://guest:guest@localhost:5672/")
ch, _ := conn.Channel()
body, _ := json.Marshal(req)
ch.Publish("pay.exchange", "pay.auto.routing.key", false, false, amqp.Publishing{
ContentType: "application/json",
Body: body,
})
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(map[string]bool{"success": true})
}
func main() {
http.HandleFunc("/api/payment/create", createPaymentHandler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
数据库结构
插件会自动创建以下数据库表:
wp_m2pool_eth_payments: 存储支付记录
表结构:
id: 主键order_id: WooCommerce 订单 IDqueue_id: 支付队列 IDfrom_address: 发送地址to_address: 接收地址amount: 支付金额fee: 手续费chain: 链名称symbol: 代币符号tx_hash: 交易哈希block_height: 区块高度status: 支付状态created_at: 创建时间updated_at: 更新时间
使用流程
- 客户选择 ETH 支付方式
- 系统生成支付地址和金额
- 客户向指定地址支付
- 系统自动监听支付状态
- 支付确认后自动更新订单状态
开发说明
文件结构
m2pool-eth-payment/
├── m2pool-eth-payment.php # 主插件文件
├── includes/
│ ├── class-m2pool-eth-gateway.php # 支付网关类
│ ├── class-m2pool-eth-api.php # API 客户端
│ └── class-m2pool-eth-listener.php # 支付监听器
├── templates/
│ ├── settings.php # 设置页面模板
│ └── payment-instructions.php # 支付说明模板
└── README.md
扩展开发
要添加新的功能,可以:
- 扩展
M2Pool_ETH_Gateway类添加新的支付方式 - 扩展
M2Pool_ETH_API类添加新的 API 接口 - 修改
M2Pool_ETH_Listener类自定义监听逻辑
许可证
MIT License
支持
如有问题,请提交 Issue 或联系开发团队。