一.支付宝小程序 自定义组件 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);
五.支付宝小程序性能测试