当前位置: 首页 > 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…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...