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

如何实现付费下载功能?

  •  
  •   dream4ever · Oct 31, 2022 · 5725 views
    This topic created in 1316 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
        1
    jackma0571  
       Oct 31, 2022
    给一个百度云盘的地址,让他们存到自己百度云盘
    1343EFF
        2
    1343EFF  
       Oct 31, 2022
    付费成功后在用户中心显示一个购买记录供随时下载
    即便用户找不到下载的文件去哪儿了
    这个时候怪罪的也是微信&IOS 系统层的设计而不是怪罪 APP 开发者
    下载文件的功能必须后端参与判断吧
    比如提供一个有效期的密钥
    严格一点甚至可以加入 IP 判定防止用户随意分享付费资源
    GoCoV2
        3
    GoCoV2  
       Oct 31, 2022
    @jackma0571 给阿里云盘地址吧,起码不限速
    dabai0806
        4
    dabai0806  
       Oct 31, 2022
    邮箱发送 pdf
    darkengine
        5
    darkengine  
       Oct 31, 2022
    free_version.pdf, paid_version.pdf ,不用每次都生成。

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

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

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

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

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