Ejemplo n.º 1
0
 def post(self):
     
     receipt_id = self.request.get('id')
     
     store_purchase_tmp_history = StorePurchaseTmpHistory.get_by_id(int(receipt_id))
     if store_purchase_tmp_history is not None:
         receipt_data = store_purchase_tmp_history.receipt_data
         user_prefs = store_purchase_tmp_history.user_prefs
         
         logging.info('Row: %s' % receipt_data)
         
         debug_mode = True
                 
         if debug_mode:
             verify_url = 'https://sandbox.itunes.apple.com/verifyReceipt'
         else:
             verify_url = 'https://buy.itunes.apple.com/verifyReceipt'
         
         receipt_data_b64 = base64.b64encode(receipt_data)
         logging.info('B64: %s' % receipt_data_b64)
         
         payload = simplejson.dumps({'receipt-data': receipt_data_b64}, ensure_ascii=False)
         
         logging.info('Verify URL: %s' % verify_url)
         
         response = urlfetch.fetch(url=verify_url, payload=payload, method=urlfetch.POST, headers={'Content-Type': 'application/json'})
         if response.status_code == 200:
             result = simplejson.loads(response.content)
             logging.info(response.content)
             if result['status'] == 0:
                 
                 store_purchase_history = StorePurchaseHistory()
                 store_purchase_history.user_prefs = user_prefs.key()
                 store_purchase_history.product_id = result['receipt']['product_id']
                 store_purchase_history.platform = 'ios'
                 store_purchase_history.receipt = response.content
                 store_purchase_history.status = 'pending'
                 store_purchase_history.put()
                 
                 logging.info('Status: Success')
                 
                 store_purchase_tmp_history.status = 'success'
                 store_purchase_tmp_history.put()
                 
                 try:
                     taskqueue.add(url = '/store_api/task/item_count_up', params = {'id': store_purchase_history.key().id()})
                 except:
                     logging.error('Add task failed.')
                     return self.error(500)
                 
                 logging.info('verify receipt success.')
             else:
                 logging.error('Status: Failed')
         else:
             logging.error('ResponseCode: %d' % response.status_code)
             return self.error(500)
             
         logging.info('verify receipt failed.')
     else:
         logging.error('receipt_id not found.')