当前位置: 首页 > news >正文

【愚公系列】《微信小程序与云开发从入门到实践》059-迷你商城小程序的开发(加入购物车与创建订单功能开发)

标题详情
作者简介愚公搬代码
头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等。
博客内容.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
欢迎👍点赞、✍评论、⭐收藏

文章目录

  • 🚀前言
  • 🚀一、加入购物车与创建订单功能开发
    • 🔎1.购物车功能
      • 🦋1.1 云函数开发
        • ☀️1.1.1 添加商品到购物车 (`addToCar`)
        • ☀️1.1.2 删除购物车中的商品 (`deleteCar`)
        • ☀️1.1.3 获取购物车信息 (`carInfo`)
      • 🦋1.2 小程序端 `server.js` 实现
      • 🦋1.3 商品详情页 `addCar` 方法
      • 🦋1.4 购物车页面
        • ☀️1.4.1 购物车页面框架 `shopping.wxml`
        • ☀️1.4.2 购物车页面样式 `shopping.wxss`
        • ☀️1.4.3 购物车页面逻辑 `shopping.js`
    • 🔎2.订单相关功能开发
      • 🦋2.1 云函数开发
        • ☀️2.1.1 创建订单云函数:`createOrder`
        • ☀️2.1.2 获取订单详情云函数:`orderDetail`
      • 🦋2.2 小程序端 `server.js` 实现
      • 🦋2.4 订单详情页面
        • ☀️1.4.1 订单详情页面框架 `orderDetail.wxml`
        • ☀️2.4.2 订单详情页面样式 `orderDetail.wxss`
        • ☀️2.4.3 订单详情页面逻辑 `orderDetail.js`
    • 🔎3.地址选择和支付功能开发
      • 🦋3.1 地址选择
      • 🦋3.2 支付功能
        • ☀️3.2.1 创建 `payOrder` 云函数
        • ☀️3.2.2 `server.js` 中的支付方法
        • ☀️3.2.3 订单详情页的支付功能
      • 🦋3.3 模拟支付与订单状态


🚀前言

在数字化消费日益普及的今天,小程序已经成为商家与消费者互动的重要平台。迷你商城小程序凭借其快捷的访问和丰富的功能,正逐渐改变着传统购物的方式。在这一过程中,购物车与订单创建功能的开发尤为关键,它们不仅是用户购物流程中的重要环节,更直接影响着消费者的购买体验和商家的销售转化率。

购物车功能的实现,使用户能够轻松管理和选择商品,提升了购物的灵活性。而创建订单功能则是购物流程的最后一步,它涉及到用户信息的确认、支付方式的选择等一系列重要操作。如何设计一个直观易用的购物车,以及一个高效流畅的订单创建流程,是每个小程序开发者必须认真考虑的任务。

🚀一、加入购物车与创建订单功能开发

🔎1.购物车功能

在电商类小程序中,购物车是一个核心功能,用户可以将商品添加到购物车、删除不需要的商品,并最终创建订单进行结算。下面是如何通过云函数实现购物车功能的详细步骤,包括添加商品、删除商品、获取购物车信息,以及在小程序端实现相关功能。

🦋1.1 云函数开发

☀️1.1.1 添加商品到购物车 (addToCar)

此云函数用于将商品添加到用户的购物车。

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({env: '' // 填写您的云环境ID
})
const db = cloud.database();
// 云函数入口函数
exports.main = async (event, context) => {const wxContext = cloud.getWXContext()let openId = wxContext.OPENID;let gid = event.gid;let collection = db.collection("shop_car");return collection.add({data:{gid:gid,openId:openId}});
}
☀️1.1.2 删除购物车中的商品 (deleteCar)

此云函数用于删除购物车中的指定商品。

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({env: '' // 填写您的云环境ID
})
const db = cloud.database();
// 云函数入口函数
exports.main = async (event, context) => {const wxContext = cloud.getWXContext()let openId = wxContext.OPENID;let gid = event.gid;let collection = db.collection("shop_car");return collection.where({gid:gid,openId:openId}).remove();
}
☀️1.1.3 获取购物车信息 (carInfo)

此云函数用于获取当前用户的购物车信息,并结合商品信息返回详细数据。

