`
ghh0000
  • 浏览: 23263 次
  • 来自: ...
社区版块
存档分类
最新评论

iap支付服务器验证python版本

阅读更多

苹果最近修改了规则,正式上线之前申请时请使用沙箱地址

客户端支付成功,发送信息到服务器,进行二次验证。
#-*- coding: utf-8 -*-
from django.http import HttpResponse, HttpResponseRedirect
import simplejson as json
import httplib
def pay_check(request):
    
    uid = request.uid
    params = request.POST.get('params','')
    
    if not params:
        return HttpResponse('false')
    
    
    pay_receipt_dict = json.loads(params) 
    pay_receipt_data = pay_receipt_dict.get('receipt-data')
    pay_receipt = json.dumps({'receipt-data':pay_receipt_data})
    
    headers = {"Content-type": "application/json"}
    #测试地址
    #connect = httplib.HTTPSConnection("sandbox.itunes.apple.com")
    #正式地址
    connect = httplib.HTTPSConnection("buy.itunes.apple.com")
    
    try:
        connect.request("POST", "/verifyReceipt", pay_receipt, headers)
        result = connect.getresponse()
    except:
        return HttpResponse('false')
    
    if result.status != 200:
        return HttpResponse('false')
    
    data = result.read()
    connect.close()
    if data:
        decodedJson = json.loads(data)
        
        status = decodedJson.get('status')
        receipt = decodedJson.get('receipt', {})
        
        transaction_id = receipt.get('transaction_id', '')
        purchase_date = receipt.get('original_purchase_date', '')
        product_id = receipt.get('product_id', '')
        
        if status == 0:
            #返回的status为0时代表支付是成功的,支付成功,最好记录一下
            return HttpResponse('true')
        
    return HttpResponse('false')



验证返回结果格式,注意其中的时间是格林尼治时间。和中国时间相差8小时。
{'receipt': {'bid': 'com.****.shop',
             'bvrs': '1.0.1',
             'item_id': '514487074',
             'original_purchase_date': '2012-05-03 03:46:52 Etc/GMT',
             'original_purchase_date_ms': '1336016812072',
             'original_purchase_date_pst': '2012-05-02 20:46:52 America/Los_Angeles',
             'original_transaction_id': '1000000046751500',
             'product_id': 'store_1',
             'purchase_date': '2012-05-03 03:46:52 Etc/GMT',
             'purchase_date_ms': '1336016812072',
             'purchase_date_pst': '2012-05-02 20:46:52 America/Los_Angeles',
             'quantity': '1',
             'transaction_id': '1000000046751500'},
 'status': 0}

分享到:
评论

相关推荐

    Python库 | itunes-iap-2.5.0.tar.gz

    “itunes-iap”库是Python开发人员处理苹果IAP验证和服务的利器。它提供了简单易用的API,使得开发者可以轻松地集成到他们的应用中,进行产品验证、购买状态查询、收据验证等一系列操作。在版本2.5.0中,这个库可能...

    IAP支付(IOS内购)

    **IAP支付(iOS内购)** iOS内购(In-App Purchase,简称IAP)是一种允许用户在应用程序内购买虚拟商品或服务的功能。苹果公司提供了这种服务,以供开发者在其App Store上销售数字内容和服务。Cocos2d-x是一个跨...

    Python-Pyqt5 小工具 - IAP HEX文件编辑器

    **Python-PyQt5小工具:IAP HEX文件编辑器** 在嵌入式系统开发中,固件更新是一项常见的任务,而IAP(In-Application Programming)是实现此功能的一种方式。IAP允许程序在运行时对自身的某些部分进行重写,而无需...

    Python库 | itunes-iap-0.1.2.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:itunes-iap-0.1.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    cocos2dx使用ios内支付详细流程iap

    本文将详细阐述如何在Cocos2d-x项目中实现iOS内支付iap的详细流程,主要分为以下几个步骤: 1. **配置App Store Connect**: 在开发IAP之前,你需要在Apple的开发者后台——App Store Connect中创建产品。登录你的...

    验证IAP返回receipt结果demo

    验证IAP收据通常分为本地验证和服务器验证两种方式。本地验证在用户设备上直接与Apple的验证服务器通信,但可能存在安全风险,因为恶意用户可能篡改设备上的代码。因此,更推荐的是服务器验证,即把收据发送到开发者...

    IAP功能IAP功能IAP功能IAP功能IAP功能IAP功能

    IAP功能IAP功能IAP功能IAP功能IAP功能IAP功能IAP功能

    unity3d的IAP内购代码

    5. **验证购买**:购买后,为了防止欺诈,需要通过网络向Apple服务器验证交易收据。 6. **处理恢复购买**:对于非消耗性商品,用户有权恢复之前购买的内容,InAppPurchaseManager需要处理这个逻辑。 7. **错误处理...

    LPC17XX-IAP存储测试代码

    此外,IAP功能也可能被用于固件更新,因此需要设计合理的固件版本管理和错误恢复机制。 总的来说,LPC17XX-IAP存储测试代码是针对LPC1758和LPC1768微控制器的IAP功能的验证和测试工具,它帮助开发者确保在应用中...

    stm32_IAP远程升级程序_STM32+W5500+IAP

    7. **重启与验证**:固件更新完成后,设备通常会自动重启,进入新固件并执行必要的初始化和验证步骤,确保新版本正常工作。 在提供的文件列表中,"使用说明更多帮助.html"可能是详细的用户指南或操作步骤,"Readme_...

    STC8_IAP.rar_STC8 iap_Ymodem_Ymodem 协议_stc8 iap_stc8h iap

    标题中的“STC8_IAP.rar”表明这是一个关于STC8系列单片机IAP(In-Application Programming)的项目文件包,它可能包含了实现IAP功能的相关源代码、头文件以及编译配置。IAP功能使得开发者能够在设备运行过程中对...

    iAP2 Sample Source R1.zip_iap2_mfi apple_mfi iap2_pool1aa_苹果MFI认

    3. Pool1aa:Pool1aa可能指的是苹果MFi认证中的一个特定的认证池或者版本号。在认证过程中,苹果会为不同阶段的测试分配不同的池,Pool1aa可能是其中一个阶段,用于测试特定功能或兼容性。制造商需要确保其产品在...

    第四章 C#+STM32实现设备远程管理与IAP—TCP服务器.rar

    第四章 C#+STM32实现设备远程管理与IAP—TCP服务器主要涵盖了两个核心主题:C#编程语言在构建高性能TCP服务器中的应用以及STM32微控制器的远程管理和固件更新(IAP,In-Application Programming)功能。下面将详细...

    stm32 IAP源码

    5. **安全机制**:为了防止未经授权的固件更新,IAP源码可能还包括加密和解密算法,以及签名验证机制。 6. **错误处理**:在固件更新过程中可能会遇到各种错误,如通信故障、电源问题等。源码中应有适当的错误处理...

    IAP_MAIN_iiciap_IAP_IAP_Main_iiciap_

    标题中的"IAP_MAIN_iiciap_IAP_IAP_Main_iiciap_"似乎是一个程序或库的命名,其中包含的关键字"IAP"和"iiciap"指的是In-Application Programming(IAP),这是一种在应用中更新固件的技术。在STM32微控制器中,IAP...

    基于ADS开发的IAP源码

    1. **检测新版本**:设备定期检查服务器上的固件更新信息,对比当前版本,判断是否需要升级。 2. **下载固件**:如果检测到新版本,设备通过网络下载新固件的二进制文件。 3. **验证固件**:下载完成后,设备会验证...

    STM32 IAP BOOTLOADER 验证程序

    这个文件包涵了3个相互跳转的工程,目标MCU型号为 STM32F103C8T6 . 3个工程分别为: BOOTLOADER , APP1, APP2. 跳转关系为 BOOTLOADER -> APP1 -> APP2 -> BOOTLOADER . 其中BOOTLOADER ,APP1 为非RTOSSA, APP2 为 ...

    lpc1768-iap_lpc1768iap_LPC1768IAP升级_LCP1768_IAP_

    描述中提到的“测试可用,已投产”,意味着这个IAP解决方案已经过验证,可以在实际项目中使用,具有良好的稳定性和可靠性。NXP的LPC系列单片机因其强大的性能、丰富的外设接口和易用性,常被开发者选用。 标签中的...

    IAR环境下STM32+IAP方案的实现

    例如,`IAP_EraseSector()`用于擦除指定的闪存扇区,`IAP_WritePage()`用于写入数据,`IAP_Verify()`则用于验证写入的数据是否正确。 3. **存储更新数据**:在RAM中分配一块空间用于存储待更新的程序数据。这些数据...

Global site tag (gtag.js) - Google Analytics