所有URI均基于微信支付 API 地址: https://api.mch.weixin.qq.com
方法名 | HTTP 请求 | 描述 |
---|---|---|
CloseOrder | Post /v3/pay/transactions/out-trade-no/{out_trade_no}/close | 关闭订单 |
Prepay | Post /v3/pay/transactions/jsapi | JSAPI支付下单 |
QueryOrderById | Get /v3/pay/transactions/id/{transaction_id} | 微信支付订单号查询订单 |
QueryOrderByOutTradeNo | Get /v3/pay/transactions/out-trade-no/{out_trade_no} | 商户订单号查询订单 |
void CloseOrder(CloseOrderRequest)
关闭订单
package main
import (
"context"
"log"
"github.com/wechatpay-apiv3/wechatpay-go/core"
"github.com/wechatpay-apiv3/wechatpay-go/core/option"
"github.com/wechatpay-apiv3/wechatpay-go/services/payments/jsapi"
"github.com/wechatpay-apiv3/wechatpay-go/utils"
)
func main() {
var (
mchID string = "190000****" // 商户号
mchCertificateSerialNumber string = "3775************************************" // 商户证书序列号
mchAPIv3Key string = "2ab9****************************" // 商户APIv3密钥
)
// 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
if err != nil {
log.Print("load merchant private key error")
}
ctx := context.Background()
// 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
opts := []core.ClientOption{
option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
}
client, err := core.NewClient(ctx, opts...)
if err != nil {
log.Printf("new wechat pay client err:%s", err)
}
svc := jsapi.JsapiApiService{Client: client}
result, err := svc.CloseOrder(ctx,
jsapi.CloseOrderRequest{
OutTradeNo: core.String("OutTradeNo_example"),
Mchid: core.String("1230000109"),
},
)
if err != nil {
// 处理错误
log.Printf("call CloseOrder err:%s", err)
} else {
// 处理返回结果
log.Printf("status=%d", result.Response.StatusCode)
}
}
参数名 | 参数类型 | 参数描述 |
---|---|---|
ctx | context.Context | Golang 上下文,可用于日志、请求取消、请求跟踪等功能 |
req | CloseOrderRequest | API payments/jsapi 所定义的本接口需要的所有参数,包括Path /Query /Body 3类参数 |
Name | Type | Description |
---|---|---|
result | *core.APIResult | 本次 API 访问的请求与应答信息 |
err | error | 本次 API 访问中发生的错误,当且仅当 API 失败时存在 |
[返回顶部] [返回接口列表] [返回类型列表] [返回服务README]
PrepayResponse Prepay(PrepayRequest)
JSAPI支付下单
package main
import (
"context"
"log"
"time"
"github.com/wechatpay-apiv3/wechatpay-go/core"
"github.com/wechatpay-apiv3/wechatpay-go/core/option"
"github.com/wechatpay-apiv3/wechatpay-go/services/payments/jsapi"
"github.com/wechatpay-apiv3/wechatpay-go/utils"
)
func main() {
var (
mchID string = "190000****" // 商户号
mchCertificateSerialNumber string = "3775************************************" // 商户证书序列号
mchAPIv3Key string = "2ab9****************************" // 商户APIv3密钥
)
// 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
if err != nil {
log.Print("load merchant private key error")
}
ctx := context.Background()
// 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
opts := []core.ClientOption{
option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
}
client, err := core.NewClient(ctx, opts...)
if err != nil {
log.Printf("new wechat pay client err:%s", err)
}
svc := jsapi.JsapiApiService{Client: client}
resp, result, err := svc.Prepay(ctx,
jsapi.PrepayRequest{
Appid: core.String("wxd678efh567hg6787"),
Mchid: core.String("1230000109"),
Description: core.String("Image形象店-深圳腾大-QQ公仔"),
OutTradeNo: core.String("1217752501201407033233368018"),
TimeExpire: core.Time(time.Now()),
Attach: core.String("自定义数据说明"),
NotifyUrl: core.String("https://www.weixin.qq.com/wxpay/pay.php"),
GoodsTag: core.String("WXG"),
LimitPay: []string{"LimitPay_example"},
SupportFapiao: core.Bool(false),
Amount: &jsapi.Amount{
Currency: core.String("CNY"),
Total: core.Int64(100),
},
Payer: &jsapi.Payer{
Openid: core.String("oUpF8uMuAJO_M2pxb1Q9zNjWeS6o"),
},
Detail: &jsapi.Detail{
CostPrice: core.Int64(608800),
GoodsDetail: []jsapi.GoodsDetail{jsapi.GoodsDetail{
GoodsName: core.String("iPhoneX 256G"),
MerchantGoodsId: core.String("ABC"),
Quantity: core.Int64(1),
UnitPrice: core.Int64(828800),
WechatpayGoodsId: core.String("1001"),
}},
InvoiceId: core.String("wx123"),
},
SceneInfo: &jsapi.SceneInfo{
DeviceId: core.String("013467007045764"),
PayerClientIp: core.String("14.23.150.211"),
StoreInfo: &jsapi.StoreInfo{
Address: core.String("广东省深圳市南山区科技中一道10000号"),
AreaCode: core.String("440305"),
Id: core.String("0001"),
Name: core.String("腾讯大厦分店"),
},
},
SettleInfo: &jsapi.SettleInfo{
ProfitSharing: core.Bool(false),
},
},
)
if err != nil {
// 处理错误
log.Printf("call Prepay err:%s", err)
} else {
// 处理返回结果
log.Printf("status=%d resp=%s", result.Response.StatusCode, resp)
}
}
参数名 | 参数类型 | 参数描述 |
---|---|---|
ctx | context.Context | Golang 上下文,可用于日志、请求取消、请求跟踪等功能 |
req | PrepayRequest | API payments/jsapi 所定义的本接口需要的所有参数,包括Path /Query /Body 3类参数 |
Name | Type | Description |
---|---|---|
resp | *PrepayResponse | 结构化的接口返回结果 |
result | *core.APIResult | 本次 API 访问的请求与应答信息 |
err | error | 本次 API 访问中发生的错误,当且仅当 API 失败时存在 |
[返回顶部] [返回接口列表] [返回类型列表] [返回服务README]
payments.Transaction QueryOrderById(QueryOrderByIdRequest)
微信支付订单号查询订单
package main
import (
"context"
"log"
"github.com/wechatpay-apiv3/wechatpay-go/core"
"github.com/wechatpay-apiv3/wechatpay-go/core/option"
"github.com/wechatpay-apiv3/wechatpay-go/services/payments/jsapi"
"github.com/wechatpay-apiv3/wechatpay-go/utils"
)
func main() {
var (
mchID string = "190000****" // 商户号
mchCertificateSerialNumber string = "3775************************************" // 商户证书序列号
mchAPIv3Key string = "2ab9****************************" // 商户APIv3密钥
)
// 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
if err != nil {
log.Print("load merchant private key error")
}
ctx := context.Background()
// 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
opts := []core.ClientOption{
option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
}
client, err := core.NewClient(ctx, opts...)
if err != nil {
log.Printf("new wechat pay client err:%s", err)
}
svc := jsapi.JsapiApiService{Client: client}
resp, result, err := svc.QueryOrderById(ctx,
jsapi.QueryOrderByIdRequest{
TransactionId: core.String("TransactionId_example"),
Mchid: core.String("Mchid_example"),
},
)
if err != nil {
// 处理错误
log.Printf("call QueryOrderById err:%s", err)
} else {
// 处理返回结果
log.Printf("status=%d resp=%s", result.Response.StatusCode, resp)
}
}
参数名 | 参数类型 | 参数描述 |
---|---|---|
ctx | context.Context | Golang 上下文,可用于日志、请求取消、请求跟踪等功能 |
req | QueryOrderByIdRequest | API payments/jsapi 所定义的本接口需要的所有参数,包括Path /Query /Body 3类参数 |
Name | Type | Description |
---|---|---|
resp | *payments.Transaction | 结构化的接口返回结果 |
result | *core.APIResult | 本次 API 访问的请求与应答信息 |
err | error | 本次 API 访问中发生的错误,当且仅当 API 失败时存在 |
[返回顶部] [返回接口列表] [返回类型列表] [返回服务README]
payments.Transaction QueryOrderByOutTradeNo(QueryOrderByOutTradeNoRequest)
商户订单号查询订单
package main
import (
"context"
"log"
"github.com/wechatpay-apiv3/wechatpay-go/core"
"github.com/wechatpay-apiv3/wechatpay-go/core/option"
"github.com/wechatpay-apiv3/wechatpay-go/services/payments/jsapi"
"github.com/wechatpay-apiv3/wechatpay-go/utils"
)
func main() {
var (
mchID string = "190000****" // 商户号
mchCertificateSerialNumber string = "3775************************************" // 商户证书序列号
mchAPIv3Key string = "2ab9****************************" // 商户APIv3密钥
)
// 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
if err != nil {
log.Print("load merchant private key error")
}
ctx := context.Background()
// 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
opts := []core.ClientOption{
option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
}
client, err := core.NewClient(ctx, opts...)
if err != nil {
log.Printf("new wechat pay client err:%s", err)
}
svc := jsapi.JsapiApiService{Client: client}
resp, result, err := svc.QueryOrderByOutTradeNo(ctx,
jsapi.QueryOrderByOutTradeNoRequest{
OutTradeNo: core.String("OutTradeNo_example"),
Mchid: core.String("Mchid_example"),
},
)
if err != nil {
// 处理错误
log.Printf("call QueryOrderByOutTradeNo err:%s", err)
} else {
// 处理返回结果
log.Printf("status=%d resp=%s", result.Response.StatusCode, resp)
}
}
参数名 | 参数类型 | 参数描述 |
---|---|---|
ctx | context.Context | Golang 上下文,可用于日志、请求取消、请求跟踪等功能 |
req | QueryOrderByOutTradeNoRequest | API payments/jsapi 所定义的本接口需要的所有参数,包括Path /Query /Body 3类参数 |
Name | Type | Description |
---|---|---|
resp | *payments.Transaction | 结构化的接口返回结果 |
result | *core.APIResult | 本次 API 访问的请求与应答信息 |
err | error | 本次 API 访问中发生的错误,当且仅当 API 失败时存在 |