const cloud = require('wx-server-sdk')
cloud.init({env: '' // 填写您的云环境ID
})
const db = cloud.database();
exports.main = async (event, context) => {const wxContext = cloud.getWXContext();let openId = wxContext.OPENID;let collection = db.collection("shop_car");let productC = db.collection("shop_product");let data = await collection.where({openId:openId}).get();let gArray = data.data;for (let j = 0; j < gArray.length; j++) {let v = gArray[j];let p = await productC.where({gid:v.gid}).get();v.detail = p.data[0];}return gArray;
}

🦋1.2 小程序端 server.js 实现

在小程序端,封装对云函数的调用,方便其他页面调用购物车相关功能。

// utils/server/server.js
const server = {addToCar:function(gid, callback) {wx.cloud.callFunction({name:"addToCar",data:{gid:gid}}).then(res=>{callback();}).catch(error=>{wx.showToast({title: `加入购物车失败`,icon:"none"})console.log(error);});},getCarInfo:function(callback) {wx.cloud.callFunction({name:"carInfo",}).then(res=>{callback(res.result);}).catch(error=>{wx.showToast({title: `获取购物车详情失败`,icon:"none"})console.log(error);});},deleteCar:function(gid, callback) {wx.cloud.callFunction({name:"deleteCar",data:{gid:gid}}).then(res=>{callback(res.result);}).catch(error=>{wx.showToast({title: `删除商品失败`,icon:"none"})console.log(error);});},
};module.exports = { server };

🦋1.3 商品详情页 addCar 方法

在商品详情页中,用户可以点击“加入购物车”按钮,将商品添加到购物车。这个方法会调用云函数 addToCar

相关文章:

【愚公系列】《微信小程序与云开发从入门到实践》059-迷你商城小程序的开发(加入购物车与创建订单功能开发)

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

Mac Android studio :gradle 配置、代理设置、及各种环境变量配置;

mac 安装 AS&#xff0c;最烦人的就是这些配置了&#xff08;吐槽一下&#xff1a;这软件真是垃圾的一批&#xff0c;同样的代码换了电脑就没法用&#xff0c;比 vscode 甚至比低评分的xcode还差劲&#xff01;&#xff09; --------------------- 一、 gradle 下载及环境变量…...

unity——Preject3——开始界面拼面板

目录 1.创建panel&#xff0c;去掉panel自带的image&#xff0c;自己加一个image&#xff0c;使用锚点分配好 2.锚点&#xff08;快捷键点击后 ALTShift&#xff09; 锚点是什么&#xff1f; 锚点的实际例子 例子1&#xff1a;固定在父容器的中心 例子2&#xff1a;对齐到…...

【达梦数据库(Oracle模式)】如何将视图中的数据导出

在某些情况下&#xff0c;我们需要将生产环境某个模式下的数据导入到开发电脑中&#xff0c;因为正式环境无法连接外网数据。 方式一&#xff1a;将视图查询出来&#xff0c;然后右键导出所有查询结果&#xff08;不推荐&#xff09; 优点&#xff1a;方便快捷 缺点&#xff1…...

GB44495-2024 汽车整车信息安全技术要求 - V2X部分前置要求

背景 GB 44495-2024《汽车整车信息安全技术要求》中关于V2X&#xff08;车与外界通信&#xff09;的部分&#xff0c;主要关注于通信安全要求&#xff0c;旨在确保车辆在与外部设备进行数据交互时的信息安全。其测试大致可分为消息层&#xff08;数据无异常&#xff09;、应用…...

FastAPI 应用的容器化与 Docker 部署:提升性能与可扩展性

FastAPI 应用的容器化与 Docker 部署&#xff1a;提升性能与可扩展性 目录 &#x1f433; 使用 Docker 容器化 FastAPI 应用⚙️ 使用 Docker Compose 管理多个服务的部署&#x1f680; 在 Docker 容器中部署与运行 FastAPI 应用 1. &#x1f433; 使用 Docker 容器化 FastAPI…...

QT入门的一些吐槽

QT入门的一些吐槽 看了网上的一些介绍QT的课程&#xff0c;看了一些讲述qt的书籍&#xff0c;然而再想自己做一个项目的时候&#xff0c;却发现我好像什么都不会&#xff0c;QT对我来说就是一个黑盒子。 我只会&#xff1a; 使用QT Creator创建一个项目&#xff0c;再UI文件中…...

4.Spring AI Prompt:与大模型进行有效沟通

1.什么是提示词 在人工智能领域&#xff0c;提示词&#xff08;Prompt&#xff09;扮演着至关重要的角色&#xff0c;它宛如一把精准的钥匙&#xff0c;为 AI 大模型开启理解之门。作为向模型输入的关键信息或引导性语句&#xff0c;提示词能够助力模型迅速洞悉问题需求&#…...

深入内核讲明白Android Binder【二】

深入内核讲明白Android Binder【二】 前言一、Binder通信内核源码整体思路概述1. 客户端向服务端发送数据流程概述1.1 binder_ref1.2 binder_node1.3 binder_proc1.4 binder_thread 2. 服务端的binder_node是什么时候被创建的呢&#xff1f;2.1 Binder驱动程序为服务创建binder…...

Python基于Django的图像去雾算法研究和系统实现(附源码,文档说明)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…...

TCP 连接状态标识 | SYN, FIN, ACK, PSH, RST, URG

注&#xff1a;本文为“TCP 连接状态标识”相关文章合辑。 TCP 的状态&#xff1a;SYN, FIN, ACK, PSH, RST, URG 简介及 ACK 确认机制 llzhang_fly 于 2020-09-19 05:25:26 发布 1、TCP 的状态 FLAGS 字段状态 在 TCP 层&#xff0c;有个 FLAGS 字段&#xff0c;这个字段有…...

WXML模版语法-事件绑定

知识点1&#xff1a;什么是事件 事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为&#xff0c;反馈到逻辑层进行业务的处理。 知识点2&#xff1a;小程序中常用的事件 类型绑定方式事件描述tapbindtap或bind:tap手指触摸后马上离开&#xff0c;类似于…...

楚慧杯Web

