php 苹果内购支付
来源:互联网 发布:软件开发企业资质证书 编辑:程序博客网 时间:2024/04/29 22:17
- /**
- * 验证AppStore内付
- * @param string $receipt_data 付款后凭证
- * @return array 验证是否成功
- */
- function validate_apple_pay($receipt_data){
- /**
- * 21000 App Store不能读取你提供的JSON对象
- * 21002 receipt-data域的数据有问题
- * 21003 receipt无法通过验证
- * 21004 提供的shared secret不匹配你账号中的shared secret
- * 21005 receipt服务器当前不可用
- * 21006 receipt合法,但是订阅已过期。服务器接收到这个状态码时,receipt数据仍然会解码并一起发送
- * 21007 receipt是Sandbox receipt,但却发送至生产系统的验证服务
- * 21008 receipt是生产receipt,但却发送至Sandbox环境的验证服务
- */
- function acurl($receipt_data, $sandbox=0){
- //小票信息
- $POSTFIELDS = array("receipt-data" => $receipt_data);
- $POSTFIELDS = json_encode($POSTFIELDS);
- //正式购买地址 沙盒购买地址
- $url_buy = "https://buy.itunes.apple.com/verifyReceipt";
- $url_sandbox = "https://sandbox.itunes.apple.com/verifyReceipt";
- $url = $sandbox ? $url_sandbox : $url_buy;
- //简单的curl
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $POSTFIELDS);
- $result = curl_exec($ch);
- curl_close($ch);
- return $result;
- }
- // 验证参数
- if (strlen($receipt_data)<20){
- $result=array(
- 'status'=>false,
- 'message'=>'非法参数'
- );
- return $result;
- }
- // 请求验证
- $html = acurl($receipt_data);
- $data = json_decode($html,true);
- // 如果是沙盒数据 则验证沙盒模式
- if($data['status']=='21007'){
- // 请求验证
- $html = acurl($receipt_data, 1);
- $data = json_decode($html,true);
- $data['sandbox'] = '1';
- }
- if (isset($_GET['debug'])) {
- exit(json_encode($data));
- }
- // 判断是否购买成功
- if(intval($data['status'])===0){
- $result=array(
- 'status'=>true,
- 'message'=>'购买成功'
- );
- }else{
- $result=array(
- 'status'=>false,
- 'message'=>'购买失败 status:'.$data['status']
- );
- }
- return $result;
- }
- 使用方法也非常简单; 就是把IOS发过来的支付凭证作为参数传入validate_apple_pay()函数即可; 但是既然挂上了thinkphp整合; 那就给个示例吧; /Application/Api/Controller/AppstoreController.class.php
- <?php
- namespace Api\\Controller;
- use Common\\Controller\\HomeBaseController;
- /**
- * paypal支付
- */
- class AppstoreController extends HomeBaseController{
- // 支付回调
- public function result(){
- //苹果内购的验证收据
- $receipt_data = I('post.apple_receipt');
- // 验证支付状态
- $result=validate_apple_pay($receipt_data);
- if($result['status']){
- // 验证通过 此处可以是修改数据库订单状态等操作
- }else{
- // 验证不通过
- }
- }
- }
阅读全文
0 0
- php 苹果内购支付
- 苹果内购支付 服务器端验证
- 苹果内支付
- iOS程序生命周期,苹果内购、微信支付、支付宝支付
- 苹果内购二次验证 PHP代码
- 苹果内购二次验证 PHP代码
- IOS苹果内支付iap Java服务端
- ios应用内支付过程(使用苹果原生支付方式
- php处理苹果支付接口回调
- iOS应用里面包含虚拟商品,支付必须使用苹果内购方式
- 苹果内购
- 苹果内购代码
- 苹果内购流程
- 苹果内购问题
- 苹果内购总结
- 苹果内购
- Unity 苹果内购
- Swift3 苹果内购
- 关于CNN的卷积理解
- python:字典操作
- VC删除类的方法
- 【SVN】之介绍
- 微信错误:errcode=45015, errmsg=response out of time limit or subscription is canceled
- php 苹果内购支付
- (转载)说说Makefile那些事儿
- .创建一个窗口程序(JFrame),标题栏起名为“浏览器”,有一个菜单条,有“文件”、“编辑”、“查看”3个菜单。“文件”菜单有两个菜单项,一项是“打开”,一项是“保存”,“打开”项做成子菜单,有两个
- 在Java中,二维数组中计算行数和列数
- 三角剖分
- Gridview 中间分割线(一)
- 微信小程序——基础
- DS9208升级说明 V3
- 欢迎使用CSDN-markdown编辑器