zoukankan
html css js c++ java
IAP (内置购买) 服务器端代码
PHP 服务器端代码,
首先要确 php的 curl 和 SSL (open_ssl)这两个模块开启,可以在 php.ini 中去掉 这两个dll前面的分号。
<?php //服务器二次验证代码 function getReceiptData($receipt, $isSandbox = false) { if ($isSandbox) { $endpoint = 'https://sandbox.itunes.apple.com/verifyReceipt'; } else { $endpoint = 'https://buy.itunes.apple.com/verifyReceipt'; } $postData = json_encode( array('receipt-data' => $receipt) ); $ch = curl_init($endpoint); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); //这两行一定要加,不加会报SSL 错误 curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); $response = curl_exec($ch); $errno = curl_errno($ch); $errmsg = curl_error($ch); curl_close($ch); //判断时候出错,抛出异常 if ($errno != 0) { throw new Exception($errmsg, $errno); } $data = json_decode($response); //判断返回的数据是否是对象 if (!is_object($data)) { throw new Exception('Invalid response data'); } //判断购买时候成功 if (!isset($data->status) || $data->status != 0) { throw new Exception('Invalid receipt'); } //返回产品的信息 return array( 'quantity' => $data->receipt->quantity, 'product_id' => $data->receipt->product_id, 'transaction_id' => $data->receipt->transaction_id, 'purchase_date' => $data->receipt->purchase_date, 'app_item_id' => $data->receipt->app_item_id, 'bid' => $data->receipt->bid, 'bvrs' => $data->receipt->bvrs ); } //获取 App 发送过来的数据,设置时候是沙盒状态 $receipt = $_GET['data']; $isSandbox = true; //开始执行验证 try { $info = getReceiptData($receipt, $isSandbox); // 通过product_id 来判断是下载哪个资源 switch($info['product_id']){ case 'com.application.xxxxx.xxxx': Header("Location:xxxx.zip"); break; } } //捕获异常 catch(Exception $e) { echo 'Message: ' .$e->getMessage(); } ?>
查看全文
相关阅读:
什么是首次适应算法,该算法的特点是什么?
用上、下界防护方法是如何实现界地址保护?在硬件上需要什么支持?
什么是存储保护?
什么是静态地址重定位,它需要什么支持?什么是动态地址重定位,他需要什么支持?静态地址重定位与动态地址重定位有什么区别?
什么是逻辑地址,什么是物理地址,为什么要进行二者的转换工作?
三个进程共享四个同类资源,这些资源的分配与释放只能一次一个。已知每一个进程最多需要两个资源,试问,该系统会发生死锁吗?为什么?
试举出一种一种避免死锁的发生的方法,并说明为什么能避免死锁的发生?
产生死锁的原因是什么?产生死锁的必要条件是什么?
什么是死锁,试举例说明?
说出两种一笔调度的算法,并说出这两种移臂调度算法的定义。
原文地址:https://www.cnblogs.com/javawebsoa/p/2458429.html
最新文章
mysql时间字符串按年/月/天/时分组查询
「七天自制PHP框架」第二天:模型与数据库
「七天自制PHP框架」第三天:PHP实现的设计模式
谈JavaScript的继承
PHP解耦的三重境界(浅谈服务容器)
Laravel的console使用方法
Laravel是怎么实现autoload的?
解读Laravel,看PHP如何实现Facade?
Angular控制器
Laravel的ORM入门
热门文章
Laravel使用Seeder自动填充数据
ajax配置项中的type与method
两个数组比较,得出不重复的元素
Vue.directive()的用法和实例
vue笔记
easyui tree checkbox 单选控制
js时间戳与日期格式的相互转换
Js/Jquery获取iframe中的元素
layer的iframe弹框中父子元素的传值
git 如何把master分支代码合并到自己的分支
Copyright © 2011-2022 走看看