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(); } ?>
查看全文
相关阅读:
带妹入坑,她该怎样提高自己的编程能力?
性能测试--cpu使用率过高怎么办
loadrunner Controller 删除available scripts中无用脚本
loadrunner 立即执行+定时执行设置
loadrunner11 :脚本日志打印设置及举例说明
loadrunner录制chrome脚本:页面无响应
Error -27492: "HttpSendRequest" failed, Windows error code=12152 (invalid server response) and retry。。。
loadrunner11错误:Error -27776: Server "wsg.cmszmail.ad" shut connection during attempt to negotiate SSL session [MsgId: MERR-27776]解决办法
loadrunner11 错误:Error -26377: No match found for the requested parameter XXXX. web_custom_request(XXX) highest severity level was "ERROR",....... [MsgId: MMSG-26387]
loadrunner11 执行bat批处理文件时获取bat文件所在路径 正确方式与采坑说明
原文地址:https://www.cnblogs.com/javawebsoa/p/2458429.html
最新文章
洛达AirPods鉴别检测工具AB153x_UT,支持1562a 1562f
基于Docker搭建Redis集群(主从集群)
Fielddata is disabled on text fields by default. Set fielddata=true on [XXX] in order to load fielddata in memory by uninverting the inverted index.
Lua与C/C++互操作
adb命令
【Java】Java NIO Path和Files(五)
【Java】Java NIO之Selector 选择器(四)
【Java】Java NIO 之 Channel 通道(三)
【Java】Java NIO 之 Buffer 缓冲区(二)
【Java】Java NIO 概览(一)
热门文章
【Java多线程】原子操作的实现原理
【Java多线程】synchronized 关键字解析(七)
【JVM】运行时数据区总结(十一)
【JVM】方法区(十)
【Java多线程】CPU多级缓存与缓存一致性(六)
【stars-one】JetBrains产品试用重置工具
修改阿里云DNS 解决蓝奏云无法访问问题
分析redis key大小的几种方法
在mac上使用docker部署PostgreSQL数据库
【PHP】通过各种函数判断0和空
Copyright © 2011-2022 走看看