根据苹果的规则,对于App内已经完成的所有IAP,用户都是可以去申请退款的,只要理由勉强说得过去。比如说『我眼睛看花了』、『我儿子玩儿的时候点错了』。基本上前两次都可以成功退款。
次数多了可能不太好退了,但是——架不住用户有闲心可以多申请几个Apple ID啊!!
Apple大爷可能不太care这个,但是作为开发者,这可能就导致你所有需要付费的功能都给了用户后,一分钱都收不到。不要不相信,目前我们就遇到了一伙疯狂的用户,疯狂到这个月原本XXXX的收入,现在成了-XXXX
。
不知道大家有没有什么好辙,可以验证一个已经支付的订单是否被退款了。(明显的,我们手上有该订单的receipt,并且通过 https://buy.itunes.apple.com/verifyReceipt 可以获得transaction_id等等订单的基本信息)
PS:我们当然不能指望苹果在订单退款后,像支付宝那样发个异步通知给我们。甚至都不能指望苹果在后台给我们提供退款订单列表让我们手动处理。
PPS:希望大家不要歪楼啊!!!
貌似 由 Apple 的客服人员全权处理..
"
According to an answer one of my users received from Apple, refunding an app means they will no longer receive updates to the app, but doesn't remove the app from the device. IAP appears to work the same.
I am wondering if there is not a way by using restoreCompletedTransactions to check for the iAP purchase, but this would pop up a request for the user's iTunes password, so its use is limited."
退款并不会影响使用 只不过不能更新..
尝试下面方法,不知道是否正确。如果可行,告知一下。
http://stackoverflow.com/questions/6439482/how-does-apple-notify-ios-apps-of-refunds-of-in-app-purchases-iap
The strategy is:
a. You save the latest_receipt ("MIIUJgYJKoZIhvc..." base64) field in your DB, associated with the user account.
b. Every day you query apple to validate all the receipts, by sending them the base64 receipt from saved latest_receipt field.
c. In the receipt you check if there is a cancellation_date field. If you find it, treat it according to apple documentation:
https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html
Cancellation Date
For a transaction that was canceled by Apple customer support, the time and date of the cancellation.
ASN.1 Field Type 1712
ASN.1 Field Value IA5STRING, interpreted as an RFC 3339 date
JSON Field Name cancellation_date
JSON Field Value string, interpreted as an RFC 3339 date
Treat a canceled receipt the same as if no purchase had ever been made.