苹果IAP PHP对接需五步:一、客户端传base64收据至PHP;二、解码后用cURL向苹果沙盒/生产接口验证;三、解析响应校验商品ID、去重及订阅状态;四、自动切换环境(21007/21008触发重试);五、定期拉取latest_receipt_info处理续订与过期。

如果您正在开发一个iOS应用并需要在后端验证苹果应用内购买(IAP)的交易凭证,则PHP是常用的服务器端语言之一。以下是完成苹果应用内支付PHP对接的具体步骤:
一、获取苹果提供的交易凭证
客户端(iOS应用)在完成购买后,会收到一个base64编码的交易收据(receipt-data),该数据需提交至您的PHP服务器进行验证。服务器不应直接信任客户端传来的任何信息,必须通过与苹果服务器交互完成真实性校验。
1、iOS客户端调用SKPaymentQueue的transactionReceipt属性或使用StoreKit 2的Transaction.receipt获得原始收据数据。
2、将该收据数据以JSON格式POST至您的PHP接口,字段名建议为receipt_data。
立即学习“PHP免费学习笔记(深入)”;
3、PHP接口接收该字段值,并进行base64解码前的合法性检查,确保字符串仅含base64字符集且长度合理。
二、向苹果验证收据
苹果提供两个环境对应的验证URL:沙盒环境用于测试,生产环境用于上线应用。PHP需根据收据来源自动选择对应地址,避免在生产中误用沙盒接口导致验证失败。
1、对客户端传入的receipt_data执行base64_decode(),获取原始二进制收据数据。
2、构造JSON请求体:array('receipt-data' => $decoded_receipt, 'password' => $shared_secret);其中shared_secret为App Store Connect中配置的共享密钥(仅适用于自动续期订阅)。
3、使用cURL向https://sandbox.itunes.apple.com/verifyReceipt(沙盒)或https://buy.itunes.apple.com/verifyReceipt(生产)发起POST请求,Content-Type设为application/json。
4、接收苹果返回的JSON响应,检查response['status']字段值:0表示验证成功,21007或21008表示需转向另一环境重试。
三、解析并校验响应内容
苹果返回的JSON中包含receipt、latest_receipt_info、pending_renewal_info等关键结构。PHP需逐层提取并比对业务所需字段,防止伪造响应。
1、若status为0,从response['receipt']['in_app']中提取所有订单记录,每条记录含product_id、transaction_id、original_transaction_id、purchase_date_ms等。
标签: php word js json 编码 app 苹果 后端 curl ios apple red
还木有评论哦,快来抢沙发吧~