见BUG 描述
- 发布:2023-06-07 17:51
- 更新:2023-06-13 17:20
- 阅读:253
产品分类: uniCloud/App
示例代码:
操作步骤:
见BUG 描述
见BUG 描述
预期结果:
见BUG 描述
见BUG 描述
实际结果:
见BUG 描述
见BUG 描述
bug描述:
因为小程序使用uni-pay2需要URL化请求uni-pay-co,在开发者工具中用微信小程序请求URL化后的uni-pay-co,报错“FunctionBizError:不支持的支付方式wxpay-devtools”,经检查,是uni-pay-co中的函数把小程序端的uni.request的参数clientInfo中的platform识别错了,应该取用clientInfo中的uniPlatform字段值而不是platform字段值,在小程序端的uni.request的参数中手动更改clientInfo为{platform: uni.getSystemInfoSync().uniPlatform}才能正常使用支付功能。希望更改此bug。
uni.request这个请求是不带clientInfo的, 你的clientInfo是你自己传的吧?
你是不是这样写的
uni.request({
url: "xxxxx",
data: {
clientInfo: uni.getSystemInfoSync()
}
});
并没有说clientInfo就是uni.getSystemInfoSync()
还有,既然你用uni.request请求,代表还是uniapp项目,那为什么不用callFunction来调用呢? callFunction也支持多空间
-
易者 (作者)
callFunction难道不是只能在云端使用吗?那只有用unicloud的服务空间的时候,客户端是H5才能用callFunction,但如果客户端是uniapp编译成的小程序上线后请求云端API,不是只能用uni.request吗?
2023-06-13 11:12
-
易者 (作者)
回复 DCloud_uniCloud_VK: 用callFunction来调用云函数,是不是只能调用普通云函数,不能调用云对象,即使云对象URL化了也不行,那就是说,如果小程序端要使用uni-pay-co和uni-id-co,都不能用callFunction而只能用uni.request?因为uni-pay-co和uni-id-co写的是云对象。
2023-06-13 16:38
我说完整一点
只要uniapp开发的h5、小程序、app,都能直接调用云函数或云对象。
云函数
用callFunction来调用
uniCloud.callFunction({
name: '云函数名',
data: {
a: 1
},
success(){},
fail(){},
complete(){}
});
云对象
已 uni-id-co 为例
const uniIdCo = uniCloud.importObject('uni-id-co');
await uniIdCo.login({
username: "admin",
password: "123456",
captcha: "6666"
})
还可以直接调用别的服务空间内的云函数和云对象
云函数
用callFunction来调用
const myCloud = uniCloud.init({
provider: 'aliyun',
spaceId: 'xxxx-yyy',
clientSecret: 'xxxx'
});
myCloud.callFunction({
name: '云函数名',
data: {
a: 1
},
success(){},
fail(){},
complete(){}
});
云对象
已 uni-id-co 为例
const myCloud = uniCloud.init({
provider: 'aliyun',
spaceId: 'xxxx-yyy',
clientSecret: 'xxxx'
});
const uniIdCo = myCloud.importObject('uni-id-co');
await uniIdCo.login({
username: "admin",
password: "123456",
captcha: "6666"
})
-
易者 (作者)
很详细,谢谢!也就是说,用uniapp开发的h5、小程序、app等不同的客户端,只要请求的服务端是unicloud的服务空间,就可以用callFunction和importObject完全替代uni.request了,只有在不同客户端请求的服务端不是unicloud的服务空间的时候才用uni.request。看来是我之前理解错了。
2023-06-13 18:25
-
易者 (作者)
但是小程序端的callFunction和importObjec又没有指定请求URL的地方,怎么能把请求发送到unicloud的正确的服务空间地址去呢?
2023-06-13 18:57
-
易者 (作者)
回复 DCloud_uniCloud_VK: 明白了,刚也看到了文档里面说uniCloud.init方法接受一个options参数,options参数里有endpoint字段,看到endpoint字段大概就能理解了。谢谢耐心回复!
2023-06-13 21:40
易者 (作者)
是这样写的,但如果不改,在小程序端用uni-pay2支付,会报错不支持的支付方式。小程序端用的uni.request请求云端接口,uniPlatform和platform都会上报,但platform报的是wxpay-devtools,而uniPlatform报的才能正确通过。
2023-06-13 11:09