最新提问
  • 全部
  • 文章
  • 问答

  • 小程序备案时提示证件有效期不足3个月,如何更新备案界面上的有效期?

    主体负责人证件已经重新办理过了,但是备案界面上显示的有效期还是旧的身份证,导致无法进行备案

  • 一直遇到questVirtualPayment:fail INVALID_BUY_QUANTITY?

    我在我的小程序里增加充值购买虚拟商品(充值也是一样的),然后这个是虚拟商品,所以选择了虚拟支付,但是支付一直遇到{errMsg: "requestVirtualPayment:fail INVALID_BUY_QUANTITY", errno: -15001, errCode: -15001},这个错误,以下是请求参数:buyQuantity: 1currencyType: "CNY"env: 1goodsPrice: 30mode: "short_series_goods"offerId: "1450474855"orderId: "vp_1769924532122_3"outTradeNo: "vp_1769924532122_3"paySig: "f5255ef6304f213a861ab6a405d8046541233455ace3ce1565cd056102e7d3df"productId: "30602"signData: "{"out_trade_no":"vp_1769924532122_3","amount":3000,"product_id":"30602","quantity":1,"env":1,"openid":"oYD-F1w6FMS70RVMbclMoBBGyfNQ"}"signature: "fb78287a34e62222a719920647e7ef7cdfa36c6bb4d09a829548696aed843cad"商品我在后台定义过了,然后最开始是走的充值,也是一直报这个错误,现在改成了购买虚拟商品也是这个错误。以下是代码: const api = require('../../utils/api') const defaultAvatar = '/images/logo.png' /** Hide system-generated email (e.g. wechat_xxx@generated.com) - not meaningful to user */ function isGeneratedEmail(email) { if (!email || typeof email !== 'string') return true return /@generated\.com$/i.test(email.trim()) || /^wechat_[^@]*@/i.test(email.trim()) } Page({ data: { userNameDisplay: '微信用户(点击告诉我您的昵称)', hasNickname: false, userEmail: '', userAvatar: defaultAvatar, balance: 0, balanceText: '0.00', freeRemaining: 0, commodities: [], selectedId: null, selectedCommodity: null, agreementChecked: false }, onLoad() { this.loadBalance() this.loadCommodities() }, onShow() { this.loadUser() this.loadBalance() }, loadBalance() { // GET /user/balance 一次返回 balance + freeTranslationsRemaining api.getBalance().then((res) => { if (!res.success || res.data == null) return const data = res.data const balance = typeof data === 'object' && 'balance' in data ? Number(data.balance) || 0 : Number(data) || 0 const freeRemaining = typeof data === 'object' && 'freeTranslationsRemaining' in data ? (data.freeTranslationsRemaining != null ? Number(data.freeTranslationsRemaining) : 0) : 0 this.setData({ balance, balanceText: balance.toFixed(2), freeRemaining }) }) }, loadCommodities() { // GET /api/commodities?platform=trans-web;sale===1 已上架,按价格从高到低排序,标签按价格档:尊享/进阶/入门/尝鲜 api.getCommodities('trans-web').then((res) => { if (res.success && Array.isArray(res.data)) { const raw = (res.data || []) .filter((c) => c.isAvailable !== false && Number(c.sale) === 1) const sorted = [...raw].sort((a, b) => (Number(b.price) || 0) - (Number(a.price) || 0)) const tierLabels = ['尊享', '豪华'] const commodities = sorted.map((c, index) => ({ id: c.id, name: c.name, description: c.description || c.shortDescription || '', price: c.price, priceText: ((c.price || 0) / 100).toFixed(0), discount: c.discount || 0, discountText: ((c.discount || 0) / 100).toFixed(0), priceTierLabel: index < tierLabels.length ? tierLabels[index] : '' })) const selectedId = commodities.length > 0 ? commodities[0].id : null const selectedCommodity = commodities.length > 0 ? commodities[0] : null this.setData({ commodities, selectedId, selectedCommodity }) } }) }, onSelectCommodity(e) { const id = e.currentTarget.dataset.id const commodities = this.data.commodities const selectedCommodity = commodities.find((c) => c.id === id) || null this.setData({ selectedId: id, selectedCommodity }) }, onToggleAgreement() { this.setData({ agreementChecked: !this.data.agreementChecked }) }, onAgreementLinkTap() { // Prevent agreement row tap when clicking link (navigator still navigates) }, onRecharge() { if (!this.data.selectedCommodity) { wx.showToast({ title: '请先选择套餐', icon: 'none' }) return } if (!this.data.agreementChecked) { wx.showModal({ title: '服务协议与隐私政策', content: '请阅读并同意《服务协议》和《隐私政策》后再进行充值。是否同意?', confirmText: '同意', cancelText: '取消', success: (res) => { if (res.confirm) { this.setData({ agreementChecked: true }) this.doRecharge() } } }) return } this.doRecharge() }, doRecharge() { const commodity = this.data.selectedCommodity const amountFen = Number(commodity.price) || 0 if (amountFen <= 0) { wx.showToast({ title: '请选择有效套餐', icon: 'none' }) return } const commodityId = commodity.id wx.showLoading({ title: '准备支付…' }) api.prepareVirtualPay(commodityId, amountFen).then((res) => { wx.hideLoading() if (!res.success || !res.data) { wx.showToast({ title: res.errorMessage || '获取支付参数失败', icon: 'none' }) return } const { orderId, signData, pay_sig, signature, offerId, env, productId } = res.data if (!orderId || !signData || pay_sig == null || signature == null || offerId == null || env == null || !productId) { wx.showToast({ title: '支付参数不完整', icon: 'none' }) return } // 商品购买:mode=short_series_goods,按文档传 buyQuantity=1、goodsPrice=价格(元)=commodity.price/100 const mode = 'short_series_goods' const buyQuantity = 1 const goodsPrice = amountFen / 100 const requestParams = { orderId, signData, paySig: pay_sig, signature, offerId, env, mode, productId, buyQuantity, goodsPrice, currencyType: 'CNY', outTradeNo: orderId } console.log('[requestVirtualPayment] 商品 id:', commodityId, '金额(分):', amountFen, '元:', goodsPrice) console.log('[requestVirtualPayment] 请求参数:', requestParams) wx.requestVirtualPayment({ orderId, signData, paySig: pay_sig, signature, offerId, env, mode, productId, buyQuantity, goodsPrice, currencyType: 'CNY', outTradeNo: orderId, success: () => { wx.showToast({ title: '购买成功', icon: 'success' }) this.loadBalance() }, fail: (err) => { console.error('[requestVirtualPayment] fail', err) const msg = (err && err.errMsg) || (err && err.message) || '支付失败' wx.showToast({ title: msg.indexOf('cancel') !== -1 ? '已取消' : msg, icon: 'none' }) } }) }).catch(() => { wx.hideLoading() wx.showToast({ title: '网络异常', icon: 'none' }) }) }, goProfileComplete() { wx.navigateTo({ url: '/pages/profileComplete/profileComplete' }) } })

  • 微信小程序直播能不能变成和视频号一样的清晰度?

    现在用了官方文档里面的obs推流,然后也用了芯象,都测试了,直播还是会很糊,而且还会有延迟!不清晰,视频号直播就直播很清晰啊,为啥呢?是开发者的问题,还是官方的问题?请官方给个回复,谢谢

  • 小程序源码找回?

    各位官方运营您好,我是小程序开发者,AppID是 wxc3937394af17015a。我于2026年1月30日上传了体验版(版本号3.1.7),但本地项目被误删,Git和缓存都已丢失。现紧急请求官方协助,拉取该体验版的完整源码包,以便我恢复项目,赶在春节前上线。非常感谢!人工客服能不能回复一下 不要机器人回复

  • 服务通知?

    2023年9月份的记录可以查询得到。5月份记录查询不到。 [图片]

  • 微信小程序主体变更报错,明明两个公司的法人都是同一个,但是报错是为什么?

    微信小程序主体变更报错,明明两个公司的法人都是同一个,但是报错是为什么? [图片]

  • 主体变更问题?

    为什么主体变更,两个公司的法人都是同一个,但是就是报错,企业信息或法定代表人不一致 [图片]

  • 小程序人数uv达标已认证无违规已备案,但是流量主按钮还是灰色无法开通?

    [图片] [图片] 这是平台的详细数据,已经636个用户了,而且已认证,已备案,新的小程序无任何违规,但是还是无法开通流量主

  • 小程序发布代码为什么需要备案才可以发?

    为什么小程序发布代码需要备案才能发布 [图片]

  • 备案需要的小程序负责人授权书内容可以修改吗?

    备案需要的小程序负责人授权书可以将文中的小程序换成具体的小程序名称吗。 比如将“谁谁为本单位的小程序负责人”换成“谁谁为本单位的实况足球小程序负责人”

  • 发出来的内容与预览不符

    公众号的推文在预览的时候显示是正常的,但是点击发表之后,出现了很多空行和空格。并且空行和空格的字数多于120字,所以不能够在后台进行修改。查看历史版本后显示确有修改,但是在预览的时候并没有体现出这些修改,本人也没有进行过这些操作。同时昨天在发推文前一段时间显示系统繁忙后直接退出了公众号,要我重新登录。 [图片]

  • 小程序涉嫌违规,被搜索功能已被限制,什么原因?

    认证也通过了,备案也通过了,但还是显示【小程序涉嫌违规,被搜索功能已被限制】,是什么原因呢?

  • 如需浏览,请长按网址复制后使用浏览器访问?

    备案域名http://www.xmycxia.cn/不能浏览,现在非常多客户要着急打开。希望人工帮我们着急审核一下,谢谢! 恳请人工进行审核通过,谢谢 [图片]

  • 我没想到你们这样。提现问题几天都不回复,觉得不理就没事了吗?

    我的账户也审核通过了,邮箱也有,有问题的话应该跟我说,但你们却不通知,跟你们提这问题,几天不回....你们大可以用公司账户打款到我的银行里,解决这个问题,但你们不做

  • 流量主结算信息审核通过这个月结算还要补发结算单是怎么回事?

    [图片][图片]

  • 如何将已发表文章设为模板

    如何将已发表文章设为模板

  • 小程序主体变更申请无法使用原来的昵称吗?

    [图片]原主体没有绑定公众号,变更主体不能使用原来的账号名称吗?

  • 19日和31日都发送这个初审通过的消息了 但是一直没有收到工信部的 短信 为什么 ?状态一直显示管局

    wx1cc7c8d50e0a67c2。这是我的小程序ID。[图片]19日和31日都发送这个通过的消息了 但是一直没有收到工信部的 短信 怎么做 状态一直显示管局审核中

  • 添加web域名,链接能直接访问,但是提交校验一直不过,请排查下原因?

    https://ap.satatools.com/RbU3pFNHaB.txt 能访问,但是ap.satatools.com 加不上去

  • 公众号点击预览——但手机上公众号无法接受预览信息是怎么回事,以前一直是正常的

    公众号点击预览——但手机上公众号无法接受预览信息是怎么回事,以前一直是正常的 [图片]

运营专区
运营公告、规则解析与使用教程。
更多