icbc

package module
v0.0.0-...-8d89518 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2020 License: MIT Imports: 17 Imported by: 0

README

icbc

GoDoc License

工行开放平台 SDK for Go

使用指南

安装工行开放平台 SDK

go get -u github.com/go-wheels/icbc

初始化工行开放平台 SDK

options := icbc.Options{
    AppID:            "应用ID", 
    AppPrivateKey:    "应用私钥",
    GatewayPublicKey: "网关公钥",
}
client, _ := icbc.NewClient(options)

二维码扫码支付 API

二维码生成

msgID := "消息通讯唯一编号"

reqBiz := &icbc.QrcodeGenerateRequestV2Biz{
    MerID:           "商户号",
    StoreCode:       "e生活号",
    OutTradeNo:      "商户订单号",
    OrderAmt:        "订单总金额 (单位: 分)",
    TradeDate:       "商户订单生成日期 (格式: yyyyMMdd)",
    TradeTime:       "商户订单生成时间 (格式: HHmmss)",
    Attach:          "商户附加数据 (原样返回)",
    PayExpire:       "二维码有效期 (单位: 秒)",
    NotifyURL:       "商户接收支付成功通知消息URL (当notify_flag为1时必填)",
    TporderCreateIP: "商户订单生成机器IP",
    SpFlag:          "扫码后是否需要跳转分行 (取值: 0 或 1)",
    NotifyFlag:      "商户是否开启通知接口 (取值: 0 或 1)",
}

respBiz := &icbc.QrcodeGenerateResponseV2Biz{}

client.Execute(msgID, requestBiz, respBiz)

log.Printf("%#v", respBiz)

二维码查询

msgID := "消息通讯唯一编号"

reqBiz := &icbc.QrcodeQueryRequestV2Biz{
    MerID:      "商户号",
    CustID:     "支付时工行返回的用户唯一标识",
    OutTradeNo: "商户订单号",
    OrderID:    "行内订单号",
} // 商户订单号或行内订单号必须其中一个不为空

respBiz := &icbc.QrcodeQueryResponseV2Biz{}

client.Execute(msgID, requestBiz, respBiz)

log.Printf("%#v", respBiz)

通知验签

http.HandleFunc("/notify", func(w http.ResponseWriter, r *http.Request) {
    err := client.VerifyNotification(r)
    if err != nil {
        // 验签失败
        return
    }
    // 验签成功
    log.Printf("%#v", params)
})

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultLocation, _ = time.LoadLocation("Asia/Shanghai")
)

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(options Options) (client *Client, err error)

func (*Client) Execute

func (c *Client) Execute(msgID string, reqBiz RequestBiz, respBiz interface{}) (err error)

func (*Client) VerifyNotification

func (c *Client) VerifyNotification(req *http.Request) (err error)

type Options

type Options struct {
	Timeout          time.Duration
	AppID            string
	AppPrivateKey    string
	GatewayPublicKey string
}

type QrcodeGenerateRequestV2Biz

type QrcodeGenerateRequestV2Biz struct {
	MerID           string `json:"mer_id"`
	StoreCode       string `json:"store_code"`
	OutTradeNo      string `json:"out_trade_no"`
	OrderAmt        string `json:"order_amt"`
	TradeDate       string `json:"trade_date"`
	TradeTime       string `json:"trade_time"`
	Attach          string `json:"attach,omitempty"`
	PayExpire       string `json:"pay_expire"`
	NotifyURL       string `json:"notify_url,omitempty"`
	TporderCreateIP string `json:"tporder_create_ip"`
	SpFlag          string `json:"sp_flag,omitempty"`
	NotifyFlag      string `json:"notify_flag"`
}

func (QrcodeGenerateRequestV2Biz) ServicePath

func (QrcodeGenerateRequestV2Biz) ServicePath() string

type QrcodeGenerateResponseV2Biz

type QrcodeGenerateResponseV2Biz struct {
	ReturnCode int    `json:"-"`
	ReturnMsg  string `json:"return_msg"`
	MsgID      string `json:"msg_id"`
	Qrcode     string `json:"qrcode"`
	Attach     string `json:"attach"`
}

type QrcodeQueryRequestV2Biz

type QrcodeQueryRequestV2Biz struct {
	MerID      string `json:"mer_id"`
	CustID     string `json:"cust_id"`
	OutTradeNo string `json:"out_trade_no"`
	OrderID    string `json:"order_id"`
}

func (QrcodeQueryRequestV2Biz) ServicePath

func (QrcodeQueryRequestV2Biz) ServicePath() string

type QrcodeQueryResponseV2Biz

type QrcodeQueryResponseV2Biz struct {
	ReturnCode   int    `json:"-"`
	ReturnMsg    string `json:"return_msg"`
	MsgID        string `json:"msg_id"`
	PayStatus    string `json:"pay_status"`
	CustID       string `json:"cust_id"`
	CardNo       string `json:"card_no"`
	TotalAmt     string `json:"total_amt"`
	PointAmt     string `json:"point_amt"`
	EcouponAmt   string `json:"ecoupon_amt"`
	MerDiscAmt   string `json:"mer_disc_amt"`
	CouponAmt    string `json:"coupon_amt"`
	BankDiscAmt  string `json:"bank_disc_amt"`
	PaymentAmt   string `json:"payment_amt"`
	OutTradeNo   string `json:"out_trade_no"`
	OrderID      string `json:"order_id"`
	PayTime      string `json:"pay_time"`
	TotalDiscAmt string `json:"total_disc_amt"`
}

type QrcodeReverseRequestV2Biz

type QrcodeReverseRequestV2Biz struct {
	MerID      string `json:"mer_id"`
	CustID     string `json:"cust_id"`
	OutTradeNo string `json:"out_trade_no"`
	OrderID    string `json:"order_id"`
	RejectNo   string `json:"reject_no"`
	RejectAmt  string `json:"reject_amt"`
	OperID     string `json:"oper_id"`
}

func (QrcodeReverseRequestV2Biz) ServicePath

func (QrcodeReverseRequestV2Biz) ServicePath() string

type QrcodeReverseResponseV2Biz

type QrcodeReverseResponseV2Biz struct {
	ReturnCode    int    `json:"-"`
	ReturnMsg     string `json:"return_msg"`
	MsgID         string `json:"msg_id"`
	OutTradeNo    string `json:"out_trade_no"`
	OrderID       string `json:"order_id"`
	CustID        string `json:"cust_id"`
	RejectNo      string `json:"reject_no"`
	RealRejectAmt string `json:"real_reject_amt"`
	RejectAmt     string `json:"reject_amt"`
	RejectPoint   string `json:"reject_point"`
	RejectEcoupon string `json:"reject_ecoupon"`
	CardNo        string `json:"card_no"`
}

type RequestBiz

type RequestBiz interface {
	ServicePath() string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL