苹果订阅付费 app多账号订阅归属解决方案

iOS订阅开发相关

本章不讨论 iOS订阅开发,详细的自行参考大神的文章
iOS 自动订阅开发
从上面文章得知,苹果设计自动订阅的初衷是 ,订阅一个服务, 这个服务需要跟着 Apple ID走
但国内的应用关联的是App的User ID,而不是Apple ID,但文章只是简单的描述“App自身做处理,就是记住首次购买的transaction-id,并且绑定某个用户”。
那么同一个Apple ID, A UID已订阅, B UID 购买订阅,客户端需要做哪些处理,后端做哪些处理呢?
本章只讨论多账号订阅的归属问题,与前后端的处理

订阅receipt结构

receipt通过base64解码可得:

{ 
"signature" = "dfreree...."; //也是base64 
"purchase-info" = "ewoJIm9x....."; //也是base64,这个里面存放详细时间,流水号等 
"environment" = "Sandbox"; 
"pod" = "100"; 
"signing-status" = "0"; 
} 

“purchase-info”可以再次base64解码可得:

{ 
"original-purchase-date-pst" = "2017-08-29 23:52:45 America/Los_Angeles"; 
"purchase-date-ms" = "1504144439749"; 
"unique-identifier" = "a063c2c321dd885642a5cddd9160e0ad8291d978"; 
"original-transaction-id" = "1000000328915948"; 
"expires-date" = "1504144739749"; 
"transaction-id" = "1000000329310742"; 
"original-purchase-date-ms" = "1504075965000"; 
"web-order-line-item-id" = "1000000036091900"; 
"bvrs" = "1"; 
"unique-vendor-identifier" = "B78549AC-58D4-4750-8E6F-F4CCE6138A5A"; 
"expires-date-formatted-pst" = "2017-08-30 18:58:59 America/Los_Angeles"; 
"item-id" = "1276511095"; 
"expires-date-formatted" = "2017-08-31 01:58:59 Etc/GMT"; 
"product-id" = "lcm.denachina.pickle.38.1month"; 
"purchase-date" = "2017-08-31 01:53:59 Etc/GMT"; 
"original-purchase-date" = "2017-08-30 06:52:45 Etc/GMT"; 
"bid" = "com.denachina.pickle"; 
"purchase-date-pst" = "2017-08-30 18:53:59 America/Los_Angeles"; 
"quantity" = "1"; 
} 

其他参数都可以在官网上查看到,这里重点看”original-transaction-id“与”transaction-id“

  • transaction-id 代表每次下单的与苹果唯一订单
  • original-transaction-id 代表与苹果订阅类型唯一订单号的原生订单
    original-transaction-id字面意思就是原始订单号的意思,可以理解为该Apple ID的某订阅唯一标示,无论取消订阅、续费、升降级original-transaction-id都不变,但transaction-id每次都改变。首次订阅transaction-id与original-transaction-id是一致的

苹果订阅升降级收费处理

现在假设 AppstoreConnect后台配置一个订阅
| product ID | 包月 | 包季 |
| —— | —— | —— |
| com.xx.autoVip | 10元 | 30元 |
同Apple ID情况下,未订阅的情况下

  • A UserID 订阅“包月”,订阅成功后,马上扣费10元

  • A UserID 再订阅 “包月”相同等级的,订阅失败,苹果自身会拦截,会出现“您已订阅此项目”的提示框,不扣费


    p71.png
  • A UserID 订阅“包季”,则为升级,订阅成功,扣费30元, “包月”的按剩余部分进行退款,退给用户 小于10元 ,新的包季订阅从新订阅付款开始计算


    p72.png
  • A UserID 再订阅“包月“,则为降级,订阅成功,不扣费,需要等“包季”过期后,才生效“包月”,此时才开始扣“包月”的费用


    p73.png

苹果这样的设计应该是为了收益最大化
知道苹果收费策略后,接下来多账号的就好办了

多账号归属

original-transaction-id 绑定到UserID上就可以了
订阅配置同上,同Apple ID情况下

  • A UserID 订阅“包月”, 换B UserID 再订阅“包月”,苹果自身会拦截,会出现“您已订阅此项目”的提示框
  • A UserID 已订阅“包月”, 换B UserID 再订阅“包季”,则为升级,A UserID 订阅退款,A User服务终止,把original-transaction-id 换绑B UserID,完成升级
  • 再换登陆A UserID 订阅“包月”,则为降级,此时需要B User包季结束后,再把original-transaction-id换绑A UserID,完成降级

运营策略

用户订阅进行升降级,对于项目是减少了订阅的,A用户换绑B用户,其实A的订阅是失去的,所以尽量减少让用户换绑操作,其实一些运营策略也可以减少换绑概率,从而提高订阅收入

  • 升降级操作尽量不要在App内完成,尽量引导用户去苹果系统内部做升降级
  • 用户订阅中的,不展示订阅产品内容,用户无法购买
  • 新用户订阅
    • 在支付之前是无法知道当前的Apple ID是否已经订阅过产品,因为original-transaction-id只有支付后才能知道,所以很难避免用户在App上做升降机处理。但是我们可以设置多个订阅来减少换绑
    • 在AppstoreConnect设置的时候有个组的概念,Apple ID不可以存在相同组的订阅,简单的说包月、包季不能同时存在,要么包月、要么包季。让一个Apple ID存在多个可用的original-transaction-id,那么就可以绑定过个账号了
    • 但可以存在多个不同组的订阅,如下表,可以同时存在普通包月、促销包月。
    • 新用户订阅,则展示促销订阅套餐。订阅过的用户并过期的,展示正常价格订阅套餐。这种设计也是能满足国内国情。
    • 但对于同一个用户,两个包月是不合理的,程序上一定要避免同一个用户购买不同订阅的存在
      | product ID | 包月 | 包季 | 描述|
      | —— | —— | —— | —— |
      | com.xx.autoVip | 10元 | 30元 | 正常 |
      | com.xx.autoVipc | 6元 | 30元 | 促销 |
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349