如何实现付费下载功能? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
dream4ever
V2EX    程序员

如何实现付费下载功能?

  •  
  •   dream4ever 2022 年 10 月 31 日 5450 次点击
    这是一个创建于 1184 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

    第 1 条附言    2022 年 11 月 4 日
    研究了一下,初步定了这么一个实现方案:

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

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

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

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

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

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

    这样就完全不会暴露文件地址给前端,实现起来也简单。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5275 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 08:07 PVG 16:07 LAX 00:07 JFK 03:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86