Files
2025-11-18 17:26:07 +08:00
..
2025-11-18 17:26:07 +08:00
2025-11-18 17:26:07 +08:00
2025-11-18 17:26:07 +08:00
2025-11-18 17:26:07 +08:00
2025-11-18 17:26:07 +08:00
2025-11-18 17:26:07 +08:00

M2Pool ETH Payment Gateway for WordPress

WordPress 支付网关插件,支持以太坊 (ETH) 交易的支付、监听和返回支付结果。

功能特性

  • 集成 WooCommerce 支付网关
  • 支持 ETH 和 USDT 支付
  • 自动监听支付状态
  • 支持 Webhook 回调
  • 支付状态实时更新
  • 完整的订单管理

安装要求

  • WordPress 5.0+
  • WooCommerce 3.0+
  • PHP 7.4+

安装步骤

  1. 将插件文件夹上传到 /wp-content/plugins/ 目录
  2. 在 WordPress 后台激活插件
  3. 进入 设置 > M2Pool ETH 支付 配置 API 地址和密钥
  4. WooCommerce > 设置 > 支付 中启用并配置支付网关

配置说明

基本设置

  1. API 地址: 支付系统的 API 地址(例如: http://localhost:8080
  2. API 密钥: 用于签名验证的密钥(与后端系统的 msgKey 对应)
  3. 接收地址: 用于接收支付的以太坊地址
  4. 监听间隔: 检查支付状态的间隔时间(秒)

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 订单 ID
  • queue_id: 支付队列 ID
  • from_address: 发送地址
  • to_address: 接收地址
  • amount: 支付金额
  • fee: 手续费
  • chain: 链名称
  • symbol: 代币符号
  • tx_hash: 交易哈希
  • block_height: 区块高度
  • status: 支付状态
  • created_at: 创建时间
  • updated_at: 更新时间

使用流程

  1. 客户选择 ETH 支付方式
  2. 系统生成支付地址和金额
  3. 客户向指定地址支付
  4. 系统自动监听支付状态
  5. 支付确认后自动更新订单状态

开发说明

文件结构

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

扩展开发

要添加新的功能,可以:

  1. 扩展 M2Pool_ETH_Gateway 类添加新的支付方式
  2. 扩展 M2Pool_ETH_API 类添加新的 API 接口
  3. 修改 M2Pool_ETH_Listener 类自定义监听逻辑

许可证

MIT License

支持

如有问题,请提交 Issue 或联系开发团队。