예제 #1
0
def queryPamentDetails(post_params):
    """
        Get detailed order status
    """
    url = pesapal.queryPaymentDetails(post_params)
    response = urllib2.urlopen(url)
    return response.read()
예제 #2
0
    def check_status(self):

        data = {
          'pesapal_merchant_reference': self.ref,
          'pesapal_transaction_tracking_id': self.transaction_tracking_id
        }

        url = pesapal.queryPaymentDetails(data)

        ctx = ndb.get_context()
        res = ctx.urlfetch(url).get_result()

        data = res.content

        if 'pesapal_response_data=' not in data:
            return

        print 'checking payment status'

        pesapal_transaction_tracking_id,\
        payment_method,\
        payment_status,\
        pesapal_merchant_reference = data\
            .split('pesapal_response_data=')[1]\
            .split(',')
        
        print data

        self.method = payment_method
        self.set_status(payment_status.lower())
        self.put()

        if self.get_status_string() != 'pending':
            return

        # mark overdue if payment status check timed out
        timeout = self.MAX_STATUS_CHECKS*self.DEFER_STATUS_CHECK_BY_MINUTES

        payment_overdue = timedelta(minutes=timeout) <= (datetime.now() - self.date_created)

        if payment_overdue:
            self.set_status('overdue')
            self.put()
        else:
            deferred.defer(
                self.check_status,
                _countdown=self.DEFER_STATUS_CHECK_BY_MINUTES
            )
예제 #3
0
    def check_status(self):

        data = {
            'pesapal_merchant_reference': self.ref,
            'pesapal_transaction_tracking_id': self.transaction_tracking_id
        }

        url = pesapal.queryPaymentDetails(data)

        ctx = ndb.get_context()
        res = ctx.urlfetch(url).get_result()

        data = res.content

        if 'pesapal_response_data=' not in data:
            return

        print 'checking payment status'

        pesapal_transaction_tracking_id,\
        payment_method,\
        payment_status,\
        pesapal_merchant_reference = data\
            .split('pesapal_response_data=')[1]\
            .split(',')

        print data

        self.method = payment_method
        self.set_status(payment_status.lower())
        self.put()

        if self.get_status_string() != 'pending':
            return

        # mark overdue if payment status check timed out
        timeout = self.MAX_STATUS_CHECKS * self.DEFER_STATUS_CHECK_BY_MINUTES

        payment_overdue = timedelta(minutes=timeout) <= (datetime.now() -
                                                         self.date_created)

        if payment_overdue:
            self.set_status('overdue')
            self.put()
        else:
            deferred.defer(self.check_status,
                           _countdown=self.DEFER_STATUS_CHECK_BY_MINUTES)