第七期:用云函数快速实现小程序支付

作者:知晓云- 小程序开发快人一步
来源:知晓课堂

本文主要侧重于讲述小程序在线支付功能中的编程思想和编程模式,并在必要的地方提供关键代码示例。

为方便演示,这里将实现一个最简单的虚拟商品的订单支付功能,订单略去了收货地址和多规格、多数量的情况,示例中仅讨论在商品详情页中直接创建订单并发起支付的情况。需要分别定义 Product 表和 Order 表进行数据存取,在 BaaS 后台中创建两张数据表。

一、数据表结构设计

Product 表:
数据表录入权限:所有人
数据行读写权限:创建者可写,所有人可读
在这里插入图片描述
Order 表:
数据表录入权限:所有人
数据行读写权限:创建者可写,创建者可读
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QTuOEx8z-1591240483124)(/img/bVbHYud)]

商品的订单结算和支付流程一般包括“创建订单 -> 支付 -> 更新订单状态”三个步骤。下文中将分析几种实现该流程的方案,供我们一起探讨。

关注「知晓云」微信公众号,在微信后台回复「源码1」,获取完整的商品详情页 JS 代码。

二、客户端创建订单,客户端更新订单状态

我们先来看下只在客户端中如何处理这些逻辑。

1) 创建订单:Order 表中创建一条新记录,status 字段默认值为 “no_paid”,保存订单金额,商品快照和商品 id 以及订单创建者,其中订单创建者由 BaaS 的用户系统自动处理,值为创建订单的用户 id:

/**
 * 创建订单处理函数
 */
createOrderHandle() {
  const orderTableId = 12345678
  const tableObject = new wx.BaaS.TableObject(orderTableId)
  const createObject = tableObject.create()


  const product = this.data.product
  const data = {
    product_id: product.id,
    product_snapshot: product,
    total_cost: product.price,
    status: 'no_paid',
  }


  // 客户端创建订单,客户端更新订单状态
  return createObject.set(data).save().then(res => {
    this.order = res.data || {}
    return this.pay(this.order)
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值