main
007Pay Go Merchant SDK / CLI
这是 007Pay 商户应用端 Go SDK,包含:
pay007SDK 包:创建订单、查询订单、退款、订单列表、手动入账、收益统计007payCLI:可在其他项目或脚本中快速调试接入- 与平台一致的
pid + key + MD5签名工具
安装
作为独立子项目使用:
cd merchant-sdk-go
go test ./...
go build -o bin/007pay ./cmd/007pay
发布到自己的 Git 仓库后,其他项目可直接引入:
go get gitea.s1f.ren/shiran/007pay-sdk.git
SDK 用法
package main
import (
"context"
"fmt"
"log"
pay007 "gitea.s1f.ren/shiran/007pay-sdk.git"
)
func main() {
client, err := pay007.NewClient(
"http://127.0.0.1:8081",
"your-pid",
"your-secret-key",
)
if err != nil {
log.Fatal(err)
}
order, err := client.Submit(context.Background(), pay007.SubmitRequest{
OutTradeNo: "M202607100001",
Name: "测试订单",
Money: "0.01",
Type: "alipay",
ClientType: "pc",
NotifyURL: "https://merchant.example.com/pay/notify",
ReturnURL: "https://merchant.example.com/pay/return",
ExpireTime: "15", // 可选,分钟数或绝对时间;默认 10 分钟
})
if err != nil {
log.Fatal(err)
}
fmt.Println(order.CashierURL)
fmt.Println(order.ExpireTime, order.PageToken)
}
查询订单会调用平台商户查询接口;平台侧会在待支付时主动通过通道查询订单状态,例如支付宝会走 alipay.trade.query,并返回 completed 与 channel_checked。
result, err := client.Query(context.Background(), pay007.QueryRequest{
OutTradeNo: "M202607100001",
})
if err != nil {
log.Fatal(err)
}
if result.Completed {
fmt.Println("paid")
}
CLI 用法
CLI 支持环境变量:
export PAY007_BASE_URL=http://127.0.0.1:8081
export PAY007_PID=your-pid
export PAY007_KEY=your-secret-key
创建订单:
007pay submit \
--out-trade-no M202607100001 \
--name "测试订单" \
--money 0.01 \
--type alipay \
--clienttype pc \
--notify-url https://merchant.example.com/pay/notify \
--return-url https://merchant.example.com/pay/return
查询订单:
007pay query --out-trade-no M202607100001
退款:
007pay refund --out-trade-no M202607100001 --money 0.01 --reason "用户退款"
订单列表:
007pay orders --status 1 --page 1 --page-size 20
收益统计:
007pay stats --begin "2026-07-01 00:00:00" --end "2026-07-31 23:59:59"
StatsResponse includes order counts by state, manual-order count, gross and
received amounts, successful refund count/amount, fee, and net amount. All
amount fields use cents.
签名调试:
007pay sign out_trade_no=M202607100001 name=测试订单 money=0.01 type=alipay
签名规则
与平台 utils/sign 保持一致:
- 过滤空值、
sign、sign_type - 参数按 key 升序排序
- 拼接为
a=1&b=2 - 末尾追加应用密钥
- MD5 后转大写
SDK 中可直接使用:
sign := pay007.BuildSign(params, secret)
ok := pay007.VerifySign(params, secret)
Languages
Go
100%