wx.setStorage(Object object)

以 Promise 风格 调用:支持

微信小程序插件:支持,需要微信小程序基础库版本不低于 1.9.6

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

相关文档: 存储策略

功能描述

将数据存储在本地缓存中指定的 key 中。会覆盖掉原来该 key 对应的内容。除非用户主动删除或因存储空间原因被系统清理,否则数据都一直可用。单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。

参数

Object object

属性 类型 默认值 必填 说明 最低版本
key string 是 本地缓存中指定的 key
data any 是 需要存储的内容。只支持原生类型、Date、及能够通过JSON.stringify序列化的对象。
encrypt Boolean false 否 是否开启加密存储。只有异步的 setStorage 接口支持开启加密存储。开启后,将会对 data 使用 AES128 加密,接口回调耗时将会增加。若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true。此外,由于加密后的数据会比原始数据膨胀1.4倍,因此开启 encrypt 的情况下,单个 key 允许存储的最大数据长度为 0.7MB,所有数据存储上限为 7.1MB 2.21.3
success function 否 接口调用成功的回调函数
fail function 否 接口调用失败的回调函数
complete function 否 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

wx.setStorage({
  key:"key",
  data:"value"
})
// 开启加密存储
wx.setStorage({
  key: "key",
  data: "value",
  encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
  success() {
    wx.getStorage({
      key: "key",
      encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
      success(res) {
        console.log(res.data)
      }
    })
  }
})

wx.setStorageSync(string key, any data)

微信小程序插件:支持,需要微信小程序基础库版本不低于 1.9.6

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

相关文档: 存储策略

功能描述

将数据存储在本地缓存中指定的 key 中。会覆盖掉原来该 key 对应的内容。除非用户主动删除或因存储空间原因被系统清理,否则数据都一直可用。单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。

参数

string key

本地缓存中指定的 key

any data

需要存储的内容。只支持原生类型、Date、及能够通过JSON.stringify序列化的对象。

注意

storage 应只用来进行数据的持久化存储,不应用于运行时的数据传递或全局状态管理。启动过程中过多的同步读写存储,会显著影响启动耗时。

示例代码

try {
  wx.setStorageSync('key', 'value')
} catch (e) { }

GlobalPayment.requestGlobalPayment(Object object)

基础库 3.7.3 开始支持,低版本需做兼容处理。

微信小程序插件:不支持

功能描述

开发者调用 openMethodPicker 并在返回值 methodKey 中接受到用户选择了TPG的支付方式后,可调用此接口接入TPG的支付流程。 当用户已成功完成当前订单支付后,再次调用该对象的 requestGlobalPayment 会失败。即每次支付都需创建新的 globalPayment 对象重走流程。 仅在 methodKey 为TPG支付类型才能进入全球收银的支付流程,其他情况会失败。 建议在接口返回后,不论成功或失败,均通过 TPG 接口 inquiry-payment 对订单状态进行查询。

参数

Object object

属性 类型 默认值 必填 说明
prepayInfo string 是 预支付信息
paymentId string 是 ISO4217标准中的最小货币单位进行表达,该值为整数,没有小数点。

返回值

Promise

