<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          wxApi-go基于 Go 設(shè)計(jì)的微信 API

          聯(lián)合創(chuàng)作 · 2023-09-24 14:19

          wxApi-go

          針對(duì)golang設(shè)計(jì)的微信 Api 接口,涵蓋公眾號(hào)、小程序、App、商戶。 支持下單、notify 驗(yàn)證、公對(duì)私打款至銀行卡等

          根據(jù)微信的業(yè)務(wù)特征,分為兩部分:

          • 應(yīng)用類賬號(hào)下的Api
          • 商戶類賬號(hào)下的Api

          安裝

          go get github.com/blusewang/wxApi-go
          

          應(yīng)用賬號(hào)API

          訂閱號(hào)服務(wù)號(hào)、小程序、App

          •  支持連接不同的地區(qū)的微信服務(wù)器
          •  支持一行代碼從被動(dòng)消息的 http.Request 中安全取出消息成MessageData。內(nèi)部實(shí)現(xiàn)了識(shí)別并解密消息、校驗(yàn)請(qǐng)求的Query數(shù)據(jù)。
          •  支持自動(dòng)填充Query中的access_token數(shù)據(jù)。
          •  鏈?zhǔn)秸{(diào)用,讓不同需求的業(yè)務(wù)能一氣和成!

          時(shí)效性憑證安置方式約定

          access_tokenjs_sdk_ticket 這類需要每7200秒刷新一次的,放到crontab中。

          核心設(shè)計(jì)

          算法

          一個(gè)基礎(chǔ)賬號(hào)對(duì)象MpAccount,它有三個(gè)行為:

          • 為微信H5的網(wǎng)址簽名 UrlSign(url string)
          • 讀取被動(dòng)消息通知 ReadMessage(req *http.Request)
          • 主動(dòng)發(fā)出請(qǐng)求 NewMpReq(path mp_api.MpApi) *mpReq

          數(shù)據(jù)結(jié)構(gòu)

          只實(shí)現(xiàn)了很有限的數(shù)據(jù)。若需要使用本庫自帶的數(shù)據(jù)結(jié)構(gòu)之外的API。完全可以參考本庫的數(shù)據(jù)結(jié)構(gòu)寫法,自行另起書寫(注意不同業(yè)務(wù)的tag名稱不同)。 并能得到一樣的兼容體驗(yàn)!

          舉例

          	a := MpAccount{
          		AppId:       "your_app_id",
          		AccessToken: "38_XtyPcVUODHd8q3TNYPVGAZ2WNRx_nW4gnclObbv78tsEa1Y_bwdkLALDMEb4372wYqcC_CanjU9O0Zw4MqHiqxrIukk_G4ElAUxyv_ASOb0V2y8647cbxbYU-G8CbtnPdLNub8NrqtUVrSTnWAPaAGALPE",
                  // ...
          		ServerHost:  mp_api.ServerHostShangHai, // 選擇離自己最近的服務(wù)主機(jī)
          	}
          
              // 一個(gè)簡(jiǎn)單的只帶access_token的GET API
          	var list mp_api.MessageCustomServiceKfListRes
          	if err := a.NewMpReq(mp_api.MessageCustomServiceKfList).Bind(&list).Do(); err != nil {
          		t.Error(err)
          	}
          	log.Println(list)
          
              // 一個(gè)POST API
          	var rs mp_api.AccountShortUrlRes
          	err = a.NewMpReq(mp_api.AccountShortUrl).SendData(mp_api.AccountShortUrlData{
          		Action:  mp_api.ShortUrlAction,
          		LongUrl: "https://developers.weixin.qq.com/doc/offiaccount/Account_Management/URL_Shortener.html",
          	}).Bind(&rs).Do()
          	if err != nil {
          		t.Error(err)
          	}
          	log.Println(rs)
          
              // 一個(gè)上傳媒體文件的API
          	err = a.NewMpReq(mp_api.MessageCustomServiceKfAccountUploadHeadImg).Query(mp_api.MessageCustomServiceKfAccountUploadHeadImgQuery{
          		KfAccount: "1@1",
          	}).Upload(resp.Body, "png")
          	if err != nil {
          		t.Error(err)
          	}

          商戶賬號(hào)API(V2版)

          App、JSAPI、小程序下單 分賬 付款至微信零錢 付款至個(gè)人銀行卡 發(fā)紅包

          •  自動(dòng)填充基礎(chǔ)信息
          •  自動(dòng)簽名
          •  私有證書HTTP客戶端自動(dòng)緩存
          •  支持MD5、HMAC-SHA256加密
          •  支持付款至銀行卡時(shí),隱私信息加密

          核心設(shè)計(jì)

          算法

          一個(gè)基礎(chǔ)賬號(hào)對(duì)象MchAccount,它有以下行為:

          • 創(chuàng)建請(qǐng)求 NewMchReq(url string)
          • 將訂單簽名給App OrderSign4App(or mch_api.PayUnifiedOrderRes)
          • 將訂單簽名給于H5、小程序 OrderSign(or mch_api.PayUnifiedOrderRes)
          • 驗(yàn)證支付成功通知 PayNotify(pn mch_api.PayNotify)
          • 付款至銀行卡時(shí),隱私信息項(xiàng)加密 RsaEncrypt(plain string)

          數(shù)據(jù)結(jié)構(gòu)

          只實(shí)現(xiàn)了很有限的數(shù)據(jù)。若需要使用本庫自帶的數(shù)據(jù)結(jié)構(gòu)之外的API。完全可以參考本庫的數(shù)據(jù)結(jié)構(gòu)寫法,自行另起書寫(建議參考structs.go中的方式書寫)。 能得到一樣的兼容體驗(yàn)!

          舉例

              mch := MchAccount{}
              
          	var data mch_api.PayProfitSharingRes
          	var body = mch_api.PayProfitSharingData{
          		TransactionId: "4200000531202004307536721907",
          		OutOrderNo:    "TSF_216144_1065_ye7DvHdSed",
          	}
          	_ = body.SerReceivers([]mch_api.PayProfitSharingReceiver{
          		{
          			Type:        "",
          			Account:     "",
          			Amount:      10,
          			Description: "",
          		},
          	})
          
          	err := mch.NewMchReq(mch_api.PayProfitSharing).
          		Send(&body). // 注意:發(fā)送的數(shù)據(jù)需傳指針,以便自動(dòng)填充基礎(chǔ)信息和簽名
          		UseHMacSign(). // 指定使用HMAC-SHA256
          		UsePrivateCert(). // 指定使用私有證書通信
          		Bind(&data).Do() // 傳指針
          	log.Println(err)
          	log.Println(data)

          為微信業(yè)務(wù)數(shù)據(jù)提供的額外工具方法

          • NewRandStr 生成符合微信要求隨機(jī)字符
          • LimitString 限制長(zhǎng)度,并將微信不支持的字符替換成'x',能滿足公眾號(hào)App的字符要求
          • SafeString 安全地限制長(zhǎng)度,并將微信不支持的字符替換成'x',能滿足商戶平臺(tái)的字符要求
          瀏覽 28
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  JIZZ丝袜壮感的18老师不卡 | 77777欧美 | 美女操网站 | 日本道九九精品 | 中文字幕 - 色网 |