日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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

目錄結(jié)構(gòu)

 

Golang超好用的WeChat類庫

 

 

  • mch: 商戶平臺相關(guān)業(yè)務(wù), 下單、支付、退款、查詢、委托代扣、企業(yè)付款、企業(yè)紅包 等
  • mp:小程序端相關(guān)業(yè)務(wù), 小程序授權(quán)、用戶數(shù)據(jù)解析、消息發(fā)送、二維碼生成、消息 等
  • pub:公眾號相關(guān)業(yè)務(wù), 網(wǎng)頁授權(quán)、菜單、模板消息、消息回復(fù)、用戶管理、消息轉(zhuǎn)客服 等
  • wechat.go 包的入口,獲取以上三個業(yè)務(wù)的實(shí)例

一、支付

下單用法

import (
    "github.com/iiinsomnia/gochat"
    "github.com/iiinsomnia/gochat/mch"
)// UnifiedOrder 統(tǒng)一下單數(shù)據(jù)  直接引用包里的結(jié)構(gòu)體即可
type UnifiedOrder struct {
	// 必填參數(shù)
	OutTradeNO     string // 商戶系統(tǒng)內(nèi)部的訂單號,32個字符內(nèi)、可包含字母,其他說明見商戶訂單號
	TotalFee       int    // 訂單總金額,單位為分,詳見支付金額
	SpbillCreateIP string // App和網(wǎng)頁支付提交用戶端ip,Native支付填調(diào)用微信支付API的機(jī)器IP
	TradeType      string // 取值如下:JSAPI,NATIVE,APP,MWEB,詳細(xì)說明見參數(shù)規(guī)定
	Body           string // 商品或支付單簡要描述
	NotifyURL      string // 接收微信支付異步通知回調(diào)地址,通知url必須為直接可訪問的url,不能攜帶參數(shù)
	// 選填參數(shù)
	DeviceInfo string // 終端設(shè)備號(門店號或收銀設(shè)備ID),注意:PC網(wǎng)頁或公眾號內(nèi)支付請傳"WEB"
	Detail     string // 商品名稱明細(xì)列表
	Attach     string // 附加數(shù)據(jù),在查詢API和支付通知中原樣返回,該字段主要用于商戶攜帶訂單的自定義數(shù)據(jù)
	FeeType    string // 符合ISO 4217標(biāo)準(zhǔn)的三位字母代碼,默認(rèn)人民幣:CNY,其他值列表詳見貨幣類型
	TimeStart  string // 訂單生成時間,格式為yyyyMMddHHmmss,如:2009年12月25日9點(diǎn)10分10秒 表示為:20091225091010
	TimeExpire string // 訂單失效時間,格式為yyyyMMddHHmmss,如:2009年12月27日9點(diǎn)10分10秒 表示為:20091227091010
	GoodsTag   string // 商品標(biāo)記,代金券或立減優(yōu)惠功能的參數(shù),說明詳見代金券或立減優(yōu)惠
	ProductID  string // trade_type=NATIVE,此參數(shù)必傳。此id為二維碼中包含的商品ID,商戶自行定義
	LimitPay   string // no_credit--指定不能使用信用卡支付
	OpenID     string // trade_type=JSAPI,此參數(shù)必傳,用戶在商戶appid下的唯一標(biāo)識
	Receipt    bool   // 是否在支付成功消息和支付詳情頁中出現(xiàn)開票入口,注:需要在微信支付商戶平臺或微信公眾平臺開通電子發(fā)票功能
	SceneInfo  string // 該字段用于上報支付的場景信息
}
// 初始化實(shí)例
wxmch := gochat.NewWXMch(appid, apikey, cert)
r, err := wxmch.Order().Unify(order)
if err != nil {
    // 錯誤處理...
}
if r["result_code"] != mch.ResultSuccess {
    // 判斷微信的返回狀態(tài)碼,失敗處理...
}
// 成功邏輯處理...
// 拿到預(yù)支付的id
prepayID := r["prepay_id"]
// 獲取支付簽名的票據(jù),返回給前端和app就能拉取支付界面了
// APP
data := wxmch.APPAPI(prepayID)
// JS
data := wxmch.JSAPI(prepayID)

查詢訂單狀態(tài)

// RefundData 退款數(shù)據(jù)
type RefundData struct {
	// 必填參數(shù)
	OutRefundNO string // 商戶系統(tǒng)內(nèi)部的退款單號,商戶系統(tǒng)內(nèi)部唯一,同一退款單號多次請求只退一筆
	TotalFee    int    // 訂單總金額,單位為分,只能為整數(shù),詳見支付金額
	RefundFee   int    // 退款總金額,訂單總金額,單位為分,只能為整數(shù),詳見支付金額
	// 選填參數(shù)
	RefundFeeType string // 貨幣類型,符合ISO 4217標(biāo)準(zhǔn)的三位字母代碼,默認(rèn)人民幣:CNY,其他值列表詳見貨幣類型
	RefundDesc    string // 若商戶傳入,會在下發(fā)給用戶的退款消息中體現(xiàn)退款原因
	RefundAccount string // 退款資金來源,僅針對老資金流商戶使用
	NotifyURL     string // 異步接收微信支付退款結(jié)果通知的回調(diào)地址,通知URL必須為外網(wǎng)可訪問的url,不允許帶參數(shù)
}
// 根據(jù)微信訂單號查詢
r, err := wxmch.Order().QueryByTransactionID(transactionID)
// 根據(jù)商戶訂單號查詢
r, err := wxmch.Order().QueryByOutTradeNO(transactionID)
// 關(guān)閉訂單
r, err := wxmch.Order().Close(outTradeNO)

退款

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

 

小程序

登錄授權(quán)

import (
    "github.com/iiinsomnia/gochat"
    "github.com/iiinsomnia/gochat/mp"
    "github.com/iiinsomnia/gochat/utils"
)// 初始化小程序?qū)嵗齱xmp := gochat.NewWXMP(appid, appsecret)// 授權(quán) session, err := wxmp.Sns().Code2Session(code)// 數(shù)據(jù)校驗(yàn)解密// 數(shù)據(jù)簽名校驗(yàn)if signature != utils.SHA1(rawData+sessionKey) {
  return errors.New("簽名校驗(yàn)失敗")
}// 數(shù)據(jù)解密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 每日獲取次數(shù)有限且含有效期,故服務(wù)端應(yīng)妥善保存 access_token 并定時刷新

公眾號

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

 

整個包看下來還是蠻簡單,使用方便。想要了解更多內(nèi)容可以去查看作者的源碼和使用說明。

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

分享到:
標(biāo)簽:類庫 WeChat
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定