• 请不要在回答技术问题时复制粘贴 AI 生成的内容
dream4ever
V2EX  ›  程序员

如何实现付费下载功能?

  •  
  •   dream4ever · Oct 31, 2022 · 6261 views
    This topic created in 1468 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

    Supplement 1  ·  Nov 4, 2022
    研究了一下,初步定了这么一个实现方案:

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

    这样就完全不会暴露文件地址给前端,实现起来也简单。
    23 replies  •  2022-11-04 11:31:19 +08:00
    jackma0571
    jackma0571
    Oct 31, 2022
    1
    给一个百度云盘的地址,让他们存到自己百度云盘
    1343EFF
    1343EFF
    Oct 31, 2022
    2
    付费成功后在用户中心显示一个购买记录供随时下载
    即便用户找不到下载的文件去哪儿了
    这个时候怪罪的也是微信&IOS 系统层的设计而不是怪罪 APP 开发者
    下载文件的功能必须后端参与判断吧
    比如提供一个有效期的密钥
    严格一点甚至可以加入 IP 判定防止用户随意分享付费资源
    GoCoV2
    GoCoV2
    Oct 31, 2022
    3
    @jackma0571 给阿里云盘地址吧,起码不限速
    JulianEpoch
    JulianEpoch
    Oct 31, 2022
    4
    邮箱发送 pdf
    darkengine
    darkengine
    Oct 31, 2022
    5
    free_version.pdf, paid_version.pdf ,不用每次都生成。

    下载权限限制肯定要在后端做,放在前端太容易被绕过了。
    lhx2008
    lhx2008
    Oct 31, 2022
    6
    如果是服务号可以直接发消息
    lakehylia
    lakehylia
    Oct 31, 2022
    7
    发邮箱呗。
    A3m0n
    A3m0n
    Oct 31, 2022
    8
    PDF 可以加密,可以提供下载加密后的版本,付费买个密码就可以了。
    Ausmo
    Ausmo
    Oct 31, 2022
    9
    微信内网页压根不给下载文件吧?
    Ausmo
    Ausmo
    Oct 31, 2022
    10
    @Ausmo 好吧 试了下是可以下载的,以前记得会被微信屏蔽来着
    weak
    weak
    Oct 31, 2022 via iPhone
    11
    开个淘宝店,个人不要钱,阿奇索设置自动发货
    weak
    weak
    Oct 31, 2022 via iPhone
    12
    要在公众号啊 看错了
    Fucter
    Fucter
    Oct 31, 2022 via Android
    13
    @weak 电子出版物虚拟物品开店不是押金十万吗。。。 付费下载可以 wordpress +插件实现 discuz 也行
    brust
    brust
    Oct 31, 2022
    14
    用原文件分出来一个小文件(预览版)只显示几页 后面几页直接写付费后可见
    pianjiao
    pianjiao
    Oct 31, 2022
    15
    公众号 直接有付费购买呀
    weak
    weak
    Oct 31, 2022 via iPhone
    17
    @Fucter 你猜那些卖账号的付了十万没有
    xboxv
    xboxv
    Oct 31, 2022
    18
    问题不错。 如果不是微信公众号,现在也有很多网站 需要扫描关注微信公众好或者付款之后才可看到网页内容,这个是怎么做到的? wordPress 好像有插件可以配置 对接支付可见
    wangyu17455
    wangyu17455
    Oct 31, 2022
    19
    pdf 放对象存储上,买了的用户每次想下载让后端调对象存储的 sdk 生成临时链接
    yufeng0681
    yufeng0681
    Oct 31, 2022
    20
    微信公众号 不审核你 这些 pdf 是否有版权? 你被举报了一次,还想卖就得被封好久,怎么举证?
    dream4ever
    dream4ever
    OP
    Nov 1, 2022
    21
    @yufeng0681 教育相关的企业,内容是自己生产制作的,版权完全没问题。
    yufeng0681
    yufeng0681
    Nov 1, 2022
    22
    有个面包多网站,最近因为内容违规,主域名被封了
    https://support.qq.com/products/64077/?id=50255 这是它家的内容介绍, 看文章介绍是可以在微信公众号里面引流到它的平台付费的, 自制电子书可以卖

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

    他家这样的竞品也有
    dream4ever
    dream4ever
    OP
    Nov 4, 2022
    23
    研究了一下,初步定了这么一个实现方案:

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

    这样就完全不会暴露文件地址给前端,实现起来也简单。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   798 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 18:51 · PVG 02:51 · LAX 10:51 · JFK 13:51
    ♥ Do have faith in what you're doing.