如何实现付费下载功能?

2022-10-31 09:06:58 +08:00
 dream4ever

现在需要在微信公众号网页中实现这样一个功能:

  1. 有一批 PDF 文件,用户在未付费状态下只显示前几页的内容。
  2. 用户在微信中付费之后,才能下载这些 PDF 文件。

我初步设想的实现思路是这样的:

  1. 提取出这批 PDF 的前几页存为图片,把图片展示在网页中,让用户可以预览 PDF 的部分内容。
  2. 用户付费成功后,显示一个文件下载按钮,用户点击按钮即可下载文件至手机。

在功能的具体实现方面,我有几个问题:

a. 对于 iOS 用户(以及一部分安卓用户),很多人下载文件后也不知道去哪儿找这个文件。那么有什么方法可以让用户比较方便地在电脑上下载文件么? b. 获取文件下载链接的功能,是否可以通过纯前端的方式来实现?如果通过后端服务来提供文件下载的话,可能需要花费较多的时间来开发这个功能。一方面这项业务并不需要对下载文件进行十分严密的保护,另一方面工期也比较紧,所以前端来控制下载权限的话是不是会简单很多?

第一次做这种功能,Google 了一下也没找到可以参考的资料,所以来这里咨询一下,谢谢先~

PS: 后端是用 Express.js 写的。

4757 次点击
所在节点    程序员
23 条回复
dream4ever
2022-11-01 08:48:07 +08:00
@yufeng0681 教育相关的企业,内容是自己生产制作的,版权完全没问题。
yufeng0681
2022-11-01 09:50:24 +08:00
有个面包多网站,最近因为内容违规,主域名被封了
https://support.qq.com/products/64077/?id=50255 这是它家的内容介绍, 看文章介绍是可以在微信公众号里面引流到它的平台付费的, 自制电子书可以卖

https://mbd.pub/ 目前这个域名是可用的。

他家这样的竞品也有
dream4ever
2022-11-04 11:31:19 +08:00
研究了一下,初步定了这么一个实现方案:

1. 用户在微信中支付成功后,保存微信所返回的订单信息和所购买 PDF 文件的 id ,订单信息中包含用户微信号的 openid ,这个可以用来唯一标识用户。
2. 用户下载的时候,后端 Express.js 查询订单表中是否有该用户的 openid 和和所下载文件的 id ,有的话就用 res.sendFile() 把文件发送给前端。

这样就完全不会暴露文件地址给前端,实现起来也简单。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/891301

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX