支付宝小程序获取用户的user_id案例

官方文档:https://docs.alipay.com/mini/introduce/auth

一、首先获取authcode

官方文档:https://docs.alipay.com/mini/api/openapi-authorize

my.getAuthCode({
  scopes: 'auth_base',
  success: (res) => {
	// res.authCode
	//发送授权码到服务后台进行解析
    // 根据authcode,调用后台接口,获取用户ID
  }
});

二、根据authcode获取用户ID(user_id)

服务端SDK文档:https://docs.open.alipay.com/54/103419/

如果要获取用户昵称、头像,还需要先进行用户授权

解析授权码

/// <summary>
/// 获取支付宝用户id
/// </summary>
/// <param name="auth_code">小程序授权码</param>
/// <param name="app_id">appid</param>
/// <param name="merchant_private_key">应用私钥,和应用公钥匹配 在密钥生产器中可见</param>
/// <param name="alipay_public_key">支付宝公钥(区别于应用公钥),开放平台中接口加签方式中可见</param>
/// <returns></returns>
public static string GetUserID(string auth_code, string app_id, string merchant_private_key, string alipay_public_key)
{
	string result = "";
	
	try
	{
		IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", app_id, merchant_private_key, "json", "1.0", "RSA2", alipay_public_key, "GBK", false);
		AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
		request.GrantType = "authorization_code";
		request.Code = auth_code;
		request.RefreshToken = "";
		AlipaySystemOauthTokenResponse response = client.Execute(request);
		JObject jobj = (JObject)JsonConvert.DeserializeObject(response.Body);
		JObject jk = (JObject)jobj["alipay_system_oauth_token_response"];
		if (jk.Property("code") == null)
		{
			string user_id = jobj["alipay_system_oauth_token_response"]["user_id"].ToString();
			result = ReturnInfo.ListReturn("S", "", user_id);
		}
		else
		{
			string msg = jobj["alipay_system_oauth_token_response"]["msg"].ToString();
			result = ReturnInfo.ListReturn("E", msg, "");
		}
	}
	catch (Exception ex)
	{
		result = ReturnInfo.ListReturn("E", ex.Message, "");
	}
	return result;
}

获取用户信息

      my.getAuthUserInfo({
          success: (res) => {
            console.log("用户信息:" + JSON.stringify(res))
            var nickName = res.nickName;
            var avatar = res.avatar;
            });
          },
          fail: err => console.log(err)
        });

 

posted @   JackieDYH  阅读(134)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示