runxinzhi.com
首页
百度搜索
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(); } ?>
相关阅读:
sqlserver查询数据的所有表名和行数
java内存查看与分析
jboss中JVM监控
建设一个能承受500万PV/每天的网站如果计算?
Java MVC框架性能比较
struts1,struts2,springMVC终极对比
struts2的action是线程安全的,struts1的action不是线程安全的真正原因
浅析Struts1和Struts2的Action线程安全问题
xml bug之cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration...
eclipse调试web项目
原文地址:https://www.cnblogs.com/javawebsoa/p/2458429.html
最新文章
windows电脑空间清理
《大卫·奥格威自传》听书笔记
聪明人都在默默下笨功夫,愚蠢的人却总在想偷懒找捷径
《激活个体》听书笔记~管理,激发员工潜力的八条建议
《养育的选择》读书笔记
《硅谷钢铁侠》听书笔记
《牛奶可乐经济学》给我们的三个成长建议
如何快速成长?
linux开机启动的三种方式
linux如何后台运行进程,而且不随终端关闭而关闭
热门文章
linux清空文件方法
mvn sonar:sonar在jenkins步骤的执行位置影响执行结果
linux、mac的bash和zsh如何切换
linux服务器之间的文件同步;rsync+inotifywait;同步多个目录
mac的dns缓存查询和清除
jenkins报:反向代理设置有误
sqlalchemy: TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30
Unlinking stale socket /tmp/supervisor.sock
使用TortoiseSVN新建及合并分支图文教程
SVN使用教程总结
Copyright © 2020-2023
润新知