Maison > Article > Applet WeChat > Développement d'un mini-programme Alipay - utilisation du SDK d'Alipay pour obtenir l'ID utilisateur
L'applet Alipay ne peut obtenir que le pseudo et l'avatar de l'utilisateur sur le front-end, mais c'est loin d'être suffisant. Nous devons au moins obtenir l'identifiant utilisateur Alipay de l'utilisateur. Pour le moment, nous devons utiliser le SDK d'Alipay pour l'obtenir. sur le back-end. , bien sûr, le front-end doit émettre une requête httprequest Ce qui suit est modifié en fonction des exemples des deux articles précédents
Front-end de l'applet Alipay
app.jsApp({ 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 重新打开 }, });ce qui précède Le code appelle le webapi backend http://XXX/api/AliPay/GetUserInfo pour obtenir des informations sur l'utilisateur et enregistre l'ID utilisateur et le nom d'utilisateur obtenus dans la variable globale 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() { } });À l'origine, le site officiel ne fournit que le SDK du framework .net, mais quelqu'un sur Internet a déjà transplanté la version principale de .net. Exécutez le package d'installation Alipay.AopSdk.Core pour l'installer. appsettings.json et écrivez la clé publique et la clé privée de votre mini programme, l'appid et les autres paramètres uid n'ont pas besoin d'être écrits
"Alipay": { //校园码支付宝小程序正式环境 "AlipayPublicKey": "", "AppId": "", "CharSet": "UTF-8", "GatewayUrl": "https://openapi.alipay.com/gateway.do", "PrivateKey": "", "SignType": "RSA2", "Uid": "" }Ensuite, dans le noyau backend, vous devez injecter Service
.
. Le code Startup.cs subventionnera tout, et publiera uniquement ceux qui sont pertinents. Pour ce faire, lisez appsettings.json et injectez-le dans le serviceprivate 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); ......Après avoir obtenu l'autorisation. code transmis depuis le front-end, utilisez l'autorisation pour obtenir les informations utilisateur
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() }); } }Articles connexes :
Comment utiliser le SDK Alipay ?
Introduction à la comparaison et aux différences entre le mini programme WeChat et le mini programme Alipay
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!