小程序云开发实现微信支付注意事项

比较容易出错的是两个地方:

  1. 订单号必须唯一,不能重复,重复就会创建失败

  2. 金额必须是整数(以分为单位),小数会导致创建失败

小程序云开发实现微信支付的代码分为两部分:

  1. 小程序端代码

  2. 云函数代码

小程序端的代码首先调用云函数代码创建一个支付项目,如果创建成功,云函数将返回这个支付项目的相关数据(payment),小程序端用这个数据(payment)来调用微信支付界面,用户开始支付,用户的操作结束后,小程序获得支付结果,成功支付或者未支付。

小程序端

javascript 复制代码
  async onTapPay(e){    
    let paid=false; let This=this;
    let order = new Date().Idealand_ToFileName(); // 订单号,每个订单必须不一样,如果重复会导致订单创建失败
    let totalFee = 1000; // 这里是以分为单位,必须为整数,如果是小时,会导致订单创建失败 
    let data = { order, totalFee }; 
    let res=await wx.cloud.callFunction({  name: 'pay', data }); 
    const { payment } = res.result;  
    if(!payment || !payment.package){ 
      // 订单创建失败
     
    } else { 
      // 订单创建成功,调用支付界面
      wx.requestPayment({
        ...payment,
        success (res) { paid=true; /* 支付成功 */ },
        fail (err) {  /* 支付失败 */ },
      });      
    }
  },

云函数 pay

javascript 复制代码
exports.main = async (event, context) => {
  let {order, totalFee}=event;
  let ps={
    "outTradeNo" : order,  // 支付项目编号,必须唯一,不可重复
    totalFee,              // 以分为单位,必须为整数,不可为小数
    "subMchId" : "1652990403",  // 普通商户号
    "envId": "juyipintest-4gx5k7wu2ab0d08f", // 云环境Id
    "body" : "居意品创意餐厅",          // 这个没有用,随便填
    "spbillCreateIp" : "127.0.0.1",    // 这个没有用,随便填
    "functionName": "payCallBack",     // 这个没有用,随便填
  }; 
  const res = await cloud.cloudPay.unifiedOrder(ps); return res;
};
相关推荐
ipad协议开发5 小时前
视频号直播间全功能自动化场控插件开发指南:基于 API 调用的全链路拆解
运维·微信·自动化·视频·ipad
wechatbot88811 小时前
【企业通信】基于IPAD协议的企业微信群聊管理API:群操作功能接口设计与实现
java·ios·微信·企业微信·ipad
克里斯蒂亚诺更新12 小时前
微信小程序调用腾讯地图路线规划-注意点
微信小程序·小程序
土土哥V_araolin14 小时前
一生手护分销模式系统开发概述
大数据·小程序·零售
Можно14 小时前
uni-app 三端上线全流程指南:H5 / 小程序 / App 完整发布手册
小程序·uni-app
土土哥V_araolin14 小时前
2+1链动退休模式系统(升级版)解析
大数据·小程序·零售
陈思杰系统思考Jason15 小时前
系统思考破局之道
百度·微信·微信公众平台·新浪微博·微信开放平台
2501_9151063216 小时前
Flutter 开发工具有哪些 跨平台项目开发与上架实操指南
android·flutter·ios·小程序·uni-app·iphone·webview
00后程序员张1 天前
从审核被拒到稳定过审,iOS 上架技术优化
android·ios·小程序·https·uni-app·iphone·webview
土土哥V_araolin1 天前
多语言推三返一商城系统开发指南
小程序·零售