iap支払いサーバーのpythonバージョンを検証します。

2795 ワード

http://www.myexception.cn/perl-python/416264.html
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}