V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dream4ever
V2EX  ›  程序员

如何实现付费下载功能?

  •  
  •   dream4ever ·
    Dream4ever · 337 天前 · 4173 次点击
    这是一个创建于 337 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

    第 1 条附言  ·  333 天前
    研究了一下,初步定了这么一个实现方案:

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

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

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

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

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

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

    这样就完全不会暴露文件地址给前端,实现起来也简单。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1921 人在线   最高记录 6067   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:51 · PVG 18:51 · LAX 03:51 · JFK 06:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.