# 示例
本示例基于被共享环境的小程序视角,以如何调用云函数进行展示。
小程序A将云环境a共享给小程序B后,小程序B基于被授权的情况下进入云环境a,创建了属于小程序B的一个云函数test;
在云函数中使用与在小程序中并没有多少区别(需 wx-server-sdk
版本大于或等于 2.3.0
):
const cloud = require('wx-server-sdk')
exports.main = async (event) => {
// 声明新的 cloud 实例
var c1 = new cloud.Cloud({
// 资源方 AppID
resourceAppid: 'wxe0e2656d74f0bff3',
// 资源方环境 ID
resourceEnv: 'test-f96b31',
})
// 跨账号调用,必须等待 init 完成
// init 过程中,资源方小程序对应环境下的 cloudbase_auth 函数会被调用,并需返回协议字段(见下)来确认允许访问、并可自定义安全规则
await c1.init()
// 完成后正常使用资源方的已授权的云资源
return c1.callFunction({
name: '函数名',
data: {},
})
}
如果有些云调用能力,需要指定发起方 appid,可以在云调用之前传入调用方 appid
cloud 正常形式
const cloud = require('wx-server-sdk')
exports.main = async (event) => {
// 初始化
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
// 使用使用方小程序(非资源方)身份发起支付
return cloud.cloudPay({ appid: '发起支付的小程序appid' }).unifiedOrder({
"body" : "小秋TIT店-超市", // 商品描述
"outTradeNo" : "1217752501201407033233368018", // 商户订单号
"spbillCreateIp" : "请传入终端 ip 地址,支持 ipv6", // 终端 IP
"subMchId" : "1900009231", // 商户号
"totalFee" : 1, // 总金额
"envId": "test-f0b102", // 云函数环境名称
"functionName": "pay_cb" // 支付结果通知回调云函数名
})
}
实例调用形式
const cloud = require('wx-server-sdk')
exports.main = async (event) => {
// 声明新的 cloud 实例
var c1 = new cloud.Cloud({
// 资源方 AppID
resourceAppid: 'wxe0e2656d74f0bff3',
// 资源方环境 ID
resourceEnv: 'test-f96b31',
})
// 跨账号调用,必须等待 init 完成
// init 过程中,资源方小程序对应环境下的 cloudbase_auth 函数会被调用,并需返回协议字段(见下)来确认允许访问、并可自定义安全规则
await c1.init()
// 完成后正常使用资源方的已授权的云资源,
return c1.cloudPay({ appid: '发起支付的小程序appid' }).unifiedOrder({
"body" : "小秋TIT店-超市", // 商品描述
"outTradeNo" : "1217752501201407033233368018", // 商户订单号
"spbillCreateIp" : "请传入终端 ip 地址,支持 ipv6", // 终端 IP
"subMchId" : "1900009231", // 商户号
"totalFee" : 1, // 总金额
"envId": "test-f0b102", // 云函数环境名称
"functionName": "pay_cb" // 支付结果通知回调云函数名
})
}