微信小程序开发文档 第10页
CloudPay.unifiedOrder() 支持端:云函数 2.0.2 统一下单 说明 商户在小程序中先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易后调起支付。 关键参数说明 云开发相关关键参数说明: 回调函数设置:envId 和 functionName 用来设置接收支付后的异步通知回调的云函数 返回字段 payment:该对象即是在小程序端调用 wx.requestPayment 所需的信息 回调云函数返回协议 支付结果回调的云函数必须返回如下一个对象,否则会视为回调不成功,云函数会收到重复的支付回调: 字段名 变量名 必填 类型 描述 错误码 errcode 是 Number 0 错误信息 errmsg 是 String 参数说明 字段名 变量名 必填 类型 示例值 描述 结果通知回调云函数名 functionName 是 String paycallback 接收微信支付异步通知回调的云函数名 结果通知回调云函数环境 envId 是 String test-123 接收微信支付异步通知回调的云函数所在的环境 ID 子商户号 subMchId 是 String(32) 1900000109 微信支付分配的子商户号 设备号 deviceInfo 否 String(32) 013467007045764 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传”WEB” 随机字符串 nonceStr 是 String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串,不长于32位。推荐随机数生成算法 商品描述 body 是 String(128) 腾讯充值中心-QQ会员充值 商品简单描述,该字段须严格按照规范传递,具体请见参数规定 商品详情 detail 否 String(6000) 商品详细描述,对于使用单品优惠的商户,该字段必须按照规范上传,详见“单品优惠参数说明” 附加数据 attach 否 String(127) 说明 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 商户订单号 outTradeNo 是 String(32) 1217752501201407033233368018 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_- 货币类型 feeType 否 String(16) CNY 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型 总金额 totalFee 是 Int 888 订单总金额,只能为整数,详见支付金额 终端IP spbillCreateIp 是 String(64) 123.12.12.123 支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP 交易起始时间 timeStart 否 String(14) 20091225091010 订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则 交易结束时间 timeExpire 否 String(14) 20091227091010 订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。订单失效时间是针对订单号而言的,由于在请求支付的时候有一个必传参数prepay_id只有两小时的有效期,所以在重入时间超过2小时的时候需要重新请求下单接口获取新的prepay_id。其他详见时间规则。建议:最短失效时间间隔大于1分钟 订单优惠标记 goodsTag...
Cloud.openapi 云调用 API 对象。 Cloud.CloudID(cloudID: string) 支持端:小程序 2.7.0 声明字符串为 CloudID(开放数据 ID),该接口传入一个字符串,返回一个 CloudID 特殊对象,将该对象传至云函数可以获取其对应的开放数据。详见通过云调用获取开放数据 参数 cloudID: string 通过开放能力在小程序端获取得到的 CloudID 示例代码 小程序端调用 wx.cloud.callFunction({ name: 'myFunction', data: { weRunData: wx.cloud.CloudID('xxx'), // 这个 CloudID 值到云函数端会被替换 obj: { shareInfo: wx.cloud.CloudID('yyy'), // 非顶层字段的 CloudID 不会被替换,会原样字符串展示 } } }) 在云函数端接收到的 event 将会包含对应开放数据的对象,其中 event.weRunData 会因为符合规则而包含开放数据,event.shareInfo 则不会,event 结构将如下: { "weRunData": { "cloudID": "27_Ih-9vxDaOhIbh48Bdpk90DUkUoNMAPaNtg7OSGM-P2wPEk1NbspjKGoql_g", "data": { "stepInfoList": [ { "step": 9103, "timestamp": 1571673600 }, { "step": 9783, "timestamp": 1571760000 } ], "watermark": { "appid": "wx3d289323f5900f8e", "timestamp": 1574338655 } } }, "obj": { "shareInfo": "xxx" } } Cloud.getOpenData(list: string[]): Object 支持端:云函数 获取 CloudID 对应的开放数据 参数 list: string[] 要获取对应开放数据的 CloudID 列表 返回值 Object 属性 类型 说明 list Array.<Object> 开放数据列表,与传入的 CloudID 列表一一对应 list 的结构 属性 类型 说明 cloudID string 开放数据 CloudID data Object 开放数据 说明 详见通过云调用获取开放数据 示例代码 const cloud = require('wx-server-sdk')...
Cloud.getWXContext(): Object 支持端:云函数 在云函数中获取微信调用上下文 返回值 Object wxContext 属性 类型 说明 OPENID string 小程序用户 openid,小程序端调用云函数时有 APPID string 小程序 AppID,小程序端调用云函数时有 UNIONID string 小程序用户 unionid,小程序端调用云函数,并且满足 unionid 获取条件时有 ENV string 云函数所在环境的 ID SOURCE string 调用来源(云函数本次运行是被什么触发) CLIENTIP string 小程序客户端 IPv4 地址 CLIENTIPV6 string 小程序客户端 IPv6 地址 使用说明 SOURCE 值跟随调用链条传递,会表示调用链路情况(用英文逗号分隔),比如小程序调用云函数 A,再在云函数 A 内调用云函数 B,则 A 获得的 SOURCE 为 wx_client, B 内获得的 SOURCE 为 wx_client,scf(微信小程序调用,然后云函数调用)。 SOURCE 的枚举类型: SOURCE 值 含义 wx_devtools 微信 IDE 调用 wx_client 微信小程序调用 wx_http 微信 HTTP API 调用 wx_unknown 微信未知来源调用 scf 云函数调用云函数 其他 非微信端触发 如果在云函数本地调试中,ENV 会为 local,SOURCE 会为 wx_client。 注意事项 请不要在 exports.main 外使用 getWXContext,此时尚没有调用上下文,无法获取得到信息。 示例代码 const cloud = require('wx-server-sdk') exports.main = async (event, context) => { const { OPENID, APPID, UNIONID, ENV, } = cloud.getWXContext() return { OPENID, APPID, UNIONID, ENV, } } Cloud.logger(): Object 支持端:云函数 1.5.0 云函数中使用高级日志能力 返回值 Object logger 属性 类型 说明 log function 默认等级的日志 info function...
Cloud.getTempFileURL(fileList: string[]): Promise<Object> 支持端:小程序 , 云函数 , Web 用云文件 ID 换取真实链接,公有读的文件获取的链接不会过期,私有的文件获取的链接十分钟有效期。一次最多取 50 个。 参数 fileList: string[] 要换取临时链接的云文件 ID 列表 返回值 Promise.<Object> 属性 类型 说明 fileList Object 文件列表 fileList 的结构 属性 类型 说明 fileID string 云文件 ID tempFileURL string 临时文件路径 status number 状态码,0 为成功 errMsg string 成功为 ok,失败为失败原因 小程序端示例 Promise 风格 wx.cloud.getTempFileURL({ fileList: [{ fileID: 'a7xzcb', maxAge: 60 * 60, // one hour }] }).then(res => { // get temp file URL console.log(res.fileList) }).catch(error => { // handle error }) Callback 风格 wx.cloud.getTempFileURL({ fileList: ['cloud://xxx', 'cloud://yyy'], success: res => { // get temp file URL console.log(res.fileList) }, fail: err => { // handle error } }) 云函数端示例 const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) exports.main = async (event, context) => { const fileList =...
Cloud.deleteFile(fileList: string[]): Promise<Object> 支持端:小程序 , 云函数 , Web 从云存储空间删除文件,一次最多 50 个 参数 fileList: string[] 云文件 ID 字符串数组 返回值 Promise.<Object> 属性 类型 说明 fileList Object 文件列表 fileList 的结构 属性 类型 说明 fileID string 云文件 ID status number 状态码,0 为成功 errMsg string 成功为 ok,失败为失败原因 小程序端示例 Promise 风格 wx.cloud.deleteFile({ fileList: ['a7xzcb'] }).then(res => { // handle success console.log(res.fileList) }).catch(error => { // handle error }) Callback 风格 wx.cloud.deleteFile({ fileList: ['a7xzcb'], success: res => { // handle success console.log(res.fileList) }, fail: err => { // handle error }, complete: res => { // ... } }) 云函数端示例 const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) exports.main = async (event, context) => { const fileIDs = ['xxx', 'xxx'] const result = await cloud.deleteFile({ fileList: fileIDs, }) return result.fileList }
Cloud.downloadFile() 支持端:小程序 , 云函数 , Web 从云存储空间下载文件 wx.cloud.downloadFile 从云存储空间下载文件 请求参数 字段 说明 数据类型 默认值 必填 fileID 云文件 ID String – Y config 配置 Object – N success 成功回调 fail 失败回调 complete 结束回调 config 对象定义 字段 说明 数据类型 env 使用的环境 ID,填写后忽略 init 指定的环境 String success 返回参数 字段 说明 数据类型 tempFilePath 临时文件路径 String statusCode 服务器返回的 HTTP 状态码 Number errMsg 成功为 downloadFile:ok,失败为失败原因 String fail 返回参数 字段 说明 数据类型 errCode 错误码 Number errMsg 错误信息,格式 downloadFile:fail msg String 使用示例 Callback 风格 wx.cloud.downloadFile({ fileID: 'a7xzcb', success: res => { // get temp file path console.log(res.tempFilePath) }, fail: err => { // handle error } }) Promise 风格 wx.cloud.downloadFile({ fileID: 'a7xzcb' }).then(res => { // get temp file path console.log(res.tempFilePath) }).catch(error => { // handle error }) 返回值 如果请求参数中带有 success/fail/complete 回调中的任一个,则会返回一个 downloadTask 对象,通过 downloadTask 对象可监听上传进度变化事件,以及取消上传任务。 downloadFile...
Promise Cloud.callFunction(Object object) 支持端:小程序 , 云函数 调用云函数 参数 Object object 属性 类型 默认值 必填 说明 name string 是 云函数名 data Object 否 传递给云函数的参数,在云函数中可通过 event 参数获取 config Object 否 配置 success function 否 接口调用成功的回调函数 fail function 否 接口调用失败的回调函数 complete function 否 接口调用结束的回调函数(调用成功、失败都会执行) object.config 的结构 属性 类型 默认值 必填 说明 env string 是 环境 ID,填写后将忽略 init 时指定的环境 ID 返回值 Promise.<Object> 属性 类型 说明 result any 云函数返回的结果 requestID string 云函数执行 ID,可用于日志查询 data 参数说明 如果 data 中包含大数据字段(建议临界值 256KB),建议使用 wx.cloud.CDN 标记大数据字段,标记后在调用云函数时,该字段的内容将会上传至临时 CDN,然后在云函数中接收到的该字段值将是 CDN url,可在云函数中下载访问。通过这种方式,可以避免大数据传输造成的性能问题、及避免触及调用链路的传输大小限制。 如果在 data 中如果传入了 Buffer 类型的数据,数据在 JSON 序列化的过程中会被转成 { “type”: “Buffer”, data: number[] } 的格式,以小程序端调用为例: // 小程序端调用 wx.cloud.callFunction({ // ... data: { buf: ArrayBuffer // 此处填入了某种方式获取得到的 Buffer 数据,可以是 request 下来的,可以是读文件读出来的等等 }, }) // 云函数端收到的 event 参数的结构: { "type": "Buffer", "data": [ 17, 371, 255, ... ] // Uint8 Array } 因此应当避免传入 Buffer 类型的数据,因为会让数据体积增大,增加传输耗时,如果需要传递 Buffer,有两种替代的建议方式: 若 Buffer 较大,可使用 wx.loud.CDN 方法标记字段内容 若 Buffer 非常小 (如 <...
常量 DYNAMIC_CURRENT_ENV 支持端:云函数 1.1.0 标志当前所在环境,注意该值不是当前所在环境 ID 的字符串,其值等价于 Symbol.for(‘DYNAMIC_CURRENT_ENV’),是用于标志当前所在环境的。如在 init 中如果给 env 参数传该常量值,则后续的 API 请求会自动请求当前所在环境的云资源,如云函数 A 当前所在环境是 test-123,则其接下来请求数据库、文件存储、云函数时都默认请求环境 test-123 的数据库、文件存储、云函数。 常量可用于: cloud.init 的 env 参数 cloud.updateConfig 的 env 参数 各 API 的 config 参数中的 env 参数 注意事项: 自 1.7.1 起,该变量支持在定时触发器中使用,之前的版本不支持。 示例 cloud.init: 设置 API 默认环境等于当前所在环境 cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) cloud.database: 设置新数据库对象的调用环境等于当前所在环境 cloud.init({ env: 'xxx' }) // 不同于 init 时设置的环境,db 对象的请求将会去到和当前云函数所在环境相同的环境 const db = cloud.database({ env: cloud.DYNAMIC_CURRENT_ENV }) cloud.callFunction: 设置调用的同环境的云函数 cloud.init({ env: 'xxx' }) // 不同于 init 时设置的环境,对云函数 getInfo 的请求将会去到和当前云函数所在环境相同的环境 const callResult = await cloud.callFunction({ name: 'getInfo', config: { env: cloud.DYNAMIC_CURRENT_ENV }, data: { // ... }, })
Cloud 云开发 SDK 实例 属性 Symbol DYNAMIC_CURRENT_ENV 仅在云函数 SDK。标志当前所在环境。 openapi openapi 仅在云函数 SDK。云调用 API 对象。 CloudPay cloudPay 仅在云函数 SDK。云调用 API 对象。 方法 Cloud.init() 初始化 SDK 实例 Cloud.callContainer(options: Object): Promise<Object> 调用云托管服务 Cloud.callFunction(object: Object): Promise<Object> 调用云函数 Cloud.database(options: Object): Database 获取数据库实例 Cloud.CloudID(cloudID: string) 声明字符串为 CloudID(开放数据 ID),该接口传入一个字符串,返回一个 CloudID 特殊对象,将该对象传至云函数可以获取其对应的开放数据。详见通过云调用获取开放数据 Cloud.getCloudCallSign(options: Object): Object 获取签名 Cloud.getOpenData(list: string[]): Object 获取 CloudID 对应的开放数据 Cloud.getVoIPSign(options: Object): Promise<Object> 获取实时语音签名 Cloud.deleteFile(fileList: string[]): Promise<Object> 从云存储空间删除文件,一次最多 50 个 Cloud.downloadFile() 从云存储空间下载文件 Cloud.getTempFileURL(fileList: string[]): Promise<Object> 用云文件 ID 换取真实链接,公有读的文件获取的链接不会过期,私有的文件获取的链接十分钟有效期。一次最多取 50 个。 Cloud.uploadFile() 将本地资源上传至云存储空间,如果上传至同一路径则是覆盖 Cloud.CDN(opt: string|ArrrayBuffer|Object) 小程序端调云函数传递大数据可用的临时 CDN Cloud.Cloud(options: Object): Cloud 新建云开发操作实例 Cloud.getJSSDKSignature(options: Object): Promise<Object> web 中使用 SDK 登录之后可用此方法获取用于 wx.config 的 JSSDK 签名 Cloud.getWXContext(): Object 在云函数中获取微信调用上下文 Cloud.logger(): Object 云函数中使用高级日志能力 Cloud.refreshAuth(): Promise<Object> web 中检查登录状态 Cloud.signature(opt: Object) 计算签名的辅助方法,可用于小游戏虚拟支付云调用 Cloud.checkLogin(options: Object): Promise<Object> web 中检查登录状态 Cloud.startLogin(options: Object) web 中发起网页授权登录
deleteFile 从云存储空间删除文件 请求参数 字段 说明 数据类型 默认值 必填 fileList 云文件 ID 字符串数组 String[] – Y Promise 返回参数 字段 说明 数据类型 fileList 删除结果列表,列表中的每一个对象的定义见下表 Object[] fileList 列表中的对象说明 字段 说明 数据类型 fileID 云文件 ID String status 状态码,0 为成功 Number errMsg 成功为 ok,失败为失败原因 String 错误返回参数 字段 说明 数据类型 errCode 错误码 Number errMsg 错误信息,格式 apiName:fail msg String 使用示例 const cloud = require('wx-server-sdk') exports.main = async (event, context) => { const fileIDs = ['xxx', 'xxx'] const result = await cloud.deleteFile({ fileList: fileIDs, }) return result.fileList }