如何处理 refund/cancellation 应用内购买

How to handle refund/cancellation in-app purchase

我正在尝试处理 iOS 的应用内购买退款。但是我找不到明确的指导方针来做到这一点。

所以我有一个会员类型的应用程序内购买功能,其中用户凭据不一定与 iTunes 帐户相关联。

是否有某种标识符可以让我在有人购买时参考,并且在他们通过 apple 申请退款时具有相同的标识符?

此外,他们退款时我们会立即收到通知吗?我需要立即退会。

谢谢!

您可以使用收据的各种元素来跟踪...其中大部分在应用程序内购买编程指南中进行了讨论。 https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html#//apple_ref/doc/uid/TP40008267-CH1-SW1

至于取消,视情况而定。如果订阅终止,则在当前订阅期限结束之前一直处于活动状态。如果是实际退款,似乎没有外部记录 "formal answer"。为遇到相同情况的其他人查看此问题... How does Apple notify iOS apps of refunds of in-app purchases (IAP)?

我最终存储了收据字符串和 运行 cron 来完成交易并查找取消字段。

    $url = "https://buy.itunes.apple.com/verifyReceipt"; 
    $data = json_encode(array('receipt-data' => $receipt));

    $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            $response = curl_exec($ch);
            $errno    = curl_errno($ch);
            $errmsg   = curl_error($ch);
            curl_close($ch);
            if ($errno != 0) {
                throw new Exception($errmsg, $errno);
            }
            return $response;