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(); } ?>
相关阅读:
改进SENet-ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
组集成网络-Group Ensemble: Learning an Ensemble of ConvNets in a single ConvNet
轻量级网络-ReXNet:Diminishing Representational Bottleneck on Convolutional Neural Network
ULSAM:Ultra-Lightweight Subspace Attention Module for Compact Convolutional Neural Networks
工作中常用的 Shell 命令及技巧
程序员需要熟悉的英语单词
程序员基本素养
Java 基础 —— Lambda 表达式
将博客搬至CSDN
IDEA 插件推荐 —— 让你写出好代码的神器!
原文地址:https://www.cnblogs.com/javawebsoa/p/2458429.html
最新文章
SourceTree Atlassian账号注册和登录教程
全面概述Gitee和GitHub生成/添加SSH公钥
未加载mscorlib.pdb
Layui-admin-iframe通过页面链接直接在iframe内打开一个新的页面,实现单页面的效果
微信小程序转化为uni-app项目
uni-app微信小程序开发之引入腾讯视频小程序播放插件
ASP.NET WebApi+Vue前后端分离之允许启用跨域请求
将JSON字符串反序列化为指定的.NET对象类型
.NET微信网页开发之使用微信JS-SDK获取当前地理位置
.NET微信网页开发之使用微信JS-SDK调用微信扫一扫功能
热门文章
.NET微信网页开发之使用微信JS-SDK自定义微信分享内容
ASP.NET MVC使用Layui选择多图片上传
.NET中将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),并使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA
【论文笔记】张航和李沐等提出:ResNeSt: Split-Attention Networks(ResNet改进版本)
计算机视觉中的注意力相关论文
空间金字塔注意力-SPANET: SPATIAL PYRAMID ATTENTION NETWORK FOR ENHANCED IMAGE RECOGNITION
深度连接注意力网络-DCANet: Learning Connected Attentions for Convolutional Neural Networks
Image classification in frequency domain with 2SReLU: a second harmonics superposition activation function
优化方法
设计GPU高效网络-Neural Architecture Design for GPU-Efficient Networks
Copyright © 2020-2023
润新知