范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

GO编程支付插件

  安装$ go get github.com/iGoogle-ink/gopay 查看 GoPay 版本
  版本更新记录  import (     "fmt"      "github.com/iGoogle-ink/gopay" )  func main() {     fmt.Println("GoPay Version: ", gopay.Version) } 微信支付API统一下单:client.UnifiedOrder()JSAPI - JSAPI支付(或小程序支付)NATIVE - Native支付APP - app支付MWEB - H5支付  提交付款码支付:client.Micropay()  查询订单:client.QueryOrder()  关闭订单:client.CloseOrder()  撤销订单:client.Reverse()  申请退款:client.Refund()  查询退款:client.QueryRefund()  下载对账单:client.DownloadBill()  下载资金账单(正式):client.DownloadFundFlow()  交易保障:client.Report()  拉取订单评价数据(正式):client.BatchQueryComment()  企业付款(正式):client.Transfer()  查询企业付款(正式):client.GetTransferInfo()  授权码查询OpenId(正式):client.AuthCodeToOpenId()  公众号纯签约(正式):client.EntrustPublic()  APP纯签约-预签约接口-获取预签约ID(正式):client.EntrustAppPre()  H5纯签约(正式):client.EntrustH5()  支付中签约(正式):client.EntrustPaying()  请求单次分账(正式):client.ProfitSharing()  请求多次分账(正式):client.MultiProfitSharing()  查询分账结果(正式):client.ProfitSharingQuery()  添加分账接收方(正式):client.ProfitSharingAddReceiver()  删除分账接收方(正式):client.ProfitSharingRemoveReceiver()  完结分账(正式):client.ProfitSharingFinish()  分账回退(正式):client.ProfitSharingReturn()  分账回退结果查询(正式):client.ProfitSharingReturnQuery()  企业付款到银行卡API(正式):client.PayBank()  查询企业付款到银行卡API(正式):client.QueryBank()  获取RSA加密公钥API(正式):client.GetRSAPublicKey()  自定义方法请求微信API接口:client.PostWeChatAPISelf()  微信公共APIwechat.GetParamSign() => 获取微信支付所需参数里的Sign值(通过支付参数计算Sign值)  wechat.GetSanBoxParamSign() => 获取微信支付沙箱环境所需参数里的Sign值(通过支付参数计算Sign值)  wechat.GetMiniPaySign() => 获取微信小程序支付所需要的paySign  wechat.GetH5PaySign() => 获取微信内H5支付所需要的paySign  wechat.GetAppPaySign() => 获取APP支付所需要的paySign  wechat.ParseNotifyToBodyMap() => 解析微信支付异步通知的参数到BodyMap  wechat.ParseNotify() => 解析微信支付异步通知的参数  wechat.ParseRefundNotify() => 解析微信退款异步通知的参数  wechat.VerifySign() => 微信同步返回参数验签或异步通知参数验签  wechat.Code2Session() => 登录凭证校验:获取微信用户OpenId、UnionId、SessionKey  wechat.GetAppletAccessToken() => 获取微信小程序全局唯一后台接口调用凭据  wechat.GetAppletPaidUnionId() => 微信小程序用户支付完成后,获取该用户的 UnionId,无需用户授权  wechat.GetUserInfo() => 微信公众号:获取用户基本信息(UnionID机制)  wechat.DecryptOpenDataToStruct() => 加密数据,解密到指定结构体  wechat.DecryptOpenDataToBodyMap() => 加密数据,解密到 BodyMap  wechat.GetOpenIdByAuthCode() => 授权码查询openid  wechat.GetAppLoginAccessToken() => App应用微信第三方登录,code换取access_token  wechat.RefreshAppLoginAccessToken() => 刷新App应用微信第三方登录后,获取的 access_token  wechat.DecryptRefundNotifyReqInfo() => 解密微信退款异步通知的加密数据  QQ支付API提交付款码支付:client.MicroPay()  撤销订单:client.Reverse()  统一下单:client.UnifiedOrder()  订单查询:client.OrderQuery()  关闭订单:client.CloseOrder()  申请退款:client.Refund()  退款查询:client.RefundQuery()  交易账单:client.StatementDown()  资金账单:client.AccRoll()  自定义方法请求微信API接口:client.PostQQAPISelf()  QQ公共APIqq.ParseNotifyToBodyMap() => 解析QQ支付异步通知的结果到BodyMap  qq.ParseNotify() => 解析QQ支付异步通知的参数  qq.VerifySign() => QQ同步返回参数验签或异步通知参数验签  支付宝支付API因支付宝接口太多,如没实现的接口,还请开发者自行调用client.PostAliPayAPISelf()方法实现!支付宝接口自行实现方法:client.PostAliPayAPISelf()  手机网站支付接口2.0(手机网站支付):client.TradeWapPay()  统一收单下单并支付页面接口(电脑网站支付):client.TradePagePay()  APP支付接口2.0(APP支付):client.TradeAppPay()  统一收单交易支付接口(商家扫用户付款码):client.TradePay()  统一收单交易创建接口(小程序支付):client.TradeCreate()  统一收单线下交易查询:client.TradeQuery()  统一收单交易关闭接口:client.TradeClose()  统一收单交易撤销接口:client.TradeCancel()  统一收单交易退款接口:client.TradeRefund()  统一收单退款页面接口:client.TradePageRefund()  统一收单交易退款查询:client.TradeFastPayRefundQuery()  统一收单交易结算接口:client.TradeOrderSettle()  统一收单线下交易预创建(用户扫商品收款码):client.TradePrecreate()  单笔转账接口:client.FundTransUniTransfer()  转账业务单据查询接口:client.FundTransCommonQuery()  支付宝资金账户资产查询接口:client.FundAccountQuery()  换取授权访问令牌(获取access_token,user_id等信息):client.SystemOauthToken()  支付宝会员授权信息查询接口(App支付宝登录):client.UserInfoShare()  换取应用授权令牌(获取app_auth_token,auth_app_id,user_id等信息):client.OpenAuthTokenApp()  获取芝麻信用分:client.ZhimaCreditScoreGet()  身份认证初始化服务:client.UserCertifyOpenInit()  身份认证开始认证(获取认证链接):client.UserCertifyOpenCertify()  身份认证记录查询:client.UserCertifyOpenQuery()  用户登陆授权:client.UserInfoAuth()  支付宝商家账户当前余额查询:client.DataBillBalanceQuery()  查询对账单下载地址:client.DataBillDownloadUrlQuery()  支付宝公共APIalipay.GetCertSN() => 获取证书SN号(app_cert_sn、alipay_cert_sn)  alipay.GetRootCertSN() => 获取证书SN号(alipay_root_cert_sn)  alipay.GetRsaSign() => 获取支付宝参数签名(参数sign值)  alipay.SystemOauthToken() => 换取授权访问令牌(得到access_token,user_id等信息)  alipay.FormatPrivateKey() => 格式化应用私钥  alipay.FormatPublicKey() => 格式化支付宝公钥  alipay.FormatURLParam() => 格式化支付宝请求URL参数  alipay.ParseNotifyToBodyMap() => 解析支付宝支付异步通知的参数到BodyMap  alipay.ParseNotifyByURLValues() => 通过 url.Values 解析支付宝支付异步通知的参数到BodyMap  alipay.VerifySign() => 支付宝异步通知参数验签  alipay.VerifySignWithCert() => 支付宝异步通知参数验签(证书方式)  alipay.VerifySyncSign() => 支付宝同步返回参数验签  alipay.DecryptOpenDataToStruct() => 解密支付宝开放数据到 结构体  alipay.DecryptOpenDataToBodyMap() => 解密支付宝开放数据到 BodyMap  alipay.MonitorHeartbeatSyn() => 验签接口  文档说明初始化GoPay客户端并做配置(HTTP请求均默认设置tls.Config{InsecureSkipVerify: true})微信  import (     "github.com/iGoogle-ink/gopay/wechat" )  // 初始化微信客户端 //    appId:应用ID //    mchId:商户ID //    apiKey:API秘钥值 //    isProd:是否是正式环境 client := wechat.NewClient("wxdaa2ab9ef87b5497", mchId, apiKey, false)  // 设置国家:不设置默认 中国国内 //    gopay.China:中国国内 //    gopay.China2:中国国内备用 //    gopay.SoutheastAsia:东南亚 //    gopay.Other:其他国家 client.SetCountry(gopay.China)  // 添加微信证书 Path 路径 //    certFilePath:apiclient_cert.pem 路径 //    keyFilePath:apiclient_key.pem 路径 //    pkcs12FilePath:apiclient_cert.p12 路径 //    返回err client.AddCertFilePath() 支付宝  import (     "github.com/iGoogle-ink/gopay/alipay" )  // 初始化支付宝客户端 //    appId:应用ID //    privateKey:应用私钥,支持PKCS1和PKCS8 //    isProd:是否是正式环境 client := alipay.NewClient("2016091200494382", privateKey, false)  // 设置支付宝请求 公共参数 //    注意:具体设置哪些参数,根据不同的方法而不同,此处列举出所有设置参数 client.SetLocation().                       // 设置时区,不设置或出错均为默认服务器时间     SetPrivateKeyType().                    // 设置 支付宝 私钥类型,alipay.PKCS1 或 alipay.PKCS8,默认 PKCS1     SetAliPayRootCertSN().                  // 设置支付宝根证书SN,通过 alipay.GetRootCertSN() 获取     SetAppCertSN().                         // 设置应用公钥证书SN,通过 alipay.GetCertSN() 获取     SetAliPayPublicCertSN().                // 设置支付宝公钥证书SN,通过 alipay.GetCertSN() 获取     SetCharset("utf-8").                    // 设置字符编码,不设置默认 utf-8     SetSignType(alipay.RSA2).               // 设置签名类型,不设置默认 RSA2     SetReturnUrl("https://www.gopay.ink").  // 设置返回URL     SetNotifyUrl("https://www.gopay.ink").  // 设置异步通知URL     SetAppAuthToken().                      // 设置第三方应用授权     SetAuthToken()                          // 设置个人信息授权  err := client.SetCertSnByPath("appCertPublicKey.crt", "alipayRootCert.crt", "alipayCertPublicKey_RSA2.crt") 初始化并赋值BodyMap(client的方法所需的入参)微信请求参数
  具体参数请根据不同接口查看:微信支付接口文档  import (     "github.com/iGoogle-ink/gopay/wechat" )  // 初始化 BodyMap bm := make(gopay.BodyMap) bm.Set("nonce_str", gotil.GetRandomString(32)) bm.Set("body", "小程序测试支付") bm.Set("out_trade_no", number) bm.Set("total_fee", 1) bm.Set("spbill_create_ip", "127.0.0.1") bm.Set("notify_url", "http://www.gopay.ink") bm.Set("trade_type", gopay.TradeType_Mini) bm.Set("device_info", "WEB") bm.Set("sign_type", gopay.SignType_MD5) bm.Set("openid", "o0Df70H2Q0fY8JXh1aFPIRyOBgu8")  // 嵌套json格式数据(例如:H5支付的 scene_info 参数) h5Info := make(map[string]string) h5Info["type"] = "Wap" h5Info["wap_url"] = "http://www.gopay.ink" h5Info["wap_name"] = "H5测试支付"  sceneInfo := make(map[string]map[string]string) sceneInfo["h5_info"] = h5Info  bm.Set("scene_info", sceneInfo)  // 参数 sign ,可单独生成赋值到BodyMap中;也可不传sign参数,client内部会自动获取 // 如需单独赋值 sign 参数,需通过下面方法,最后获取sign值并在最后赋值此参数 sign := wechat.GetParamSign("wxdaa2ab9ef87b5497", mchId, apiKey, body) // sign, _ := wechat.GetSanBoxParamSign("wxdaa2ab9ef87b5497", mchId, apiKey, body) bm.Set("sign", sign) 支付宝请求参数
  具体参数请根据不同接口查看:支付宝支付API接口文档  // 初始化 BodyMap bm := make(gopay.BodyMap) bm.Set("subject", "手机网站测试支付") bm.Set("out_trade_no", "GZ201901301040355703") bm.Set("quit_url", "https://www.gopay.ink") bm.Set("total_amount", "100.00") bm.Set("product_code", "QUICK_WAP_WAY") client 方法调用微信  wxRsp, err := client.UnifiedOrder(bm) wxRsp, err := client.Micropay(bm) wxRsp, err := client.QueryOrder(bm) wxRsp, err := client.CloseOrder(bm) wxRsp, err := client.Reverse(bm, "apiclient_cert.pem", "apiclient_key.pem", "apiclient_cert.p12") wxRsp, err := client.Refund(bm, "apiclient_cert.pem", "apiclient_key.pem", "apiclient_cert.p12") wxRsp, err := client.QueryRefund(bm) wxRsp, err := client.DownloadBill(bm) wxRsp, err := client.DownloadFundFlow(bm, "apiclient_cert.pem", "apiclient_key.pem", "apiclient_cert.p12") wxRsp, err := client.BatchQueryComment(bm, "apiclient_cert.pem", "apiclient_key.pem", "apiclient_cert.p12") wxRsp, err := client.Transfer(bm, "apiclient_cert.pem", "apiclient_key.pem", "apiclient_cert.p12")
  支付宝 client  // 手机网站支付是通过服务端获取支付URL后,然后返回给客户端,请求URL地址即可打开支付页面 payUrl, err := client.TradeWapPay(bm)  // 电脑网站支付是通过服务端获取支付URL后,然后返回给客户端,请求URL地址即可打开支付页面 payUrl, err := client.TradePagePay(bm)  // APP支付是通过服务端获取支付参数后,然后通过Android/iOS客户端的SDK调用支付功能 payParam, err := client.TradeAppPay(bm)  // 商家使用扫码枪等条码识别设备扫描用户支付宝钱包上的条码/二维码,完成收款 aliRsp, err := client.TradePay(bm)  // 支付宝小程序支付时 buyer_id 为必传参数,需要提前获取,获取方法如下两种 //    1、gopay.SystemOauthToken()     返回取值:rsp.SystemOauthTokenResponse.UserId //    2、client.SystemOauthToken()    返回取值:aliRsp.SystemOauthTokenResponse.UserId aliRsp, err := client.TradeCreate(bm)  aliRsp, err := client.TradeQuery(bm) aliRsp, err := client.TradeClose(bm) aliRsp, err := client.TradeCancel(bm) aliRsp, err := client.TradeRefund(bm) aliRsp, err := client.TradePageRefund(bm) aliRsp, err := client.TradeFastPayRefundQuery(bm) aliRsp, err := client.TradeOrderSettle(bm) aliRsp, err := client.TradePrecreate(bm) aliRsp, err := client.FundTransUniTransfer(bm) aliRsp, err := client.FundTransCommonQuery(bm) aliRsp, err := client.FundAccountQuery(bm) aliRsp, err := client.SystemOauthToken(bm) aliRsp, err := client.OpenAuthTokenApp(bm) aliRsp, err := client.ZhimaCreditScoreGet(bm) aliRsp, err := client.UserCertifyOpenInit(bm) aliRsp, err := client.UserCertifyOpenCertify(bm) aliRsp, err := client.UserCertifyOpenQuery(bm) 微信统一下单后,获取微信小程序支付、APP支付、微信内H5支付所需要的 paySign微信(只有微信需要此操作) 微信小程序支付官方文档:微信小程序支付API  import (     "github.com/iGoogle-ink/gopay/wechat" )  // ====微信小程序 paySign==== timeStamp := strconv.FormatInt(time.Now().Unix(), 10) prepayId := "prepay_id=" + wxRsp.PrepayId   // 此处的 wxRsp.PrepayId ,统一下单成功后得到 // 获取微信小程序支付的 paySign //    appId:AppID //    nonceStr:随机字符串 //    prepayId:统一下单成功后得到的值 //    signType:签名方式,务必与统一下单时用的签名方式一致 //    timeStamp:时间 //    apiKey:API秘钥值 paySign := wechat.GetMiniPaySign(AppID, wxRsp.NonceStr, prepayId, wechat.SignType_MD5, timeStamp, apiKey)  // ====APP支付 paySign==== timeStamp := strconv.FormatInt(time.Now().Unix(), 10) // 获取APP支付的 paySign // 注意:package 参数因为是固定值,无需开发者再传入 //    appId:AppID //    partnerid:partnerid //    nonceStr:随机字符串 //    prepayId:统一下单成功后得到的值 //    signType:签名方式,务必与统一下单时用的签名方式一致 //    timeStamp:时间 //    apiKey:API秘钥值 paySign := wechat.GetAppPaySign(appid, partnerid, wxRsp.NonceStr, wxRsp.PrepayId, wechat.SignType_MD5, timeStamp, apiKey)  // ====微信内H5支付 paySign==== timeStamp := strconv.FormatInt(time.Now().Unix(), 10) packages := "prepay_id=" + wxRsp.PrepayId   // 此处的 wxRsp.PrepayId ,统一下单成功后得到 // 获取微信内H5支付 paySign //    appId:AppID //    nonceStr:随机字符串 //    packages:统一下单成功后拼接得到的值 //    signType:签名方式,务必与统一下单时用的签名方式一致 //    timeStamp:时间 //    apiKey:API秘钥值 paySign := wechat.GetH5PaySign(AppID, wxRsp.NonceStr, packages, wechat.SignType_MD5, timeStamp, apiKey) 同步返回参数验签Sign、异步通知参数解析和验签Sign、异步通知返回
  异步参数需要先解析,解析出来的结构体或BodyMap再验签
  Echo Web框架,有兴趣的可以尝试一下
  异步通知处理完后,需回复平台固定数据  微信  import (     "github.com/iGoogle-ink/gopay"     "github.com/iGoogle-ink/gopay/wechat" )  // ====同步返回参数验签Sign==== wxRsp, err := client.UnifiedOrder(bm) // 微信同步返回参数验签或异步通知参数验签 //    apiKey:API秘钥值 //    signType:签名类型(调用API方法时填写的类型) //    bean:微信同步返回的结构体 wxRsp 或 异步通知解析的结构体 notifyReq //    返回参数 ok:是否验签通过 //    返回参数 err:错误信息 ok, err := wechat.VerifySign(apiKey, wechat.SignType_MD5, wxRsp)  // ====支付异步通知参数解析和验签Sign==== // 解析支付异步通知的参数 //    req:*http.Request //    返回参数 notifyReq:通知的参数 //    返回参数 err:错误信息 notifyReq, err := wechat.ParseNotify(c.Request())    // c.Request()是 echo 框架的获取 *http.Request 的写法 // 验签操作 ok, err := wechat.VerifySign(apiKey, wechat.SignType_MD5, notifyReq)  // ====退款异步通知参数解析,退款通知无sign,不用验签==== //  // 解析退款异步通知的参数,解析出来的 req_info 是加密数据,需解密 //    req:*http.Request //    返回参数 notifyReq:通知的参数 //    返回参数 err:错误信息 notifyReq, err := wechat.ParseRefundNotify(c.Request())  // ==解密退款异步通知的加密参数 req_info == refundNotify, err := wechat.DecryptRefundNotifyReqInfo(notifyReq.ReqInfo, apiKey)  // ==异步通知,返回给微信平台的信息== rsp := new(wechat.NotifyResponse) // 回复微信的数据 rsp.ReturnCode = gopay.SUCCESS rsp.ReturnMsg = gopay.OK return c.String(http.StatusOK, rsp.ToXmlString())   // 此写法是 echo 框架返回客户端数据的写法 支付宝
  注意:APP支付、手机网站支付、电脑网站支付 暂不支持同步返回验签
  支付宝支付后的同步/异步通知验签文档:支付结果通知  import (     "github.com/iGoogle-ink/gopay/alipay" )  // ====同步返回参数验签Sign==== aliRsp, err := client.TradePay(bm) // 支付宝同步返回验签 //    注意:APP支付,手机网站支付,电脑网站支付 暂不支持同步返回验签 //    aliPayPublicKey:支付宝公钥 //    signData:待验签参数,aliRsp.SignData //    sign:待验签sign,aliRsp.Sign //    返回参数ok:是否验签通过 //    返回参数err:错误信息 ok, err := alipay.VerifySyncSign(aliPayPublicKey, aliRsp.SignData, aliRsp.Sign)  // ====异步通知参数解析和验签Sign==== // 解析异步通知的参数 //    req:*http.Request //    返回参数 notifyReq:通知的参数 //    返回参数 err:错误信息 notifyReq, err = alipay.ParseNotify(c.Request())     // c.Request()是 echo 框架的获取 // 验签操作 ok, err = alipay.VerifySign(aliPayPublicKey, notifyReq)  // ==异步通知,返回支付宝平台的信息== //    文档:https://opendocs.alipay.com/open/203/105286 //    程序执行完后必须打印输出"success"(不包含引号)。如果商户反馈给支付宝的字符不是success这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。一般情况下,25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h) return c.String(http.StatusOK, "success")   // 此写法是 echo 框架返回客户端数据的写法 微信、支付宝 公共API(仅部分说明)微信 公共API  import (     "github.com/iGoogle-ink/gopay/wechat" )  // 获取微信小程序用户的OpenId、SessionKey、UnionId //    appId:微信小程序的APPID //    appSecret:微信小程序的AppSecret //    wxCode:小程序调用wx.login 获取的code sessionRsp, err := wechat.Code2Session(appId, appSecret, wxCode)  // ====解密微信加密数据到指定结构体====  //小程序获取手机号 data := "Kf3TdPbzEmhWMuPKtlKxIWDkijhn402w1bxoHL4kLdcKr6jT1jNcIhvDJfjXmJcgDWLjmBiIGJ5acUuSvxLws3WgAkERmtTuiCG10CKLsJiR+AXVk7B2TUQzsq88YVilDz/YAN3647REE7glGmeBPfvUmdbfDzhL9BzvEiuRhABuCYyTMz4iaM8hFjbLB1caaeoOlykYAFMWC5pZi9P8uw==" iv := "Cds8j3VYoGvnTp1BrjXdJg==" session := "lyY4HPQbaOYzZdG+JcYK9w==" phone := new(wechat.UserPhone) // 解密开放数据 //    encryptedData:包括敏感数据在内的完整用户信息的加密数据,小程序获取到 //    iv:加密算法的初始向量,小程序获取到 //    sessionKey:会话密钥,通过 gopay.Code2Session() 方法获取到 //    beanPtr:需要解析到的结构体指针,操作完后,声明的结构体会被赋值 err := wechat.DecryptOpenDataToStruct(data, iv, session, phone) fmt.Println(*phone) // 获取微信小程序用户信息 sessionKey := "tiihtNczf5v6AKRyjwEUhQ==" encryptedData := "CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZMQmRzooG2xrDcvSnxIMXFufNstNGTyaGS9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+3hVbJSRgv+4lGOETKUQz6OYStslQ142dNCuabNPGBzlooOmB231qMM85d2/fV6ChevvXvQP8Hkue1poOFtnEtpyxVLW1zAo6/1Xx1COxFvrc2d7UL/lmHInNlxuacJXwu0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn/Hz7saL8xz+W//FRAUid1OksQaQx4CMs8LOddcQhULW4ucetDf96JcR3g0gfRK4PC7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns/8wR2SiRS7MNACwTyrGvt9ts8p12PKFdlqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYVoKlaRv85IfVunYzO0IKXsyl7JCUjCpoG20f0a04COwfneQAGGwd5oa+T8yO5hzuyDb/XcxxmK01EpqOyuxINew==" iv2 := "r7BXXKkLb8qrSNn05n0qiA=="  // 微信小程序 用户信息 userInfo := new(wechat.AppletUserInfo) err = wechat.DecryptOpenDataToStruct(encryptedData, iv2, sessionKey, userInfo) fmt.Println(*userInfo)  data := "Kf3TdPbzEmhWMuPKtlKxIWDkijhn402w1bxoHL4kLdcKr6jT1jNcIhvDJfjXmJcgDWLjmBiIGJ5acUuSvxLws3WgAkERmtTuiCG10CKLsJiR+AXVk7B2TUQzsq88YVilDz/YAN3647REE7glGmeBPfvUmdbfDzhL9BzvEiuRhABuCYyTMz4iaM8hFjbLB1caaeoOlykYAFMWC5pZi9P8uw==" iv := "Cds8j3VYoGvnTp1BrjXdJg==" session := "lyY4HPQbaOYzZdG+JcYK9w=="  // 解密开放数据到 BodyMap //    encryptedData:包括敏感数据在内的完整用户信息的加密数据 //    iv:加密算法的初始向量 //    sessionKey:会话密钥 bm, err := wechat.DecryptOpenDataToBodyMap(data, iv, session) if err != nil {      fmt.Println("err:", err)      return } fmt.Println("WeChatUserPhone:", bm) 支付宝 公共API
  支付宝换取授权访问令牌文档:换取授权访问令牌
  获取用户手机号文档:获取用户手机号
  支付宝加解密文档:AES配置文档 ,AES加解密文档  import (     "github.com/iGoogle-ink/gopay/alipay" )  // 换取授权访问令牌(默认使用utf-8,RSA2) //    appId:应用ID //    privateKey:应用私钥,支持PKCS1和PKCS8 //    grantType:值为 authorization_code 时,代表用code换取;值为 refresh_token 时,代表用refresh_token换取,传空默认code换取 //    codeOrToken:支付宝授权码或refresh_token rsp, err := alipay.SystemOauthToken(appId, privateKey, grantType, codeOrToken)  // 解密支付宝开放数据带到指定结构体 //    以小程序获取手机号为例 phone := new(alipay.UserPhone) // 解密支付宝开放数据 //    encryptedData:包括敏感数据在内的完整用户信息的加密数据 //    secretKey:AES密钥,支付宝管理平台配置 //    beanPtr:需要解析到的结构体指针 err := alipay.DecryptOpenDataToStruct(encryptedData, secretKey, phone) fmt.Println(*phone)

支持杜比全景声,提升沉浸感,创新Stage360条形音箱初体验以前想感受杜比音效的震撼,总是需要到电影院去,那种被声音包围的沉浸感,是电视机自带扬声器不能给予的。也许有人会疑惑地说,现在不是有许多电视机都标榜支持杜比音效吗?话虽这样说,但笔者每天跑步,用什么样的智能运动手表比较好?首先你要明白跑表和智能表的区别1。首先一项就是跑表的长续航,半马关门3小时,全马关门6小时,心率GPS全开,没有长续航是顶不住的。2。可玩性,专业跑表的可玩性几乎为0,没有软件支持我国国际顶尖期刊论文数量跻身世界第二12月27日,中国科学技术信息研究所(以下简称中信所)在京发布2021年中国科技论文统计报告。报告显示,中国卓越科技论文总体产出持续增长,国际顶尖期刊论文数量排名世界第2,上升2位我国锂电生产厂家的发展趋势目前我国锂电池手机,锂电池汽车以及家用电器基本都是用锂电池为提供动力,针对我国锂电池为的应用逐年增长的趋势,锂电池作为不可避免的需求,逐渐的在日常生活中越来越重要,根据相关数据显示年底购物旺季,打着元宇宙旗号的VR头显还真的火了早有机构强调在元宇宙市场发展的初期,VR头显将成为龙头必争之地。在年底的购物旺季里,VR头显还真的火了。VR头显销量明显增加公开信息显示,苹果AppStore美国免费应用排行榜排名ShibaInu准备进军万亿美元元宇宙,预计将出现大规模SHIB烧毁ShibaInu可能很快就会在分水岭时刻将重点转向区块链游戏,预计这将大大减少流通中的代币数量,从而推动价格上涨。在令牌的领先开发商之一草间志敏(ShytoshiKusama)最近周鸿祎元宇宙不是一个产品,而是全面数字化的高级阶段北京商报讯(记者魏蔚)12月28日,360创始人周鸿祎在360集团战略发布会上表示,元宇宙是数字化发展到高级阶段的产物。数字化程度越高,安全挑战越大,未来对虚拟世界的攻击会伤害到现新鲜早科技丨百度首次在元宇宙希壤开会美团将在快手上线小程序苏宁力争半年内偿还员工借款本金21世纪经济报道记者杨清清实习生陈龙潼综合报道早上好,新的一天又开始了。在过去24小时内,科技行业发生了哪些有意思的事情?来跟21tech一起看看吧。巨头风向标1百度首次在元宇宙希氪星晚报苹果或从明年起开始转为去实体SIM卡华为6亿元成立精密制造公司,内部人士回应不生产芯片一汽集团申请元宇宙商标大公司台积电正式提出中科扩建厂计划据了解,在台中市,台积电已锁定中科园区旁台中高尔夫球场用地,设厂面积近100公顷,总投资金额达8000亿至1万亿元,这是台积电中科扩建厂计划首度对有什么副业一天可以一百左右?分享我现在在做的,特别适合全职妈妈,每天100不难,虽然不多,但是能照顾孩子还有收入我已经很满意了。1,就是写东西了。凡是有点灵感,我都随时在备忘录里记下来,就怕自己这记性一会就忘把一个离职10个月的同事移除群聊,有错吗?为什么?有错!错在于移除的太晚了!让已经离职的人在群内待了10个月,开始或许是他的错,时间久了就成了你的错!当然了,如果你只是一个信任的群落管理员,只是在纠正之前群主或者管理员所犯的错误,
红旗E不得不说,新能源的发展速度越来越快,电动化的时代离我们也越来越近了,不少汽车厂商也纷纷开始往电动化方向发展,市场上新增的车型也变得的多样化了。今天小鱼儿要点评的是红旗EQM5,20初期月产能1。5继全球排名第一和第二的台积电三星宣布将赴美投资建设新厂之后,美国似乎又将目光瞄准了第三大晶圆代工厂联电。据台湾地区媒体报道,有消息称,美国向联电抛出橄榄枝,邀请其赴美国汽车工业重镇Python常见用法Python常见用法一PandasDataFrame数据结构DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值字符串布尔型值)。DataFriOS15。4不止有口罩解锁这个功能用起来也很方便手机中国新闻3月15日,苹果将iOS系统升级到了15。4版本,为用户带来了数种新功能。其中,最大的更新就是支持戴口罩使用面容ID解锁手机。苹果用户只需要打开系统内戴口罩使用Face洗碗机逐浪者,为什么是方太?问题方太为什么是洗碗机逐浪者?与洗衣机油烟机等诸多品类家电同样,洗碗机也是属于舶来品。因为洗碗机解决了饭后洗碗的痛苦,给消费者尤其是年轻一代带来巨大的便捷性,让家庭幸福指数飙升,所想了解一下远程办公怎么样?我觉得远程办公挺好的呀,很具有特色,我之前在小蜜蜂远程办公网上面找了一个电商客服,那个平台上面大部分都是远程工作的岗位,还有一些兼职,你可以去看看。远程办公挺好的,很方便,你可以试如何买一款真正适合自己的手机?能全部读懂的,也算是半个内行了不同的人有不同的用机需求,也正因如此,评判一款手机是否好用的标准才会是多种多样的。而作为消费者,我们在选购手机的时候,更多还是按需求出发,着重去关注某一方面,才不会纠结而选对一款更石头科技发布两款新品,自清洁能帮助它拿下高端市场吗?记者伍洋宇编辑3月22日,石头科技更新自清洁扫拖机器人G10S系列,增加石头自清洁扫拖机器人G10S和石头自清洁扫拖机器人G10SPro两款产品。据介绍,G10S系列主打卖点是更全掏出京东方新屏幕的真我GTNeo3值得买吗?民间评测给你完整数据欢迎来到,神猴数码。闲聊数码栏目!下一期,大家想听什么歌,可以在评论区点歌!现在谈到国内市场,各行各业都离不开一个字,那就是卷!国产手机作为一个已经卷了10年的行业,依然没有逃脱这宇宙大爆炸根据大爆炸宇宙学的理论,宇宙是一次大爆炸所形成。所谓大爆炸,是形象地比喻宇宙从早期的极度高温(大于1032K)和极大密度的平衡状态,逐渐降低温度,膨胀体积,疏松密度的过程。当温度降东航Mu5735飞机垂直坠毁燃起大火,黑匣子还有可能被找到吗?首先可以肯定的是记录飞机数据和音频系统的黑匣子是可以找到的。因为坠毁的地点是广西山林而不是茫茫的大海,很容易找到。3月21日下午,东方航空MU5735航班执行昆明至广州任务时,在广