PHP怎么验证苹果支付收据_苹果支付收据PHP验证技巧【教程】

admin 百科 17
苹果收据验证需区分沙盒与生产环境,通过官方接口、cURL安全请求、第三方SDK、本地签名验证及订阅收据链解析五种方式综合校验有效性与真实性。

PHP怎么验证苹果支付收据_苹果支付收据PHP验证技巧【教程】-第1张图片-佛山资讯网

如果您在PHP后端接收到苹果应用内购买的收据数据,但无法确认其有效性与真实性,则可能是由于未正确调用苹果验证接口或未处理沙盒/生产环境切换逻辑。以下是验证苹果支付收据的多种方法:

一、使用苹果官方验证接口(基础HTTP请求方式)

苹果提供两个验证端点:沙盒环境用于测试,生产环境用于正式发布。需根据收据内容自动识别并选择对应URL,避免硬编码导致验证失败。

1、提取收据数据中的base64编码字符串,确保未被截断或添加额外空格。

2、构造JSON请求体:{"receipt-data": "原始base64字符串", "password": "共享密钥(仅适用于自动续订订阅)"}

立即学习“PHP免费学习笔记(深入)”;

3、向https://sandbox.itunes.apple.com/verifyReceipt发起POST请求;若返回status为21007,则改用https://buy.itunes.apple.com/verifyReceipt重试。

4、检查响应中status字段值:21000表示格式错误,21002表示收据数据损坏,21003表示签名无效,21004表示共享密钥不匹配,21005表示Apple服务器不可用,21006表示收据有效但已过期(仅限旧版收据),21008表示收据来自沙盒但提交至生产环境

二、使用cURL配合SSL证书校验(增强安全性)

直接使用file_get_contents可能忽略SSL证书验证,存在中间人攻击风险。通过cURL显式设置CURLOPT_SSL_VERIFYPEER和CURLOPT_CAINFO可提升通信安全性。

1、下载最新Apple根证书(AppleIncRootCertificate.cer)并转换为PEM格式。

2、初始化cURL句柄,设置CURLOPT_URL为目标验证地址,CURLOPT_POST为true,CURLOPT_POSTFIELDS为JSON数据。

3、启用SSL验证:CURLOPT_SSL_VERIFYPEER设为true,CURLOPT_CAINFO指向本地PEM证书路径

4、执行请求并捕获响应,使用json_decode解析结果,检查receipt属性是否存在且包含in_app数组。

三、引入第三方SDK(如joshcam/php-apple-receipt-validator)

该库封装了环境自动检测、重试机制及常见status码映射,减少手动处理逻辑出错概率。

1、通过Composer安装:composer require joshcam/apple-receipt-validator

标签: php word js json composer 编码 app 苹果 ssl 后端 curl ai ios apple

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~