2026-07-10 17:18:58 +08:00
2026-07-10 17:18:58 +08:00
2026-07-10 17:18:58 +08:00
2026-07-10 17:18:58 +08:00
2026-07-10 17:18:58 +08:00

007Pay Go Merchant SDK / CLI

这是 007Pay 商户应用端 Go SDK,包含:

  • pay007 SDK 包:创建订单、查询订单、退款、订单列表、手动入账、收益统计
  • 007pay CLI:可在其他项目或脚本中快速调试接入
  • 与平台一致的 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,并返回 completedchannel_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 保持一致:

  1. 过滤空值、signsign_type
  2. 参数按 key 升序排序
  3. 拼接为 a=1&b=2
  4. 末尾追加应用密钥
  5. MD5 后转大写

SDK 中可直接使用:

sign := pay007.BuildSign(params, secret)
ok := pay007.VerifySign(params, secret)
S
Description
零零七云计算支付平台SDK
Readme
45 KiB
Languages
Go 100%