一個為Go語言量身定做刚夺、超級好用的微信支付SDK惧所。
GitHub地址:wxpay
微信支付開發(fā)文檔API
對微信支付開發(fā)者文檔中給出的API進(jìn)行了封裝趟据。
wxpay提供了對應(yīng)的方法:
| 方法名 | 說明 |
| ---------------- | ----------- |
| MicroPay | 刷卡支付 |
| UnifiedOrder | 統(tǒng)一下單 |
| OrderQuery | 查詢訂單 |
| Reverse | 撤銷訂單 |
| CloseOrder | 關(guān)閉訂單 |
| Refund | 申請退款 |
| RefundQuery | 查詢退款 |
| DownloadBill | 下載對賬單 |
| Report | 交易保障 |
| ShortUrl | 轉(zhuǎn)換短鏈接 |
| AuthCodeToOpenid | 授權(quán)碼查詢openid |
參數(shù)為
Params
類型盾戴,返回類型也是Params
雏掠,Params
是一個 map[string]string 類型的結(jié)構(gòu)體斩祭。方法內(nèi)部會將參數(shù)會轉(zhuǎn)換成含有
appid
、mch_id
乡话、nonce_str
摧玫、sign\_type
和sign
的XML;默認(rèn)使用MD5進(jìn)行簽名绑青;
通過HTTPS請求得到返回?cái)?shù)據(jù)后會對其做必要的處理(例如驗(yàn)證簽名诬像,簽名錯誤則拋出異常)。
對于downloadBill闸婴,無論是否成功都返回Map坏挠,且都含有
return_code
和return_msg
。若成功邪乍,其中return_code
為SUCCESS
降狠,另外data
對應(yīng)對賬單數(shù)據(jù)对竣。
安裝
go get github.com/objcoding/wxpay
示例
// 新建微信支付客戶端
client := wxpay.NewClient(wxpay.NewAccount{
AppID: "appid",
MchID: "mchid",
ApiKey: "apiKey",
}, false) // sandbox環(huán)境請傳true
// 統(tǒng)一下單
params := make(wxpay.Params)
params.SetString("body", "test").
SetString("out_trade_no", "436577857").
SetInt64("total_fee", 1).
SetString("spbill_create_ip", "127.0.0.1").
SetString("notify_url", "http://notify.objcoding.com/notify").
SetString("trade_type", "APP")
p, _ := client.UnifiedOrder(params)
// 訂單查詢
params := make(wxpay.Params)
params.SetString("out_trade_no", "3568785")
p, _ := client.OrderQuery(params)
// 退款
params := make(wxpay.Params)
params.SetString("out_trade_no", "3568785").
SetString("out_refund_no", "19374568").
SetInt64("total_fee", 1).
SetInt64("refund_fee", 1)
p, _ := client.Refund(params)
// 退款查詢
params := make(wxpay.Params)
params.SetString("out_refund_no", "3568785")
p, _ := client.RefundQuery(params)
// 創(chuàng)建支付賬戶
account := wxpay.NewAccount("appid", "mchid", "apiKey")
// 設(shè)置證書
account.SetCertData("證書地址")
// 新建微信支付客戶端
client := wxpay.NewClient(account, false) // sandbox環(huán)境請傳true
// 設(shè)置http請求超時時間
client.SetHttpConnectTimeoutMs(2000)
// 設(shè)置http讀取信息流超時時間
client.SetHttpReadTimeoutMs(1000)
// 更改簽名類型
client.SetSignType(HMACSHA256)
// 設(shè)置支付賬戶
client.setAccount(account)
// 簽名
signStr := client.Sign(params)
// 校驗(yàn)簽名
b := client.ValidSign(params)
// 支付或退款返回成功信息
return wxpay.Notifies{}.OK()
// 支付或退款返回失敗信息
return wxpay.Notifies{}.NotOK("支付失敗或退款失敗了")
License
MIT license