object { errno: number, errMsg: string // 3.11.0起, errno !=0, errMsg 后会带上具体原因,如cancel、fail , requestId: string // 每个payment对象唯一 }

Promise GlobalPayment.openMethodPicker(Object object)

基础库 3.7.3 开始支持,低版本需做兼容处理。

微信小程序插件:不支持

功能描述

拉起全球收银的支付方式选择面板。当用户选择支付方式或者关闭选择面板后,返回相应结果。 当用户选定支付方式后,globalPayment上的属性 methodKey 也会更新,后续该对象再次调用将直接失败,不再拉起选择面板。 若用户选择微信支付,请开发者按原微信支付接口 wx.requestPayment 调用完成后续支付流程。 若用户选择TPG的支付方式,流程会等待开发者前往TPG完成预下单后,携带预支付信息和交易单号调用 requestGlobalPayment,若开发者超时未调用,则会提示用户加载超时(超时时间暂定为30s)。 当用户关闭选择面板,即未选择支付方式,开发者后续仍可继续调用接口拉起支付方式选择面板。

参数

Object object

属性 类型 默认值 必填 说明
amount Object 是 交易金额对象
结构属性 类型 默认值 必填 说明
total number 是 交易金额,采用ISO4217标准中的最小货币单位进行表达,该值为整数,没有小数点。
currency string 是 交易币种,货币的符号采用ISO4217,3位大写字符进行表达。
outTradeNo string 否 商户单号,用于区分不同交易订单
priceRules Array.<Object> 否 商户加价规则信息,按支付方式维度的数组;不使用加价策略则无需传入

返回值

Promise

object { errno: number, errMsg: string, requestId: string // 每个payment 对象唯一 , methodKey: string // 用户选中的支付方式}

Promise GlobalPayment.abort()

基础库 3.7.3 开始支持,低版本需做兼容处理。

微信小程序插件:不支持

功能描述

用户选择TPG的支付方式后,界面会进入加载的Toast,等待开发者前往TPG完成预下单,然后携带预支付信息和交易单号调用 requestGlobalPayment。若开发者在TPG预下单未成功或出现异常情况,可调用该接口主动终止TPG支付流程,界面加载的Toast将会隐藏,并提示用户下单失败。

返回值

Promise

object { errno: number, errMsg: string, requestId: string // 每个payment对象唯一 }

GlobalPayment

全球收银对象 GlobalPayment

属性

string methodKey

初始值为null。当开发者调用 openMethodPicker 用户选中具体支付方式后确定,后续不再改变。


const goods = {
  goods_id: `goods_1`,
  goods_name: `拿铁`,
  goods_unit_price: {
    currency: 'SGD',
    total: 10,
  },
  goods_quantity: '1',
  goods_category: '1',
}

const globalPay = async () => {
  if (typeof wx.createGlobalPayment !== 'function') {
    // 基础库版本不支持
    // 方案一、微信支付做兜底
    wx.requestPayment({
      timeStamp: '',
      nonceStr: '',
      package: '',
      signType: '',
      paySign: '',
    })
    // 方案二、引导用户更新
    // 方案三、mp后台设置最低基础库版本 3.7.3
    return
  }

  const payment = wx.createGlobalPayment({ mchRegion: 'SG', isSandbox: true })

  try {
    const pickerResp = await payment.openMethodPicker({
      amount: goods.goods_unit_price,
    })

    console.log(`openMethodPicker resp: `, pickerResp)

    if (pickerResp.methodKey === 'WECHAT_PAY') {
      // 发起微信支付
    } else {
      // 后台接口发起预下单
      const preOrderResp = await preOrder(
        goods.goods_unit_price,
        [goods],
        pickerResp.methodKey
      )

      console.log(`preOrder resp: `, preOrderResp)

      const { payment_id, prepay_info } = preOrderResp

      const requestPaymentResp = await payment.requestGlobalPayment({
        paymentId: payment_id,
        prepayInfo: prepay_info,
      })

      console.log(`requestGlobalPayment resp: `, requestPaymentResp)
    }
  } catch (error) {
    console.log(error)
  }
}

方法

Promise GlobalPayment.openMethodPicker(Object object)

拉起全球收银的支付方式选择面板。当用户选择支付方式或者关闭选择面板后,返回相应结果。 当用户选定支付方式后,globalPayment上的属性 methodKey 也会更新,后续该对象再次调用将直接失败,不再拉起选择面板。 若用户选择微信支付,请开发者按原微信支付接口 wx.requestPayment 调用完成后续支付流程。 若用户选择TPG的支付方式,流程会等待开发者前往TPG完成预下单后,携带预支付信息和交易单号调用 requestGlobalPayment,若开发者超时未调用,则会提示用户加载超时(超时时间暂定为30s)。 当用户关闭选择面板,即未选择支付方式,开发者后续仍可继续调用接口拉起支付方式选择面板。

Promise GlobalPayment.requestGlobalPayment(Object object)

开发者调用 openMethodPicker 并在返回值 methodKey 中接受到用户选择了TPG的支付方式后,可调用此接口接入TPG的支付流程。 当用户已成功完成当前订单支付后,再次调用该对象的 requestGlobalPayment 会失败。即每次支付都需创建新的 globalPayment 对象重走流程。 仅在 methodKey 为TPG支付类型才能进入全球收银的支付流程,其他情况会失败。 建议在接口返回后,不论成功或失败,均通过 TPG 接口 inquiry-payment 对订单状态进行查询。

Promise GlobalPayment.abort()

用户选择TPG的支付方式,界面会进入加载的Toast,等待开发者前往TPG完成预下单后携带预支付信息和交易单号调用 requestGlobalPayment,若开发者在 TPG预下单未成功或出现异常情况,可调用该接口主动终止TPG支付流程,界面加载的Toast将会隐藏,提示用户下单失败。

GlobalPaymentwx.createGlobalPayment(Object object)

基础库 3.7.3 开始支持,低版本需做兼容处理。

微信小程序插件:不支持

功能描述

创建全球支付方式的对象。一旦用户选定支付方式后,不可更改。如需重新选择支付方式,需创建新对象。

参数

Object object

属性 类型 默认值 必填 说明
mchRegion string 是 根据每笔订单实际的交易地区,提供地区编码,不同地区可能匹配不同的支付方式,参考 ISO3166二位字母代码标准,大写。
isSandbox string false 否 true为开发环境,false为生产环境。不传入该参数,则默认为false,即生产环境。

返回值

GlobalPayment

wx.jumpToOfflinePay(Object object)

以 Promise 风格 调用:不支持

微信小程序插件:不支持

功能描述

跳转到线下支付页面。

请求参数说明:

