// 正式环境验证地址
$ios_verify_url = 'https://buy.itunes.apple.com/verifyReceipt';
// 测试环境验证地址
$ios_sandbox_verify_url = 'https://sandbox.itunes.apple.com/verifyReceipt'; $defaults = array(
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_URL => $ios_sandbox_verify_url,
CURLOPT_FRESH_CONNECT => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FORBID_REUSE => 1,
CURLOPT_TIMEOUT => 60,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_POSTFIELDS => $receipt // 苹果购买后返回的票据信息
); $ch = curl_init();
curl_setopt_array($ch, $defaults);
$result = curl_exec($ch);
$errno = curl_errno($ch);
$errmsg = curl_error($ch);
curl_close($ch); // 判断时候出错,抛出异常
if ($errno != 0) {
throw new Exception($errmsg, $errno);
} $object = json_decode($result);
// 判断返回的数据是否是对象
if (!is_object($object) || !isset($object->status)) {
throw new Exception('Invalid response data');
} if($object->status === 0) {
// 认证成功
$return = array(
'status' => 1,
'receipt' => null,
'expires_date_ms' => null,
'remote_server_code' => $object->status
); if (isset($object->latest_receipt) && !empty($object->latest_receipt)) {
// 如果是订阅购买,需要将票据保存到数据库中
// 如果苹果返回了这个值,那么需要同步将这个值更新到数据库中
} if (isset($object->latest_receipt_info) && !empty($object->latest_receipt_info)) {
// 获取过期时间
$last_receipt_info = end($object->latest_receipt_info);
$expires_date_ms = $last_receipt_info->expires_date_ms / 1000;
} // 其他操作
} else {
return array(
'status' => 0,
'receipt' => null,
'expires_date_ms' => null,
'remote_server_code' => $object->status
);
}

或者

$receipt = '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';
validate_receipt($receipt, false);
function validate_receipt($receipt_data, $sandbox_receipt = FALSE) {
if ($sandbox_receipt) {
$url = "https://sandbox.itunes.apple.com/verifyReceipt";
}
else {
$url = "https://buy.itunes.apple.com/verifyReceipt";
}
$ch = curl_init($url);
$data_string = json_encode(array(
'receipt-data' => $receipt_data,
'password' => '501692890fec42cab66dfc10d3b7xxxx',//订阅购买需要认证密码
));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$output = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if (200 != $httpCode) {
die("Error validating App Store transaction receipt. Response HTTP code $httpCode");
} $decoded = json_decode($output, TRUE);
var_dump($decoded);exit;
}

  

IOS苹果购买PHP服务器端验证(订阅购买和一次性购买通用)的更多相关文章

  1. Android Google购买PHP服务器端验证(订阅购买和一次性购买)

    一.订阅购买验证 android端采用google service account进行校验 1.打开https://cloud.google.com/console创建一个project: 2.打开p ...

  2. ios 苹果内购订单验证 --- nodejs实现

    实现代码 function IosPlayVerify(data,orderid,cb) { itunesPost(data,function (error,responseData) { if (e ...

  3. ios 苹果内购订单验证 --- php实现

    验证函数: function appleVerify($receipt_data,$orderId = 0) { /* * 21000 App Store不能读取你提供的JSON对象 * 21002 ...

  4. 苹果IOS内购二次验证返回state为21002的坑

    项目是三四年前的老项目,之前有IOS内购二次验证的接口,貌似很久都没用了,然而最近IOS的妹子说接口用不了,让我看看啥问题.接口流程时很简单的,就是前端IOS在购买成功之后,接收到receipt后进行 ...

  5. IOS,苹果内购和添加广告

    内购——应用内购买 通过苹果应用程序商店有三种主要赚钱的方式: 直接收费(与国内大部分用户的消费习惯相悖) 广告(降低用户体验 应用程序名称带Lite可以添加广告) O2O -> Online推 ...

  6. FineUI(开源版)v6.0中FState服务器端验证的实现原理

    前言 1. FineUI(开源版)是完整开源,最早发起于 2008-04,下载全部源代码:http://fineui.codeplex.com/ 2. 你可以通过捐赠作者来支持FineUI(开源版)的 ...

  7. SpringMVC 服务器端验证

    1.导入JSR303验证类库Jar包2.在MVC的配置文件中添加<mvc:annotation-driven/>的配置3.在MVC的配置文件中添加验证器的配置4.在接收表单数据的类中添加验 ...

  8. jsf服务器端验证用户输入

    服务器端验证用户输入数据步骤 1 html页面上插入要输入数据控件 <h:inputText size="10" value="#{commodityBean.fo ...

  9. jQuery html5Validate基于HTML5表单 异步服务器端验证

    1. HTML5 自带的Validate 很漂亮,很好用, 但是一定要在form里用submit按钮,才生效 <form id="frmInfo" action=" ...

随机推荐

  1. 如何手动添加Android Dependencies包

    在ADT16 之前可以在工程里面做关联,eclipse会在工程上自动添加ReferenceLibrary.新版本的ADT修改了第三方jar的导入方式,只需要在工程目录下新建libs文件夹,注意是lib ...

  2. vim一个快速切换主题的插件(change-colorscheme,原创)

    概述 有时候我们想快速浏览主题并找到一款合适的主题,change-colorscheme将会满足我们的要求. 安装 git https://github.com/chxuan/change-color ...

  3. 配置hibernate例子

    一.hiberbate.cfg.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hib ...

  4. MySQL密码忘记之解决方法

    方法一: 通过修改配置文件来登录mysql,方法也不难. 操作步骤: 在安装目录下找到配置文件my.ini 2.在my.ini中找到 [mysqld]字段,在它底下加上skip-grant-table ...

  5. 关于相对路径和绝对路径及cd命令的使用

    cd (change directory) 目录    跳转到指定目录下 路径定义分为两种:绝对路径(absolute)和相对路径(relative) 绝对路径:从根目录(/)开始写去的文件名或目录名 ...

  6. MySQL多实例配置

    实验环境:RHEL6.4为最小化安装,mysql安装包为通用二进制安装包,版本为mysql-5.6.26 创建mysql用户 #useradd –M –s /sbin/nologin mysql #y ...

  7. 物理CPU、物理核跟逻辑核的区分

    一般来说,物理CPU个数×每颗核数就应该等于逻辑CPU的个数,如果不相等的话,则表示服务器的CPU支持超线程技术 ,所以您的电脑是双核的. 一 概念① 物理CPU 实际Server中插槽上的CPU个数 ...

  8. HDU 1016 Prime Ring Problem (DFS)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  9. 【Irrlicht鬼火引擎】 安装配置Irrlicht鬼火引擎

    一.下载引擎 官方网站:http://irrlicht.sourceforge.net/‎ 官方网站需要FQ才能进入,如果不想FQ,可以通过其他下载地址:CSDN下载:http://download. ...

  10. hdu 4571 floyd+动态规划

    思路: 我们先求一遍floyd,将各点的最短距离求出,然后将点按si的升序排序.dp[i][k]表示第i个点在第j时间所获得的最大效益,那么 dp[i][k]=max(dp[ i ][ k ]  , ...