应用信息配置,这里最为主要的还是RSA(SHA256)密钥生成,有坑需注意:
4、调用接口获取用户信息
#region 支付宝网页授权获取userid /// <summary> /// 堆代码 duidaima.com ///支付宝授权登录 /// </summary> /// <param name="Sid">店铺编号</param> /// <returns></returns> public ActionResult SupplierAliPay() { try { string ReturnUrl = ""; //第一步:获取auth_code接口拼接 var admins = new admins { Id = 1 }.SelectObject(); string AliRedirect_url = "获取回调地址"; //http请求格式必须与公众平台配置的一致 //注意假如你需要获取到用户的新的的话SCOPe类型使用auth_userinfo,而我在支付那里使用的是auth_base这样不需要用户授权,可以让用户丝毫没有感觉,体验性好 ReturnUrl = "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=" + 应用APPid + "&scope=auth_base&state=" + 自定义参数( 非必填) + "&redirect_uri=" + Url.Encode(AliRedirect_url) + ""; return Redirect(ReturnUrl); } catch (Exception ex) { return View(); } } /// <summary> ///获取用户buyer_id调转AliPaypage获取支付宝账号的userid (授权回调) /// </summary> /// <param name="auth_code"></param> /// <param name="state"></param> /// <returns></returns> public ActionResult GetUserAliUserID(string auth_code, string state) { try { auth_code = Request.QueryString["auth_code"]; //授权码 state = Request.QueryString["state"]; string AliAppid = ""; //支付宝应用Appid string Userid = ""; //支付宝用户唯一编号//应用私钥 string YOUR_PRIVATE_KEY = ""; //支付宝公钥 string ALIPAY_PUBLIC_KEY = ""; Aop.Api.IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", AliAppid, YOUR_PRIVATE_KEY, "json", "1.0", "RSA2", ALIPAY_PUBLIC_KEY, "GBK", false); //获取access_token AlipaySystemOauthTokenRequest requestAccess_token = new AlipaySystemOauthTokenRequest(); requestAccess_token.GrantType = "authorization_code"; requestAccess_token.Code = auth_code; AlipaySystemOauthTokenResponse responseAccess_token = client.Execute(requestAccess_token); Userid = responseAccess_token.UserId; //支付宝用户的唯一userId //responseAccess_token.AlipayUserId;用户的open_id( 已废弃,请勿使用 ) //获取用户信息,通过access_token调用用户信息共享接口获取用户信息 AlipayUserInfoShareRequest requestUserinfo = new AlipayUserInfoShareRequest(); AlipayUserInfoShareResponse responseUserinfo = client.Execute(requestUserinfo, responseAccess_token.AccessToken); string UserName = responseUserinfo.NickName;//昵称 string Address = responseUserinfo.City;//所属城市 string UserImage= responseUserinfo.Avatar;//用户头像 string gender = responseUserinfo.Gender;//M为男性,F为女性, 如果没有数据的时候不会返回该数据,请做好容错return Redirect("/mobile_user/HstyAliPayPayment/AliPayPage?Sid="+Sid+ "&buyer_id="+Userid+""); } catch (Exception ex) { return view(); } } #endregion