首頁>技術>

作為一個後端開發人員來說,微信開發已經是必備的技能之一了,今天小編就來分享一個相關的類庫shenghui0779/gochat(以下簡稱wechat)。這個類庫簡單易用,看原始碼的時候目錄結構一目了然,可以看出作者的思路很清晰,功能也挺豐富日常開發來絕對夠用。下面跟著小編的節湊來一探究竟吧。

目錄結構mch: 商戶平臺相關業務, 下單、支付、退款、查詢、委託代扣、企業付款、企業紅包 等mp:小程式端相關業務, 小程式授權、使用者資料解析、訊息傳送、二維碼生成、訊息 等pub:公眾號相關業務, 網頁授權、選單、模板訊息、訊息回覆、使用者管理、訊息轉客服 等wechat.go 包的入口,獲取以上三個業務的例項一、支付

下單用法

import (    "github.com/iiinsomnia/gochat"    "github.com/iiinsomnia/gochat/mch")// UnifiedOrder 統一下單資料  直接引用包裡的結構體即可type UnifiedOrder struct {\t// 必填引數\tOutTradeNO     string // 商戶系統內部的訂單號,32個字元內、可包含字母,其他說明見商戶訂單號\tTotalFee       int    // 訂單總金額,單位為分,詳見支付金額\tSpbillCreateIP string // APP和網頁支付提交使用者端ip,Native支付填呼叫微信支付API的機器IP\tTradeType      string // 取值如下:JSAPI,NATIVE,APP,MWEB,詳細說明見引數規定\tBody           string // 商品或支付單簡要描述\tNotifyURL      string // 接收微信支付非同步通知回撥地址,通知url必須為直接可訪問的url,不能攜帶引數\t// 選填引數\tDeviceInfo string // 終端裝置號(門店號或收銀裝置ID),注意:PC網頁或公眾號內支付請傳"WEB"\tDetail     string // 商品名稱明細列表\tAttach     string // 附加資料,在查詢API和支付通知中原樣返回,該欄位主要用於商戶攜帶訂單的自定義資料\tFeeType    string // 符合ISO 4217標準的三位字母程式碼,預設人民幣:CNY,其他值列表詳見貨幣型別\tTimeStart  string // 訂單生成時間,格式為yyyyMMddHHmmss,如:2009年12月25日9點10分10秒 表示為:20091225091010\tTimeExpire string // 訂單失效時間,格式為yyyyMMddHHmmss,如:2009年12月27日9點10分10秒 表示為:20091227091010\tGoodsTag   string // 商品標記,代金券或立減優惠功能的引數,說明詳見代金券或立減優惠\tProductID  string // trade_type=NATIVE,此引數必傳。此id為二維碼中包含的商品ID,商戶自行定義\tLimitPay   string // no_credit--指定不能使用信用卡支付\tOpenID     string // trade_type=JSAPI,此引數必傳,使用者在商戶appid下的唯一標識\tReceipt    bool   // 是否在支付成功訊息和支付詳情頁中出現開票入口,注:需要在微信支付商戶平臺或微信公眾平臺開通電子發票功能\tSceneInfo  string // 該欄位用於上報支付的場景資訊}// 初始化例項wxmch := gochat.NewWXMch(appid, apikey, cert)r, err := wxmch.Order().Unify(order)if err != nil {    // 錯誤處理...}if r["result_code"] != mch.ResultSuccess {    // 判斷微信的返回狀態碼,失敗處理...}// 成功邏輯處理...// 拿到預支付的idprepayID := r["prepay_id"]// 獲取支付簽名的票據,返回給前端和app就能拉取支付介面了// APPdata := wxmch.APPAPI(prepayID)// JSdata := wxmch.JSAPI(prepayID)

查詢訂單狀態

// RefundData 退款資料type RefundData struct {\t// 必填引數\tOutRefundNO string // 商戶系統內部的退款單號,商戶系統內部唯一,同一退款單號多次請求只退一筆\tTotalFee    int    // 訂單總金額,單位為分,只能為整數,詳見支付金額\tRefundFee   int    // 退款總金額,訂單總金額,單位為分,只能為整數,詳見支付金額\t// 選填引數\tRefundFeeType string // 貨幣型別,符合ISO 4217標準的三位字母程式碼,預設人民幣:CNY,其他值列表詳見貨幣型別\tRefundDesc    string // 若商戶傳入,會在下發給使用者的退款訊息中體現退款原因\tRefundAccount string // 退款資金來源,僅針對老資金流商戶使用\tNotifyURL     string // 非同步接收微信支付退款結果通知的回撥地址,通知URL必須為網路可訪問的url,不允許帶引數}// 根據微信訂單號查詢r, err := wxmch.Order().QueryByTransactionID(transactionID)// 根據商戶訂單號查詢r, err := wxmch.Order().QueryByOutTradeNO(transactionID)// 關閉訂單r, err := wxmch.Order().Close(outTradeNO)

退款

// 根據微信訂單號退款r, err := wxmch.Refund().RefundByTransactionID(transactionID, refundData)if err != nil {    // 錯誤處理...}if r["result_code"] != mch.ResultSuccess {    // 失敗處理...}// 成功邏輯處理...// 根據商戶訂單號退款r, err := wxmch.Refund().RefundByOutTradeNO(outTradeNO, refundData)if err != nil {    // 錯誤處理...}if r["result_code"] != mch.ResultSuccess {    // 失敗處理...}// 成功邏輯處理...
小程式

登入授權

import (    "github.com/iiinsomnia/gochat"    "github.com/iiinsomnia/gochat/mp"    "github.com/iiinsomnia/gochat/utils")// 初始化小程式例項wxmp := gochat.NewWXMP(appid, appsecret)// 授權 session, err := wxmp.Sns().Code2Session(code)// 資料校驗解密// 資料簽名校驗if signature != utils.SHA1(rawData+sessionKey) {  return errors.New("簽名校驗失敗")}// 資料解密bizDataCrypt := wxmp.BizDataCrypt(encryptedData, sessionKey, iv)if err := bizDataCrypt.Decrypt(); err != nil {  return err}// 解密後取使用者資訊bizData, err := bizDataCrypt.GetUserData()if err != nil {  return err}

獲取access_token

accessToken, err := wxmp.CgiBin().GetAccessToken()if err != nil {    return err}// TODO: 儲存 access_token ...

因 access_token 每日獲取次數有限且含有效期,故服務端應妥善儲存 access_token 並定時重新整理

公眾號
// 獲取公眾號例項pub := gochat.NewWXPub(accountid, appid, appsecret, signToken, encodingAESKey)

整個包看下來還是蠻簡單,使用方便。想要了解更多內容可以去檢視作者的原始碼和使用說明。

地址: https://github.com/shenghui0779/gochat/wiki

454

微信

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 使用electron將vue-cli3.x專案打包為桌面應用