美文网首页
苹果内购的坑

苹果内购的坑

作者: liu66_net | 来源:发表于2019-12-14 15:03 被阅读0次

苹果的凭证查询的数据如果是消耗性只能查询一次,如果是订阅型也会有时效性,订阅型如果是同一组会保留一个原始订单号(第一次购买该组订阅的订单号),很多坑需要自己发掘,下面是基本的代码处理

public  function arraySort($arr,$key,$type='asc',$subscript=0){

        $keyArr = []; // 初始化存放数组将要排序的字段值
        foreach ($arr as $k=>$v){
            $keyArr[$k] = $v[$key]; // 循环获取到将要排序的字段值
        }
        if($type == 'asc'){
            asort($keyArr); // 排序方式,将一维数组进行相应排序
        }else{
            arsort($keyArr);
        }
        foreach ($keyArr as $k=>$v){
            $newArray[$k] = $arr[$k]; // 循环将配置的值放入响应的下标下
        }
        $newArray = array_merge($newArray); // 重置下标
        return $newArray[$subscript]; // 数据返回
    }




$receipt = '凭证';
$password = '密码';
$jsonItem = json_encode(['receipt-data' => $receipt,'password'=>$password ]);
 //$url= 'https://buy.itunes.apple.com/verifyReceipt';      //正式
        $url = 'https://sandbox.itunes.apple.com/verifyReceipt';  //测试
 $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
        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);
        $result= json_decode($response, true);
if($result['status'] == 21007)
{
 $url= 'https://buy.itunes.apple.com/verifyReceipt';      //正式
$ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
        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);
        $result= json_decode($response, true);
}
if ($result['status'] !== 0) {
            //验证失败 返回app错误状态,可以记录日志
exit;
}
 $receiptitem = $result['latest_receipt_info'];
 $item = $this->arraySort($receiptitem, 'purchase_date', 'desc');
$orderThird = $item['transaction_id'];                //本次订阅的订单号
        $orderThirdFirst = $item['original_transaction_id'];  //这个是原始订单号

相关文章

  • Flutter 接入iOS苹果内购支付踩坑过程

    如何配置内购商品 坑1:项目与价格配置 苹果内购支付和我们平时接入支付宝或者微信支付有很大的差别。 苹果内购支付的...

  • 苹果内购的坑

    苹果的凭证查询的数据如果是消耗性只能查询一次,如果是订阅型也会有时效性,订阅型如果是同一组会保留一个原始订单号(第...

  • 苹果内购In-app purchase

    关于苹果内购(IAP)的一些问题以及那些坑: 最近在研究苹果内购功能,所以,在网上找了一些资料,进行学习。但是,内...

  • iOS 内购的实现

    自己开发的视频直播项目,牵涉到充值金币,用到了苹果公司的内购,趴坑了两天,这里总结下实现苹果内购。 一. 创建测试...

  • 苹果内购踩的坑

    内购官方文档 https://developer.apple.com/library/archive/docume...

  • iOS IAP基本流程.md

    IAP的流程就是指内购,简单来说就是应用内支付,但是包含的逻辑非常多,有些人说苹果内购坑太多,但是你需要考虑它的承...

  • iOS 11 如何测试苹果商店内内购

    如何测试苹果商店内内购? 有什么现象? 0、苹果商店的内购,用户在苹果商店中选择内购产品时,如果用户已经安装好此应...

  • 苹果内购和Apple Pay 的区别

    苹果内购 和 Apple Pay 的区别 关注苹果支付和内购也是从苹果发布打赏功能必须走“内购”流程后,引发微信以...

  • [iOS]苹果内购的踩坑

    1,TransactionState 2. 卡单,提示已购买将免费恢复 在Appdelegate中didFinis...

  • 苹果内购流程

    苹果内购流程

网友评论

      本文标题:苹果内购的坑

      本文链接:https://www.haomeiwen.com/subject/vqwcnctx.html