WEB1 计算器 import requests rrequests.session() data{"answer":0} url"" for i in range(30):if i0:rrequests.get(url)dr.textdd.split(":")[22][1:].split("<br>")[0]data["answer"]str(eval(d))print(eval(d)…...

工商业储能电站能量管理本地系统及多站点云平台

一、储能站就地监控 Acre1-2000MG储能能量管理系统是针对工商业储能电站研制的本地化能量管理系统&#xff0c;可实现了储能电站的数据采集、数据处理、数据存储、数据查询与分析、可视化监控、报警管理、统计报表、策略管理、历史曲线等功能。其中策略管理&#xff0c;支持多…...

HTML标签笔记

黑马程序员视频地址&#xff1a;黑马程序员前端JavaScript入门到精通全套视频教程https://www.bilibili.com/video/BV1Y84y1L7Nn?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes 标题与段落 标题 <h1>~<h6> 段落 <p…...

pthread_create函数

函数原型 pthread_create 是 POSIX 线程&#xff08;pthread&#xff09;库中的一个函数&#xff0c;用于在程序中创建一个新线程。 #include <pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *a…...

C# 并发和并行的区别--16

目录 并发和并行 一.并发 定义 特点 代码示例 代码解释 二.并行 定义 特点 在C#中的体现 代码示例 代码解释 三.并发和并行的区别 四 .如何在C#中选择并发还是并行 1.考虑任务类型 2.代码示例 3.注意事项 五.总结 并发和并行 在编程领域,并发和并行是两个密切…...

Java日志配置

1.导入依赖 <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.23.1</version></dependency><dependency><groupId>org.apache.logging.log4j</groupI…...

python中的RPA->playwright自动化录制脚本实战案例笔记

playwright录制功能使用绕过登录操作 1、首先安装playwright pip install playwright2、 安装支持的浏览器 playwright install # 安装支持的浏览器&#xff1a;cr, chromium, ff, firefox, wk 和 webkit3、接着在自己的项目下运行录制命令&#xff1a; playwright codegen…...

Linux查看日志命令

问题排查过程&#xff1a; 1. 评估问题现象是否是操作问题&#xff0c;还是服务bug&#xff0c;页面出异常信息是后端&#xff0c;没抛异常信息有可能是前端渲染问题&#xff0c;F12抓包看那个字段没有数据&#xff08;有时候需要前端帮忙确定是哪一个字段&#xff09;&#x…...

如何快速掌握开源UE资产编辑器:UAssetGUI完整配置与实战指南

如何快速掌握开源UE资产编辑器&#xff1a;UAssetGUI完整配置与实战指南 【免费下载链接】UAssetGUI A tool designed for low-level examination and modification of Unreal Engine game assets by hand. 项目地址: https://gitcode.com/gh_mirrors/ua/UAssetGUI UAss…...

智慧树自动刷课助手:3步告别手动操作的学习效率工具

智慧树自动刷课助手&#xff1a;3步告别手动操作的学习效率工具 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台的重复刷课操作而烦恼吗&#xff1f;智…...

【深度解析】AI Coding 模型竞速:从 Claude Mythos 安全编码到 GPT-5.6 传闻,如何落地代码审查智能体

摘要 AI 编码模型正在从“代码补全”进入“复杂代码库理解、漏洞发现与自动修复”阶段。本文结合 Claude Mythos、Claude Opus 4.8 与 GPT-5.6 相关信息&#xff0c;解析新一代 Coding Agent 的技术趋势&#xff0c;并给出基于大模型 API 的代码安全审查实战方案。背景介绍&…...

量子纠错码VarQEC:原理、实现与硬件优化

1. 量子纠错码基础与实验背景量子纠错码&#xff08;Quantum Error Correction Codes, QEC&#xff09;是量子计算中保护量子信息免受噪声影响的核心技术。与经典纠错码不同&#xff0c;量子纠错需要应对量子态特有的退相干和纠缠特性。传统QEC如[[5,1,3]]完美码虽然理论完备&a…...

学习日志(三)【php语法学习,iscc校赛wp】

1. 任务 1.1.1.1.1.1. 知识部分 rce看【之前的笔记&#xff1f;】php的知识点学习继续jwt token好像是比赛的题目考察内容&#xff0c;我看看php伪协议 1.1.1.1.1.2. 题目 参加iscc比赛【五一】rce题目 1.1.1.1.1.3. 环境配置 把vscode搞好&#xff0c;上学期没有把Php配…...

CentOS 8/Stream 8系统DNF换源后,安装软件还是慢?试试这几个排查命令和优化技巧

CentOS 8/Stream 8系统DNF换源后安装缓慢的深度排查与优化指南当你已经按照教程将CentOS 8/Stream 8的DNF源切换为国内镜像&#xff0c;却发现软件安装速度依然不尽如人意时&#xff0c;这种体验确实令人沮丧。作为长期使用CentOS系统的技术专家&#xff0c;我完全理解这种&quo…...

ImageGlass:一个支持90+图像格式的轻量级Windows图片查看器

ImageGlass&#xff1a;一个支持90图像格式的轻量级Windows图片查看器 【免费下载链接】ImageGlass &#x1f3de; A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 还在为Windows自带的图片查看器功能单一而烦恼吗&…...

VideoDownloadHelper终极指南:解锁浏览器视频下载的完整解决方案

VideoDownloadHelper终极指南&#xff1a;解锁浏览器视频下载的完整解决方案 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 还在为无法保存网…...

AI算法工程师必学的Python库:这10个库,AI开发必备

对于软件测试从业者来说&#xff0c;随着人工智能技术在测试领域的渗透越来越深——从自动化测试用例生成到缺陷智能预测&#xff0c;从测试结果分析到测试环境智能化调度&#xff0c;掌握AI开发的核心工具链已经成为从功能测试向AI测试开发、智能化测试转型的核心竞争力。Pyth…...

SHAP原理与特征贡献解析

SHAP&#xff08;SHapley Additive exPlanations&#xff09;是一种基于博弈论中Shapley值的模型解释方法&#xff0c;它为机器学习模型的预测提供了一种统一、理论完备的特征归因框架。其核心思想是将模型的预测值视为所有特征协同合作的“总收益”&#xff0c;然后公平地分配…...