微信支付官方 sdk for golang
來源:互聯網
上載者:User
# wxpay for golang註:本人照著支付官方 SDK Java 版,用 Go 語言實現的一個支付 SDK,與 Java 版功能一致,具備輕量易上手,且功能齊全的特點,理論上效能也會比 Java 版的更快。Github地址:[wxpay](https://github.com/objcoding/wxpay)## 支付開發文檔API對[支付開發人員文檔](https://pay.weixin.qq.com/wiki/doc/api/index.html)中給出的API進行了封裝。wxpay提供了對應的方法:| 方法名 | 說明 || ---------------- | ----------- || MicroPay | 刷卡支付 || UnifiedOrder | 統一下單 || OrderQuery | 查詢訂單 || Reverse | 撤銷訂單 || CloseOrder | 關閉訂單 || Refund | 申請退款 || RefundQuery | 查詢退款 || DownloadBill | 下載對賬單 || Report | 交易保障 || ShortUrl | 轉換短連結 || AuthCodeToOpenid | 授權碼查詢openid |* 參數為`Params`類型,傳回型別也是`Params`,`Params` 是一個 map[string]string 類型的結構體。* 方法內部會將參數會轉換成含有`appid`、`mch_id`、`nonce_str`、`sign\_type`和`sign`的XML;* 預設使用MD5進行簽名;* 通過HTTPS請求得到返回資料後會對其做必要的處理(例如驗證簽名,簽名錯誤則拋出異常)。* 對於downloadBill,無論是否成功都返回Map,且都含有`return_code`和`return_msg`。若成功,其中`return_code`為`SUCCESS`,另外`data`對應對賬單資料。## 安裝```go get github.com/objcoding/wxpay```## 樣本```// 建立支付用戶端client := wxpay.NewClient(wxpay.NewAccount{AppID: "appid",MchID: "mchid",ApiKey: "apiKey",}, false) // sandbox環境請傳true// 統一下單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)``````// 建立支付賬戶account := wxpay.NewAccount("appid", "mchid", "apiKey")// 設定認證account.SetCertData("認證地址")// 建立支付用戶端client := wxpay.NewClient(account, false) // sandbox環境請傳true// 設定http請求逾時時間client.SetHttpConnectTimeoutMs(2000)// 設定http讀取資訊流逾時時間client.SetHttpReadTimeoutMs(1000)// 更改簽名類型client.SetSignType(HMACSHA256)// 設定支付賬戶client.setAccount(account)``````// 簽名signStr := client.Sign(params)// 校正簽名b := client.ValidSign(params)``````// 支付或退款返回成功資訊return wxpay.Notifies{}.OK()// 支付或退款返回失敗資訊return wxpay.Notifies{}.NotOK("支付失敗或退款失敗了")```## LicenseMIT license199 次點擊 ∙ 1 贊