wechat_sdk

package module
v0.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 20, 2020 License: MIT Imports: 19 Imported by: 0

README

wechat-sdk

功能列表
方法名 解释 备注
GetUserPhoneForMini 小程序获取电话号码 客户端调用微信接口获取加密信息时不能在回调中再次调用登陆接口, 否则会让session_key失效
GetSessionKeyAndOpenId 通过小程序授权code获取session_key和用户openid
GetAccessTokenForMini 小程序获取AccessToken
GetUserInfoForMini 小程序获取用户基本信息
CloseOrder 关闭订单
DownloadBill 下载对账单
DownloadComment 拉取订单评论
DownloadFundFlow 下载资金账单
GetPublicKey 获取RSA加密公钥
RefundOrder 申请退款
RefundNotify 解析微信退款回调内容, 主要是对req_info解密
RefundQuery 退款查询
Report 向微信发送接口调用结果的报告, 包括接口调用时间
ReverseOrder 撤销订单
Transfers 企业付款到用户零钱
TransfersQuery 查询企业付款到用户零钱的结果
TransferBank 企业付款到银行卡 未测试
TransferBankQuery 查询企业付款到银行卡的结果 未测试
UnifiedMicro 扫码下单 如果需要传detail参数, 参数格式参照单品优惠活动detail字段列表说明
UnifiedOrder 统一下单: H5/APP/MWEB/NATIVE 返回给前端的唤起支付参数中, package = prepay_id=xxxxxxx
UnifiedQuery 下单结果查询
GetAppBaseAccessToken 公众号开发获取基础接口调用Access_Token 用于调用其他接口
GetAppOauthAccessToken 公众号开发通过code获取网页授权Access_Token 此Access_Token用于拉取用户信息, code只能用一次
RefreshOauthToken 公众号开发刷新网页授权Access_Token
GetAppUserInfo 公众号开发拉取用户信息 返回结果参考微信文档
CheckOauthToken 公众号开发校验网页授权Access_Token是否有效

Notice: 所有请求接口都不需要加入appid/mch_id/key/secret/sign参数

如何使用:
package main

import (
	"fmt"
	dev "github.com/hong008/wechat-sdk"
)

func main() {
	var appId, mchId, apiKey, apiSecret string

	client := dev.NewPayer(dev.WithAppId(appId), dev.WithMchId(mchId), dev.WithApiKey(apiKey), dev.WithSecret(apiSecret))

	//unified order
	param := dev.NewParam()
	param.Add("nonce_str", "yourNonceStr")
	param.Add("body", "yourBody")
	param.Add("out_trade_no", "yourOutTradeNo")
	param.Add("total_fee", 1)
	param.Add("spbill_create_ip", "yourIp")
	param.Add("notify_url", "yourUrl")
	param.Add("trade_type", "JSAPI")
	result, err := client.UnifiedOrder(param)
	if err != nil {
		handleErr(err)
	}
    appId, _ := result.GetString("apppid")
    prepayId, _ := result.GetString("prepay_id")
    param = dev.NewParam()
    param.Add("appId", appId)
    param.Add("timeStamp", time.Now().Unix())
    param.Add("nonceStr", "nonceStr")
    param.Add("package", "prepay_id="+prepayId)
    param.Add("signType", "MD5")
    //use to evoke wechat pay 
    sign := param.Sign("MD5")


    //download bill
	param = dev.NewParam()
	param.Add("nonce_str", "yourNonceStr")
	param.Add("bill_date", "yourDate")
	param.Add("bill_type", "ALL")
	param.Add("tar_type", "GZIP")
	err := client.DownloadBill(param, "./bill")
	if err != nil {
		handleErr(err)
	}
    

    //get phone for mini program user
    result, err := client.GetUserPhoneForMini("code", "encryptedData", "iv")
    if err != nil {
    	handleErr(err)
    }
    var phone string
    if countryCode := result.Get("countryCode"); countryCode != nil && countryCode.(string) == "86" {
    	purePhone := result.Get("purePhoneNumber")
    	phone = purePhone.(string)
    } else {
    	phoneNumber := result.Get("phoneNumber")
    	phone = phoneNumber.(string)
    }
    fmt.Printf("user phone is %s\n", phone)
}

package main

import (
	"fmt"
	"net/http"
	
	dev "github.com/hong008/wechat-sdk"
)

