github.com/chanxuehong/wechat@v0.0.0-20230222024006-36f0325263cd/mch/pay/closeorder.go (about)

     1  package pay
     2  
     3  import (
     4  	"github.com/chanxuehong/wechat/mch/core"
     5  	"github.com/chanxuehong/wechat/util"
     6  )
     7  
     8  // CloseOrder 关闭订单.
     9  func CloseOrder(clt *core.Client, req map[string]string) (resp map[string]string, err error) {
    10  	return clt.PostXML(core.APIBaseURL()+"/pay/closeorder", req)
    11  }
    12  
    13  type CloseOrderRequest struct {
    14  	XMLName struct{} `xml:"xml" json:"-"`
    15  
    16  	// 必选参数
    17  	OutTradeNo string `xml:"out_trade_no"` // 商户系统内部订单号
    18  
    19  	// 可选参数
    20  	NonceStr string `xml:"nonce_str"` // 随机字符串,不长于32位。NOTE: 如果为空则系统会自动生成一个随机字符串。
    21  	SignType string `xml:"sign_type"` // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
    22  }
    23  
    24  // CloseOrder2 关闭订单.
    25  func CloseOrder2(clt *core.Client, req *CloseOrderRequest) (err error) {
    26  	m1 := make(map[string]string, 8)
    27  	m1["out_trade_no"] = req.OutTradeNo
    28  	if req.NonceStr != "" {
    29  		m1["nonce_str"] = req.NonceStr
    30  	} else {
    31  		m1["nonce_str"] = util.NonceStr()
    32  	}
    33  	if req.SignType != "" {
    34  		m1["sign_type"] = req.SignType
    35  	}
    36  
    37  	_, err = CloseOrder(clt, m1)
    38  	return
    39  }