ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

从零到一:AI虚拟恋人App全栈开发与支付合规实战

从零到一:AI虚拟恋人App全栈开发与支付合规实战 1. 从焦虑出发一个虚拟恋人 App 的真实起点去年有一段时间我整个人状态很差。手上的项目黄了作息乱成一团每天凌晨两三点还在刷手机白天又提不起劲。那种迷茫不是没事情做而是不知道做什么才有意义。后来我想与其干耗着不如做点自己真正想做的产品。于是就有了这个项目——一个带支付、带官网的 AI 聊天虚拟恋人 App。先把这个东西说清楚。它本质上是一个移动端应用用户打开后可以和一个 AI 角色聊天角色有自己的人设、语气、记忆能陪用户聊日常、聊情绪、聊琐事。App 里内置了会员订阅和虚拟道具购买走的是微信支付和支付宝两条通道同时配了一个官网用来做产品介绍、下载引导和支付回调的落地页。整套东西从产品设计、前后端开发、支付接入到官网上线都是我一个人在迷茫期里一点点搭起来的。这篇文章适合谁看如果你也在考虑做一个带真实支付闭环的 AI 应用或者你手上有个 AI 聊天类产品但卡在支付、官网、上架这些环节那这篇内容应该能帮你少走不少弯路。我不会只讲怎么做更会讲为什么这么做——因为我在这个过程中踩的坑很多都不是技术难而是决策错。需要先说明一点本文涉及的支付接入、官网搭建、App 开发都是基于我个人实践和行业常见做法整理的具体参数和流程请以你实际使用的平台文档为准。另外涉及内容合规的部分我会在对应章节里专门讲这块是这类产品能不能活下去的关键不能含糊。2. 为什么虚拟恋人这个方向值得做以及它的真实门槛2.1 情绪陪伴需求的本质不是聊天是被回应很多人一听到虚拟恋人第一反应是这不就是个套壳聊天机器人吗。我一开始也这么想但真正做进去之后发现用户要的根本不是能聊天而是被回应。这两者差别很大。普通的聊天机器人用户问一句它答一句答完就结束了。但虚拟恋人不一样它需要记住用户昨天说过的话需要在用户情绪低落时主动关心需要在用户分享一件小事时给出有温度的反馈。换句话说它卖的不是信息是情绪价值。这个认知直接决定了产品设计。我在做角色设定的时候不是简单写一段 prompt 就完事而是给每个角色定义了性格底色、说话习惯、口头禅、对用户的称呼方式、情绪反应模式。比如一个温柔型的角色用户说今天好累它不会回注意休息而是会说辛苦啦要不要跟我说说今天发生了什么。这种细节才是用户愿意留下来的原因。2.2 付费意愿从哪里来陪伴是刚需但免费额度必须设计好做这类产品最现实的问题是用户凭什么付费我的经验是免费用户必须能体验到陪伴感但要在关键节点上设置自然的付费点。具体来说我设计了几个层次免费层每天有一定数量的对话条数基础角色可用但记忆深度有限不能解锁深度剧情。会员层无限对话、解锁全部角色、开启长期记忆、专属剧情线。道具层单次购买的虚拟礼物、特殊场景解锁、角色皮肤等。这里有个很关键的细节免费额度不能给太少否则用户还没感受到陪伴就撞墙了直接卸载但也不能给太多否则用户没有付费动力。我实测下来免费用户每天能完成 2 到 3 段完整对话是比较合适的平衡点。提示付费点的设计一定要和情绪高点绑定。比如用户刚和角色完成一段很走心的对话这时候弹出会员引导转化率会明显高于随机弹窗。2.3 这类产品的真实门槛技术不难难在持续运营和合规说实话从技术角度看AI 聊天 App 的开发门槛并不高。大模型 API 调用、聊天界面、用户系统、支付接入这些都是成熟方案。真正难的是两件事一是持续运营二是内容合规。持续运营的难点在于用户对陪伴类产品的新鲜感衰减很快。如果角色永远只有那几句话术用户一周就腻了。所以必须持续更新角色、剧情、互动方式。我在项目里预留了角色配置系统运营人员可以不改代码就上线新角色和新剧情这个设计后来救了我很多次。内容合规的难点在于AI 聊天类产品很容易出现不可控的输出。我的做法是在输入端和输出端都加了过滤层同时给每个角色设定了明确的边界。这块后面会专门展开讲。3. 技术选型为什么我选了这套组合而不是看起来更高级的方案3.1 前端为什么用跨平台方案而不是原生双端做 App 第一个决策就是技术栈。原生 iOS Android 双端开发体验最好但成本翻倍。我一个人的项目时间就是最大的成本所以我选了跨平台方案。具体来说我用的是一套基于 JavaScript 的跨平台框架一套代码同时出 iOS 和 Android。为什么不用看起来更先进的其他方案因为我的核心需求是聊天界面流畅、支付 SDK 能顺利接入、包体积可控。跨平台方案在这三点上完全够用而且社区成熟遇到问题能搜到答案。这里有个坑要提醒跨平台方案在接入原生支付 SDK 时往往需要写桥接代码。我一开始低估了这块工作量结果在微信支付接入上卡了整整两天。建议你在选型阶段就把支付 SDK 是否支持该跨平台方案作为硬性评估项。3.2 后端为什么用 Python 而不是 Node.js后端我选了 Python框架用的是 Django。原因很直接AI 相关的生态在 Python 上最完整调用大模型 API、处理文本、做内容过滤Python 的库最全。而且 Django 自带用户系统、后台管理、ORM对于我这种一个人要干全栈的情况能省掉大量重复工作。Django 里有个概念叫 app一个项目可以拆成多个 app每个 app 负责一块功能。我的项目拆成了这几个 appuser用户注册、登录、第三方授权chat对话逻辑、角色管理、记忆存储payment订单、支付回调、会员状态content内容过滤、敏感词管理这种拆法的好处是每块功能边界清晰后期加功能不会互相干扰。我见过有人把所有逻辑塞在一个 app 里后期改一处崩三处非常痛苦。3.3 大模型为什么我不自己训练而是调用 API这个问题我被问过很多次。自己训练模型听起来很酷但对个人项目来说完全不现实。训练一个能用的对话模型需要的数据量、算力、调参经验都不是一个人能搞定的。而且就算训练出来了效果大概率还不如成熟 API。所以我直接调用大模型 API。选型时我主要看三点响应速度、中文对话质量、价格。响应速度直接影响聊天体验超过 3 秒用户就会觉得卡中文质量决定了角色说话自不自然价格决定了我的成本能不能撑住。注意调用大模型 API 时一定要做超时和降级处理。我遇到过 API 偶发超时的情况如果没有降级方案用户那边就是一直转圈体验极差。我的做法是设置 8 秒超时超时后返回一句预设的过渡话术同时后台记录这次异常。3.4 官网为什么不用现成建站工具官网这块我一开始想用现成的建站工具拖拖拽拽就出来了。但后来发现不行因为我的官网需要处理支付回调、需要和 App 共享用户数据、需要做下载引导的渠道统计。这些需求现成工具满足不了最后还是自己写。技术栈上官网用的是轻量的前端框架加一个简单的后端服务。页面不多就首页、功能介绍、下载页、隐私政策、用户协议这几个。但每个页面都要考虑移动端适配因为大部分用户是从手机点进来的。4. 支付接入JSAPI 支付里 openid 这个坑我踩了整整一天4.1 微信支付 JSAPI 的核心逻辑为什么必须传 openid微信支付有好几种接入方式我选的是 JSAPI 支付因为它在微信内打开的网页里体验最顺。但 JSAPI 支付有个硬性要求必须传 openid。openid 是什么简单说它是用户在某个微信应用比如你的公众号或小程序里的唯一标识。微信支付需要这个标识来确认是谁在付款。没有它支付请求直接被拒。我一开始不理解为什么非要这个后来想明白了微信支付要保证资金安全和可追溯必须知道付款人的身份。openid 就是这个身份凭证。所以这不是可选项是必选项。4.2 openid 获取的完整链路从授权到拿到标识获取 openid 的流程是这样的用户在微信内打开你的页面你引导用户点击授权。用户同意后微信会重定向到你配置的回调地址并带上一个 code。你拿这个 code去调用微信的接口换取 access_token 和 openid。把 openid 存到你的用户体系里和你的用户 ID 绑定。这里有几个容易出错的点回调地址必须配置正确在微信后台配置的授权回调域名必须和你实际使用的域名完全一致包括协议http/https。我因为域名配置漏了一个子域名调试了半天。code 只能用一次换 openid 的 code 是一次性的用完就失效。如果你在换 openid 之前做了其他跳转code 可能就浪费了。openid 要持久化存储不要每次支付都重新走授权那样用户体验很差。正确做法是首次授权后把 openid 存起来后续直接用。4.3 支付回调的处理为什么不能只依赖前端返回支付完成后前端会收到一个支付结果。但你不能只信前端。因为前端结果可能被篡改也可能因为网络问题没收到。正确做法是前端返回只用来做界面提示真正的订单状态以服务端的支付回调为准。微信支付会在支付成功后向你配置的回调地址发送通知。你需要验证回调的签名确认是微信发来的。根据回调里的订单号更新你数据库里的订单状态。返回成功响应否则微信会重复通知。我踩过的坑是回调地址一开始没做幂等处理结果微信重复通知了三次我的订单状态被改了三次会员天数多送了两天。后来加了幂等判断同一个订单号只处理一次。4.4 支付宝沙箱上线前必须用它跑通全流程支付宝这边我强烈建议先用沙箱环境跑通。沙箱就是支付宝提供的测试环境你可以用虚拟账号完成支付全流程不花真钱。沙箱的价值在于它能让你在正式上线前发现所有问题签名错误、回调地址错误、订单金额格式错误等等。我在沙箱里跑了大概二十笔测试订单把能踩的坑都踩了一遍正式上线时才没有出大问题。提示沙箱环境和正式环境的密钥、网关地址都不一样切换时一定要仔细核对我见过有人上线时忘了换网关地址结果支付全部失败。5. 内容合规这类产品能不能活下去全看这一层5.1 为什么合规是生死线而不是可选项AI 聊天类产品尤其是带情感陪伴属性的最容易出问题的地方就是内容。如果 AI 输出了不当内容轻则被用户举报重则产品下架。这不是危言耸听是这类产品最常见的死法。所以我在项目一开始就把合规当成核心功能来做而不是后期补丁。具体来说我在三个层面做了防护输入端过滤用户发送的消息先过一遍敏感词库命中就直接拦截不发给大模型。输出端过滤大模型返回的内容再过一遍过滤层命中就替换成安全话术。角色边界设定在角色的系统提示词里明确写清楚哪些话题不能碰让模型从源头就避开。5.2 敏感词库怎么维护不能只靠一份静态列表很多人做过滤就是找一份敏感词列表然后做字符串匹配。这种做法问题很大一是列表会过时二是用户会用谐音、变体绕过。我的做法是分层过滤第一层基础词库覆盖明确的违规词直接拦截。第二层变体识别对常见谐音、拆字、符号插入做归一化处理后再匹配。第三层语义判断对边界模糊的内容调用一个轻量的判断接口做二次确认。这三层下来拦截准确率会高很多。但也要注意过滤不能过度否则用户正常聊天都被拦体验会很差。我调了很久才找到平衡点。5.3 角色人设里的边界设计让 AI 自己知道什么不能说除了外部过滤角色本身的设定也很重要。我在每个角色的系统提示词里都会明确写一段边界说明大意是你是一个陪伴型角色专注于日常聊天和情绪支持不讨论任何超出这个范围的话题遇到相关请求要温和地转移话题。这种做法的好处是模型在生成内容时就会自我约束减少输出端过滤的压力。实测下来加了边界说明后输出端需要拦截的比例明显下降。6. 官网上线不只是个门面它是支付闭环的一部分6.1 官网的真实作用下载引导、支付落地、信任背书很多人觉得官网就是个摆设App 才是核心。但在这个项目里官网承担了三个关键作用下载引导用户从各种渠道点进来官网是统一的下载入口还能做渠道统计。支付落地微信 JSAPI 支付需要在网页里发起官网就是那个承载支付的页面。信任背书一个有正规官网的产品用户信任度会高很多尤其是涉及付费的时候。所以官网不是做完 App 随便搭一个就行它需要和 App 的数据打通需要处理支付逻辑需要做移动端适配。6.2 官网和 App 的数据打通用户体系必须统一这里有个设计决策官网和 App 是用同一套用户体系还是分开我的选择是统一。用户在官网授权拿到 openid 后这个身份直接和 App 里的账号绑定。这样用户在官网付费买了会员回到 App 里能直接用不需要重新登录或重新购买。实现上我用了一个统一的用户 ID 作为主键openid、手机号、第三方授权标识都作为这个用户的关联属性。这样无论用户从哪个入口进来最终都指向同一个账号。6.3 上线前的检查清单这些细节不做上线就出事官网上线前我整理了一份检查清单这里分享几个最容易漏的检查项为什么重要我的踩坑经历隐私政策和用户协议应用商店审核必查第一次提交因为缺隐私政策被拒移动端适配大部分流量来自手机首页在手机上错位改了一版支付回调地址配错就收不到支付结果测试环境地址忘了换成正式地址HTTPS 证书微信支付要求必须 HTTPS证书过期导致支付中断下载链接有效性链接失效用户直接流失安卓包更新后旧链接 4047. 上架与成本一个人做 App 到底要花多少钱7.1 开发成本拆解钱主要花在哪经常有人问开发一个 App 并上架大概要多少钱。这个问题没有标准答案但我可以把我这个项目的实际花费拆给你看大模型 API 费用这是持续支出按调用量计费。前期用户少的时候每月几十块用户涨起来后是主要成本。服务器费用聊天类应用对服务器要求不高一台中等配置的云服务器够用每月百来块。开发者账号费用iOS 开发者账号每年固定费用安卓各应用商店政策不同。支付通道费用微信和支付宝会按交易额收取一定比例的手续费。官网域名和证书域名每年几十块SSL 证书可以用免费的。如果全部自己开发硬成本其实不高。真正贵的是时间成本。我这个项目从零到上线断断续续花了几个月。7.2 上架流程iOS 和安卓的差异iOS 上架相对严格审核周期长对内容合规要求高。我的经验是提交前一定要把隐私政策、用户协议、内容分级这些准备好否则很容易被拒。安卓这边国内有多个应用商店每个商店的审核标准不一样。我的做法是先上一个审核最严的通过后再上其他这样能提前发现合规问题。注意AI 聊天类应用在部分商店属于敏感品类提交时可能需要额外说明内容安全机制。提前准备好你的过滤方案说明能加快审核。7.3 上线后的真实运营比开发更累的部分上线只是开始。我上线后遇到的第一个问题是用户来了但留存很低。后来分析发现是角色太单一用户聊两天就腻了。于是我做了两件事一是快速上线新角色二是加入剧情线让用户和角色的关系有进展感。这两件事做完留存明显改善。这段经历让我明白这类产品的核心竞争力不在技术而在内容和运营。技术只是让你能跑起来内容和运营才决定你能跑多远。8. 迷茫期做这个项目我真正学到的东西回到最开始那个状态。我做这个项目的时候其实并不知道它能不能成也不知道自己能不能坚持下来。但做完之后回头看有几个体会是真实的。第一迷茫的时候做具体的事比想抽象的问题有用。我如果一直纠结我该做什么可能到现在还在纠结。但当我开始写第一行代码、接第一个支付接口、改第一个 bug方向就慢慢清晰了。第二一个人做全栈项目最大的敌人不是技术难度是决策疲劳。每天要做无数个选择用什么框架、怎么设计表结构、支付点放哪里。我的应对方法是能抄成熟方案就抄能延后就延后把精力集中在真正影响体验的核心环节上。第三合规和运营的重要性远超我最初的预期。我一开始以为技术做完就万事大吉结果发现技术只是入场券真正决定产品生死的是内容安全和持续运营。如果你也在做类似的产品或者正处在迷茫期想做点什么我的建议是先做一个最小可用的版本把支付闭环跑通把合规底线守住然后快速上线让真实用户告诉你下一步该做什么。想再多不如先跑起来。
返回列表