func main() {
	var appId, mchId, apiKey, apiSecret string

	client := dev.NewPayer(dev.WithAppId(appId), dev.WithMchId(mchId), dev.WithApiKey(apiKey), dev.WithSecret(apiSecret))

	//handle refund notify
	http.HandleFunc("/refund_notify", func(writer http.ResponseWriter, request *http.Request) {
		defer request.Body.Close()
		result, err := client.RefundNotify(request.Body)
		if err != nil {
			handleErr(err)
		}
		fmt.Printf("RefundNotify Result = %v\n", result.Data())
	})
	http.ListenAndServe(":8810", nil)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ParseXMLReader

func ParseXMLReader(reader io.Reader) resultMap

XML to Param(遍历生成)

func WithApiKey

func WithApiKey(key string) option

func WithAppId

func WithAppId(appId string) option

func WithMchId

func WithMchId(mchId string) option

func WithSecret

func WithSecret(secret string) option

Types

type Param

type Param map[string]interface{}

用于装载外部传入的请求参数

func NewParam

func NewParam() Param

func (Param) Add

func (p Param) Add(key string, value interface{})

func (Param) Del

func (p Param) Del(key string)

func (Param) Get

func (p Param) Get(key string) interface{}

func (Param) MarshalXML

func (p Param) MarshalXML() (reader io.Reader, err error)

func (Param) Sign

func (p Param) Sign(signType string) string

func (Param) SortKey

func (p Param) SortKey() (keys []string)

type ResultParam

type ResultParam interface {
	//获取整型数据, 如支付/退款金额
	GetInt64(key string, base int) (value int64, err error)
	//获取字符串数据, 如订单号
	GetString(key string) (value string, err error)
	//
	Data() map[string]string
}

type WePayer

type WePayer interface {
	//支付相关
	//统一下单
	UnifiedOrder(param Param) (ResultParam, error)
	//扫码下单
	UnifiedMicro(param Param) (ResultParam, error)
	//撤销订单
	ReverseOrder(param Param, p12CertPath string) (ResultParam, error)
	//查询订单
	UnifiedQuery(param Param) (ResultParam, error)
	//关闭订单
	CloseOrder(param Param) (ResultParam, error)
	//退款
	RefundOrder(param Param, p12CertPath string) (ResultParam, error)
	//退款查询
	RefundQuery(param Param) (ResultParam, error)
	//解析退款通知, 结果将不会返回req_info
	RefundNotify(body io.Reader) (ResultParam, error)
	//下单对账单
	DownloadBill(param Param, fileSavePath string) error
	//下载资金账单
	DownloadFundFlow(param Param, p12CertPath string, fileSavePath string) error
	//拉取订单评论数据
	DownloadComment(param Param, p12CertPath string, fileSavePath string) (offset uint64, err error)
	//交易保障
	Report(param Param) error

	//
	//企业付款
	//付款到零钱
	Transfers(param Param, p12CertPath string) (ResultParam, error)
	//查询企业付款到零钱
	TransfersQuery(param Param, p12CertPath string) (ResultParam, error)
	//从微信获取RSA加密的公钥
	GetPublicKey(p12CertPath string, targetPath string) error
	//TODO 待验证 企业付款到银行卡
	TransferBank(param Param, p12CertPath string, publicKeyPath string) (ResultParam, error)
	////TODO 待验证 查询企业付款到银行卡
	TransferBankQuery(param Param, p12CertPath string) (ResultParam, error)

	//小程序相关
	//获取授权access_token
	GetAccessTokenForMini() (Param, error) //获取小程序接口凭证,使用者自己保存token,过期重新获取
	//获取微信信息
	GetUserInfoForMini(code, encryptedData, ivData string) (Param, error)
	//获取微信手机号码
	GetUserPhoneForMini(code string, encryptedData string, ivData string) (Param, error)
	//获取session_key
	GetSessionKeyAndOpenId(code string) (Param, error)

	//公众号相关
	GetAppBaseAccessToken() (Param, error)
	GetAppOauthAccessToken(code string) (Param, error)
	RefreshOauthToken(refreshToken string) (Param, error)
	GetAppUserInfo(oauthToken, openId, lang string) (Param, error)
	CheckOauthToken(oauthToken, openId string) (bool, error)
}

func NewPayer

func NewPayer(options ...option) WePayer

不向微信发送接口请求report

Directories

Path Synopsis
pkg
e

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL