日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种?

發布時間:2023/12/4 asp.net 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

獲取UnionID是開發微信公眾號/小程序中很有必要的一個環節,特別是針對一個公司擁有多個公眾號小程序而推出的機制,實現打通賬戶一體化,用UnionID來區分多平臺的唯一性。

官方的解釋:如果開發者擁有多個移動應用、網站應用、和公眾帳號(包括小程序),可通過 UnionID 來區分用戶的唯一性,因為只要是同一個微信開放平臺帳號下的移動應用、網站應用和公眾帳號(包括小程序),用戶的 UnionID 是唯一的。換句話說,同一用戶,對同一個微信開放平臺下的不同應用,unionid是相同的。

相關公眾號開發文章:

.NET Core 小程序開發零基礎系列(1)——開發者啟用并牽手成功

.NET Core 小程序開發零基礎系列(2)——小程序服務通知(模板消息)

.NET Core 微信小程序支付——(統一下單)

.NET Core 微信小程序退款——(統一退款)

目錄1、UnionID機制說明2、UnionID獲取的6種途徑(代碼實現)3、總結

1

UnionID機制說明

如果開發者擁有多個移動應用、網站應用、和公眾帳號(包括小程序),可通過 UnionID 來區分用戶的唯一性,因為只要是同一個微信開放平臺帳號下的移動應用、網站應用和公眾帳號(包括小程序),用戶的 UnionID 是唯一的。換句話說,同一用戶,對同一個微信開放平臺下的不同應用,unionid是相同的。

2

UnionID獲取的6種途徑(代碼實現)

綁定了開發者帳號的小程序,可以通過以下途徑獲取 UnionID

UnionID獲取的6種途徑

  • 調用接口 wx.getUserInfo,從解密數據中獲取 UnionID。注意本接口需要用戶授權,請開發者妥善處理用戶拒絕授權后的情況。

  • 如果開發者帳號下存在同主體的公眾號,并且該用戶已經關注了該公眾號。開發者可以直接通過 wx.login + code2Session 獲取到該用戶 UnionID,無須用戶再次授權。

  • 如果開發者帳號下存在同主體的公眾號或移動應用,并且該用戶已經授權登錄過該公眾號或移動應用。開發者也可以直接通過 wx.login + code2Session 獲取到該用戶 UnionID ,無須用戶再次授權。

  • 用戶在小程序(暫不支持小游戲)中支付完成后,開發者可以直接通過getPaidUnionId接口獲取該用戶的 UnionID,無需用戶授權。注意:本接口僅在用戶支付完成后的5分鐘內有效,請開發者妥善處理。

  • 小程序端調用云函數時,如果開發者帳號下存在同主體的公眾號,并且該用戶已經關注了該公眾號,可在云函數中通過 cloud.getWXContext 獲取 UnionID。

  • 小程序端調用云函數時,如果開發者帳號下存在同主體的公眾號或移動應用,并且該用戶已經授權登錄過該公眾號或移動應用,也可在云函數中通過 cloud.getWXContext 獲取 UnionID。

  • 第一種UnionID獲取

    調用接口 wx.getUserInfo,從解密數據中獲取 UnionID。注意本接口需要用戶授權,請開發者妥善處理用戶拒絕授權后的情況。

    最常見的一種,很多同學應該用的這種。

    流程:用戶授權——獲取密鑰——后端解密——獲取UnionID

    開放平臺綁定小程序如圖:

    前端授權獲取密鑰:

    后端解密獲取UnionID

    varsettingItem = Senparc.Weixin.Config.SenparcWeixinSetting.Items[appID]; JsCode2JsonResult jsonResult = SnsApi.JsCode2Json(settingItem.WxOpenAppId, settingItem.WxOpenAppSecret, param.Code); if (jsonResult.errcode != ReturnCode.請求成功) { return (false, jsonResult.errmsg); } string?unionID; var encryptedData = Senparc.Weixin.WxOpen.Helpers.EncryptHelper.DecodeEncryptedData(jsonResult.session_key, param.EncryptedData, param.IV); DecodedUserInfo decodedUserInfo = SerializerHelper.GetObject<DecodedUserInfo>(encryptedData); unionID?=?decodedUserInfo.unionId;

    第二種UnionID獲取

    如果開發者帳號下存在同主體的公眾號,并且該用戶已經關注了該公眾號。開發者可以直接通過 wx.login + code2Session 獲取到該用戶 UnionID,無須用戶再次授權。

    流程:關注了公眾號——獲取UnionID

    1、關注同一主體公眾號就好了

    2、獲取UnionID,如下代碼

    varsettingItem = Senparc.Weixin.Config.SenparcWeixinSetting.Items[appID]; JsCode2JsonResult jsonResult = SnsApi.JsCode2Json(settingItem.WxOpenAppId, settingItem.WxOpenAppSecret, param.Code); if (jsonResult.errcode != ReturnCode.請求成功) { return (false, jsonResult.errmsg); } string unionID; if (!jsonResult.unionid.IsNullOrEmpty()) { unionID = jsonResult.unionid; Console.WriteLine($"unionID獲取(無需解密):參數EncryptedData={param.EncryptedData},IV={param.IV},unionID={unionID}"); }

    第三種UnionID獲取

    如果開發者帳號下存在同主體的公眾號或移動應用,并且該用戶已經授權登錄過該公眾號或移動應用。開發者也可以直接通過 wx.login + code2Session 獲取到該用戶 UnionID ,無須用戶再次授權。

    流程:與第二步流程類似,可以參數

    第四種UnionID獲取

    用戶在小程序(暫不支持小游戲)中支付完成后,開發者可以直接通過getPaidUnionId接口獲取該用戶的 UnionID,無需用戶授權。注意:本接口僅在用戶支付完成后的5分鐘內有效,請開發者妥善處理。

    流程:訂單支付成功得到相應信息——通過接口請求getPaidUnionId得到UnionID

    1、支付流程請參考:.NET Core 微信小程序支付——(統一下單)

    2、通過接口請求getPaidUnionId得到UnionID

    ????以下兩種方式任選其一。

    ? ? a、微信支付訂單號(transaction_id)

    https://api.weixin.qq.com/wxa/getpaidunionid?access_token=ACCESS_TOKEN&openid=OPENID&transaction_id=TRANSACTION_ID

    ? ? b、微信支付商戶訂單號和微信支付商戶號(out_trade_no 及 mch_id)

    https://api.weixin.qq.com/wxa/getpaidunionid?access_token=ACCESS_TOKEN&openid=OPENID&mch_id=MCH_ID&out_trade_no=OUT_TRADE_NO

    通過兩個接口請求方式就可以得到UnionID

    第五種UnionID獲取

    小程序端調用云函數時,如果開發者帳號下存在同主體的公眾號,并且該用戶已經關注了該公眾號,可在云函數中通過 cloud.getWXContext 獲取 UnionID。

    流程:關注了公眾號——通過云函數獲取UnionID

    官方函數說明:

    代碼示例:

    const?cloud?=?require('wx-server-sdk') exports.main = async (event, context) => { const { OPENID, APPID, UNIONID, ENV, } = cloud.getWXContext() return { OPENID, APPID, UNIONID, ENV, } }

    第六種UnionID獲取

    小程序端調用云函數時,如果開發者帳號下存在同主體的公眾號或移動應用,并且該用戶已經授權登錄過該公眾號或移動應用,也可在云函數中通過 cloud.getWXContext 獲取 UnionID。

    流程:與第五種類似,可以參數。

    3

    總結

    獲取UnionID是開發微信眾號/小程序很有必要的一個環節,主要為了打通微信多平臺體系下的唯一性,6種方式中,其實最關鍵的一步是將當前開發的應用綁定在開放平臺上,希望這篇文章讓你對UnionID有些新的認識,也希望這篇實戰文章能夠真正的幫助到你。

    相關推薦


    點擊【在看】與好朋友一起分享

    總結

    以上是生活随笔為你收集整理的.NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。