  1. 商户需注册具有支付权限的公众号,获取 appId
  2. 签名方式目前仅支持 SHA1,签名规则与公众号支付一致
  3. queryStr 为 JSON 格式字符串(需 urlencode),包含 biz_scene、recommend_bank_type、recommend_bind_serial 等字段

参数

Object object

属性 类型 默认值 必填 说明
appId string 是 公众号 ID,商户注册具有支付权限的公众号成功后即可获得
timeStamp string 是 时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间
nonceStr string 是 随机字符串,长度为 32 个字符以下
package string 是 扩展字符串,需要带入商户号信息,例如:mch_id=123456789
signType string 是 签名方式,目前仅支持 SHA1
paySign string 是 签名,具体签名方案参照微信公众号支付帮助文档
queryStr string 是 JSON 格式字符串(需 urlencode),包含 biz_scene、recommend_bank_type、recommend_bind_serial
success function 否 接口调用成功的回调函数
fail function 否 接口调用失败的回调函数
complete function 否 接口调用结束的回调函数(调用成功、失败都会执行)

wx.openHKOfflinePayView(Object object)

基础库 3.4.4 开始支持,低版本需做兼容处理。

以 Promise 风格 调用:不支持

微信小程序插件:不支持

微信 鸿蒙 OS 版:支持

功能描述

拉起WeChat Pay HK付款码。

接入步骤:

  1. 商户需已经开通微信港币钱包WeChat Pay HK的支付权限, 2.请用商户在微信支付入驻时预留的邮箱,发起邮件申请接入权限:
  • 【收件人】hkpayment@wechat.com
  • 【邮件主题】申请接入拉起WeChat Pay HK付款码+商户名称:***+商户号:***
  • 【邮件内容】因XXX原因(原因请按商户实际情况填写,不合理会驳回),需申请拉起WeChat Pay HK付款码,申请材料如下:
    • 商户名称
    • 商户号
    • 商户资质材料扫描件或照片(CI,BR任一),所有材料均需清晰,且有盖章
    • 拉起WeChat Pay HK付款码的场景说明:需有文字和示意图说明
    • 商户联系方式:邮件***,联系电话***

wx.requestAppleSubscribeSign(Object object)

基础库 3.16.1 开始支持,低版本需做兼容处理。

微信小程序插件:不支持

功能描述

发起苹果订阅签约

参数

Object object

属性 类型 默认值 必填 说明
signData Object 是 具体支付参数见signData, 该参数需以string形式传递, 例如signData: ‘{“offerId”:”123″,”productId”:”testproductId”,”goodsPrice”:10,”attach”:”testdata”}’
结构属性 类型 默认值 必填 说明
offerId string 是 mp-支付基础配置中的offerid
productId string 是 订阅道具 ID(需已配置为双端可用)
goodsPrice number 是 道具单价(分), 用来校验价格与后台道具价格是否一致, 避免用户在业务商城页看到的价格与实际价格不一致导致投诉
activitySellingPrice number 否 首开优惠价格(分)。不填=原价签约;填大于0=优惠价签约(首开此价格,续费恢复原价);填0=免费试用签约(首开 0 元,续费恢复原价)
attach string 是 透传数据, 签约成功通知/发货通知时透传给开发者
paySig string 是 支付签名, 详见《签名详解》
signature string 是 用户态签名, 详见《签名详解》

错误

错误码 错误信息 说明
1001 参数错误
-1 支付失败
-2 支付取消
-4 风控拦截
-5 开通签约结果未知
-15001 参数错误,具体原因见err_msg
-15002 outTradeNo重复使用,请换新单号重试
-15003 系统错误
-15004 currencyType错误,目前只能填CNY
-15005 用户态签名signature错误
-15006 支付签名paySig错误
-15007 session_key过期
-15008 二级商户进件未完成
-15009 代币未发布
-15010 道具productId未发布
-15011 现网版本的env只能是0,不能填1(沙盒环境)
-15012 调用米大师失败导致关单,请换新单号重试
-15013 goodsPrice道具价格错误
-15014 道具/代币发布未生效,禁止下单,大概10分钟后生效
-15016 signData格式有问题
-15017 此商家涉嫌违规,收款功能已被限制,暂无法支付。商家可以登录微信商户平台/微信支付商家助手微信小程序查看原因和解决方案
-15018 代币或者道具productId审核不通过
-15019 调微信报商户受限,商家可以登录微信商户平台/微信支付商家助手微信小程序查看原因和解决方案
-15020 操作过快,请稍候再试
-15021 微信小程序被限频交易