Home >WeChat Applet >Mini Program Development >Alipay mini program development - using Alipay's SDK to obtain user ID
The Alipay applet can only obtain the user's nickname and avatar on the front end, but this is far from enough. We at least need to obtain the user's Alipay User ID. At this time, we must use Alipay's SDK to obtain it on the back end. , of course the front end needs to issue an httprequest request. The following is modified based on the examples in the first two articles
Alipay applet front end
app.js
App({ globalData:{ studentid:'', username:'', apiurl: 'http://XXX' }, getUserInfo(){ var that = this return new Promise((resovle,reject)=>{ if(this.userInfo) resovle(this.userInfo); //调用用户授权 api 获取用户信息 my.getAuthCode({ scopes: 'auth_user', success:(res) =>{ if (res.authCode) { my.httpRequest({ url: that.globalData.apiurl + '/api/AliPay/GetUserInfo', method: 'GET', data: { auth_code: res.authCode }, dataType: 'json', success: function(res) { that.globalData.studentid = res.data.data.student_id; that.globalData.username = res.data.data.user_name; //获取用户信息,照片、昵称 my.getAuthUserInfo({ scopes: ['auth_user'], success: (res) => { that.userInfo = res; resovle(that.userInfo); }, fail:() =>{ reject({}); } }); console.log('返回UserDetail', res.data.data); }, fail: function(res) { my.alert({content: 'fail'}); }, complete: function(res) { my.hideLoading(); } }); } }, fail:() =>{ reject({}); } }); }); }, onLaunch(options) { }, onShow(options) { // 从后台被 scheme 重新打开 }, });
The above code adjustment Get the backend webapi http://XXX/api/AliPay/GetUserInfo to obtain user information, and store the obtained userid and username into the global variable globalData
const app = getApp(); Page({ data: { src: '', username: '', studentid: '' }, imageError: function (e) { console.log('image 发生错误', e.detail.errMsg) }, imageLoad: function (e) { console.log('image 加载成功', e); }, onLoad(query) { // 页面加载 app.getUserInfo().then( user => { console.info(user); //设置头像 if (user.avatar.length > 0) { this.setData({src: user.avatar}); } else{ this.setData({src: '/images/tou.png'}); } //设置用户名 if (app.globalData.username) { this.setData({username: app.globalData.username}); } else { this.setData({username: user.nickName}); } if(app.globalData.studentid) { //设置UserId this.setData({studentid: app.globalData.studentid}); } } ); }, onShow() { // 页面显示 }, onReady() { } });
Originally, the official only provides .net framwork SDK, but someone has already transplanted the .net core version on the Internet. Run Install-Package Alipay.AopSdk.Core to install it. Configure the following in appsettings.json and write in your mini program’s public key, private key, appid and other parameters. uid does not need to be written
"Alipay": { //校园码支付宝小程序正式环境 "AlipayPublicKey": "", "AppId": "", "CharSet": "UTF-8", "GatewayUrl": "https://openapi.alipay.com/gateway.do", "PrivateKey": "", "SignType": "RSA2", "Uid": "" }
, and then you need to inject Service
in the backend core. The Startup.cs code subsidizes all, only the relevant ones are posted. This code does just that. Read Get appsettings.json and inject it into the service
private void ConfigureAlipay(IServiceCollection services) { var alipayOptions = Configuration.GetSection("Alipay").Get<AlipayOptions>(); //检查RSA私钥 AlipayConfigChecker.Check(alipayOptions.SignType, alipayOptions.PrivateKey); services.AddAlipay(options => options.SetOption(alipayOptions)).AddAlipayF2F(); } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { //配置alipay服务 ConfigureAlipay(services); ......
After getting the authorization code passed from the front end, use the authorization to obtain the user information
private AlipayUserInfoShareResponse GetShareResponse(string auth_code) { var alipaySystemOauthTokenRequest = new AlipaySystemOauthTokenRequest { Code = auth_code, GrantType = "authorization_code" }; var oauthTokenResponse = _alipayService.Execute(alipaySystemOauthTokenRequest); AlipayUserInfoShareRequest requestUser = new AlipayUserInfoShareRequest(); AlipayUserInfoShareResponse userinfoShareResponse = _alipayService.Execute(requestUser, oauthTokenResponse.AccessToken); return userinfoShareResponse; } /// <summary> /// 获取用户信息 /// </summary> /// <param name="auth_code"></param> /// <returns></returns> [HttpGet] [Route("GetUserInfo")] public ActionResult GetUserInfo(string auth_code) { try { AlipayUserInfoShareResponse userinfoShareResponse = GetShareResponse(auth_code); return new JsonResult(new { data = userinfoShareResponse }); } catch (Exception ex) { log.Error("错误:" + ex.ToString()); return new JsonResult(new { data = ex.ToString() }); } }
Related articles:
Introduction to the comparison and differences between WeChat mini program and Alipay mini program
The above is the detailed content of Alipay mini program development - using Alipay's SDK to obtain user ID. For more information, please follow other related articles on the PHP Chinese website!