• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php - iOS : How to get Server-side receipt validation? 的自动更新订阅

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:29:05 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我刚刚完成开发我的应用程序,创建我的 Apple 组织帐户,在 iTunes 连接端创建我需要的所有内容,但我现在的问题是开发 server-side receipt validation (因为 Validating Receipts Locally 似乎有一些潜在的人在中间的安全问题)。

...
    // Load the receipt from the app bundle.
    NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
    NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
    if (!receipt) { /* No local receipt -- handle the error. */ }

    /* ... Send the receipt data to your server ... */
...

我非常了解该图片上描述的验证过程:

enter image description here

我的主要问题是我不是服务器问题的专家,如果您有一些示例说明我必须为收据验证编写什么代码以及我必须使用什么技术(PHP、Angular 或其他... )。

(第一个例子:在那个 ticket 上,服务器端的代码是否足以完成验证?)

(第二个例子: 使用 JSON 将 UDID 和 Base64 编码的收据发送到服务器,服务器询问应用商店,应用商店发送ok,服务器发送ok到app。如果是好的流程,我可以轻松搞定。Ticket 2 提前致谢。



Best Answer-推荐答案


这是我的解决方案:

我使用我的服务器来验证我的收据,如下所示:

https://github.com/aporat/store-receipt-validator

use ReceiptValidator\iTunes\Validator as iTunesValidator;

$validator = new iTunesValidator(iTunesValidator::ENDPOINT_PRODUCTION); // Or iTunesValidator::ENDPOINT_SANDBOX if sandbox testing

$receiptBase64Data = 'ewoJ
......
OVG8xTlNCRmRHTXZSMDFVSWpzS2ZRPT0iOwoJImVudmlyb25tZW50IiA9ICJTYW5kYm94IjsKCSJwb2QiID0gIjEwMCI7Cgkic2lnbmluZy1zdGF0dXMiID0gIjAiOwp9';

try {
  $response = $validator->setReceiptData($receiptBase64Data)->validate();
  // $sharedSecret = '1234...'; // Generated in iTunes Connect's In-App Purchase menu
  // $response = $validator->setSharedSecret($sharedSecret)->setReceiptData($receiptBase64Data)->validate(); // use setSharedSecret() if for recurring subscriptions
} catch (Exception $e) {
  echo 'got error = ' . $e->getMessage() . PHP_EOL;
}

if ($response->isValid()) {
  echo 'Receipt is valid.' . PHP_EOL;
  echo 'Receipt data = ' . print_r($response->getReceipt()) . PHP_EOL;
} else {
  echo 'Receipt is not valid.' . PHP_EOL;
  echo 'Receipt result code = ' . $response->getResultCode() . PHP_EOL;
}

我服务器上的 WS 发送给我是否正常。

(对于iPad上的本地进程不建议使用,您可以在这里找到它:I'm getting 21004 as status value in reply from apple's sandbox server testing auto-renewable subscriptions in ios?)

关于php - iOS : How to get Server-side receipt validation? 的自动更新订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47892798/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap