V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
guibin1989
V2EX  ›  iDev

Apple IAP 有没有办法可以确定用户?

  •  
  •   guibin1989 · 2015-03-02 14:25:38 +08:00 · 7636 次点击
    这是一个创建于 3556 天前的主题,其中的信息可能已经有所发展或是发生改变。
    IAP的receipt中没有任何与用户有关的信息,而且苹果也不支持自定义额外字段。
    假如用户通过IAP付费开通了帐号A的会员。然后拿付费之后收到的收据和itunes的购买记录声称他为帐号B开通会员扣费了但是没有生效。
    我该怎么确定这个用户是否在说谎?或者在服务器端有没有什么措施可以避免这种情况?
    18 条回复    2018-10-26 18:47:59 +08:00
    delphiqin
        1
    delphiqin  
       2015-03-02 14:47:47 +08:00
    没有什么办法
    事实上也没什么人会这么干
    如果你真的信不过这个用户的话,可以让他找苹果退款再重新购买
    freewizard
        2
    freewizard  
       2015-03-02 15:24:02 +08:00
    把receipts数据存到你自己的服务器上,跟用户id绑定就可以了。如果担心用户端伪造,可以从你自己的服务器发起一个到Apple服务器的请求来验证receipt。
    guibin1989
        3
    guibin1989  
    OP
       2015-03-02 16:30:09 +08:00
    @delphiqin 恩,查了很多资料都没有这方面的
    guibin1989
        4
    guibin1989  
    OP
       2015-03-02 16:32:13 +08:00   ❤️ 1
    @freewizard 恩,这个是正常情况。但是如果某种原因服务器端没有收到请求,但是苹果已经扣费了。用户拿出消费记录和收据来和你对账,你如何判断这个账单是服务器请求失败的那个?
    c742435
        5
    c742435  
       2015-03-02 18:17:22 +08:00
    加一个支付恢复功能吧。
    guibin1989
        6
    guibin1989  
    OP
       2015-03-02 20:42:57 +08:00
    @c742435 恩,是个好主意
    freewizard
        7
    freewizard  
       2015-03-02 23:51:44 +08:00
    @guibin1989 恢复购买啊,对你的服务器来说跟正常购买流程是几乎一样的
    guibin1989
        8
    guibin1989  
    OP
       2015-03-03 09:37:10 +08:00
    @freewizard 恩,似乎只能保证交易的成功率了,真要碰到胡搅蛮缠的也没有办法
    lawder
        9
    lawder  
       2015-03-03 11:18:15 +08:00
    @freewizard receipt数据里面有特定字段(比如订单ID)可以和用户收到的购买邮件里的特定字段对应得上的吗?
    guibin1989
        10
    guibin1989  
    OP
       2015-03-03 11:56:13 +08:00
    @lawder 对应不上的,receipt里面的是transaction_id和订单号不是一样的
    guibin1989
        11
    guibin1989  
    OP
       2015-03-03 13:53:47 +08:00
    @freewizard 不好意思,再问一下。把receipt存在本地用来恢复购买的话,存在哪里比较好?NSUserDefault还是单独存在别的文件里?
    lawder
        12
    lawder  
       2015-03-03 14:17:00 +08:00
    @guibin1989 那这个问题就无解了。
    delphiqin
        13
    delphiqin  
       2015-03-03 15:54:20 +08:00   ❤️ 1
    其实,像会员这种内购,或者是订阅型IAP,或者是不可重复消费型IAP,这两种类型,苹果都是有接口可以检查用户是否已购买的,而且这个恢复购买的功能是苹果要求开发者必须实现的
    如果是检查到用户没有内购此计费点,但用户自己坚称已付费,那就让他去找苹果退款
    jhgfer
        14
    jhgfer  
       2015-03-03 19:46:11 +08:00
    @guibin1989 IAP 应该是有恢复购买功能的[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
    另外赞一下楼上的回复
    guibin1989
        15
    guibin1989  
    OP
       2015-03-03 21:50:27 +08:00
    @jhgfer 恢复购买只对Non-consumable和Auto-renewable subscription有效吧,我们会员选的是Non-Renewing Subscription
    muscleBean
        16
    muscleBean  
       2016-07-20 11:47:23 +08:00
    对于消耗型项目还有一种情况:如果用户购买成功了,服务器给用户发货,用户在收到了代金币。这时,如果用户去找苹果申请退款,且退款成功了,就会造成公司账目对不上。
    ruandao
        17
    ruandao  
       2016-07-26 08:49:30 +08:00
    @muscleBean 像这种情况要怎么处理
    linkermlin
        18
    linkermlin  
       2018-10-26 18:47:59 +08:00
    @muscleBean 延迟提现吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5665 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:07 · PVG 17:07 · LAX 01:07 · JFK 04:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.