uni-app 开发问题记录(一)

一.支付宝小程序 自定义组件 ref 返回undefined

  配置文件manifest.json 中 支付宝小程序节点增加"component2" : true

   "mp-alipay" : {
        "usingComponents" : true,
        "appid" : "2021002131661052",
        "component2" : true
    },

二.支付宝小程序 直接在自定义组件上设置样式无效

外面包一层view 设置class处理

三.支付宝小程序 真机调试时 flex:1 无效  临时使用 calc(100vh - 30rpx)

四.支付宝小程序 授权和获取用户信息和用户ID

前端代码

let successFlag = false;
let authCode = '';

await uni.login({
            provider: this.loginProvider,
            // #ifdef MP-ALIPAY
            scopes: 'auth_user', //支付宝小程序需设置授权类型  取用户信息和用户ID不同   取用户ID =>auth_user  取用户信息=> auth_base
            // #endif
            success: async (res) => {
                console.log('login success:', res);
                authCode = res.authCode;
                successFlag = true;
            },
            fail: (err) => {
                console.log('login fail:', err);
                uni.showModal({
                    content: `登录失败: ${JSON.stringify(err)}`,
                    showCancel: false
                })
                successFlag = false;
            }
        }).catch(err => {
    
        });

       if(successFlag){//获取用户ID
            let paramIn = {};
            paramIn.authorization_code = authCode;
            paramIn.app_id = store.state.app_id;
            await Axios(paramIn, 'AlipayService/Alipay_system_oauth_token').then(data => {
                if(data.content.user_id){
                    let userInfo = {};
                    userInfo.user_id = data.content.user_id;
                    userInfo.access_token = data.content.access_token;
                    console.log(userInfo);
                    store.commit('login',userInfo);
                    uni.setStorageSync('userInfo',userInfo);
                }
            }).catch(error => {
                console.log(error)
            });
        }

//if(successFlag){
            // await uni.getUserInfo({
            //     provider: this.loginProvider,
            //     success: async (resData) => {
            //         console.log('getUserInfo success:', resData);
            //         // 更新保存在 store 中的登录状态
            //         store.commit('login',resData);
            //         await uni.setStorageSync('userInfo',resData);
            //         successFlag = true;
            //     }, 
            //     fail: (errData) => {
            //         console.log('login fail:', errData);
            //         successFlag = false;
            //     }
            // })
       // }

后端代码  APP_ID 公钥和私钥 根据官方文档获取

 IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", _alipay_oauth_tokenInDto.app_id, _AppConfig.private_key, "json", "1.0", "RSA2", _AppConfig.public_key, "utf-8", false);
            AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
            request.GrantType = "authorization_code";
            request.Code = _alipay_oauth_tokenInDto.authorization_code;
            AlipaySystemOauthTokenResponse response = client.Execute(request);

            JObject _dynamicOutDto = JsonUtil._JosonToDynamic(response.Body);

五.支付宝小程序性能测试 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值