Exemple #1
0
    def checkout_feedback(cls, post):
        """
        :param post: post is a dictionary which allPay server sent to us.
        :return: a dictionary containing data the allpay server return to us.
        """
        _logger.info('inside the feedback')
        HASH_KEY = acquirer.allpay_hash_key
        HASH_IV = acquirer.allpay_hash_iv
        returns = {}
        ar_parameter = {}
        check_mac_value = ''
        try:
            payment_type_replace_map = {
                '_CVS': '',
                '_BARCODE': '',
                '_Alipay': '',
                '_Tenpay': '',
                '_CreditCard': ''
            }
            period_type_replace_map = {'Y': 'Year', 'M': 'Month', 'D': 'Day'}
            for key, val in post.iteritems():

                print key, val
                if key == 'CheckMacValue':
                    check_mac_value = val
                else:
                    ar_parameter[key.lower()] = val
                    if key == 'PaymentType':
                        for origin, replacement in payment_type_replace_map.iteritems(
                        ):
                            val = val.replace(origin, replacement)
                    elif key == 'PeriodType':
                        for origin, replacement in period_type_replace_map.iteritems(
                        ):
                            val = val.replace(origin, replacement)
                    returns[key] = val

            sorted_returns = sorted(ar_parameter.iteritems())
            sz_confirm_mac_value = "HashKey=" + HASH_KEY

            for val in sorted_returns:
                sz_confirm_mac_value = "".join((str(sz_confirm_mac_value), "&",
                                                str(val[0]), "=", str(val[1])))

            sz_confirm_mac_value = "".join(
                (sz_confirm_mac_value, "&HashIV=", HASH_IV))
            sz_confirm_mac_value = util.do_str_replace(
                (urllib.quote_plus(sz_confirm_mac_value)).lower(), False)
            sz_confirm_mac_value = hashlib.md5(
                sz_confirm_mac_value).hexdigest().upper()

            _logger.info('sz-checkMacValue: %s & checkMacValue: %s' %
                         (sz_confirm_mac_value, check_mac_value))

            if sz_confirm_mac_value != check_mac_value:
                return False
            else:
                return returns
        except:
            _logger.info('Exception!')
Exemple #2
0
    def spgateway_form_generate_values(self, values):
        self.ensure_one()
        base_url = self.env['ir.config_parameter'].sudo().get_param(
            'web.base.url')
        date_create = int(time.time())
        merchant_id = getattr(self, 'sp_merchant_id')
        sp_hash_key = getattr(self, 'sp_hash_key')
        sp_hash_iv = getattr(self, 'sp_hash_iv')
        amount = int(round(values['amount']))
        spgateway_tx_values = dict(values)
        spgateway_tx_values.update({
            'MerchantID':
            merchant_id,
            'RespondType':
            'JSON',
            'TimeStamp':
            date_create,
            'Version':
            '1.2',
            'MerchantOrderNo':
            values['reference'],
            'Amt':
            amount,
            'ItemDesc':
            self.company_id.name,
            'Email':
            values['partner_email'],
            'LoginType':
            '0',
            'ReturnURL':
            '%s' % urlparse.urljoin(base_url, SpgatewayController._return_url),
            'NotifyURL':
            '%s' % urlparse.urljoin(base_url, SpgatewayController._notify_url),
        })

        to_sign = {}
        to_sign.update({
            'Amt': amount,
            'MerchantID': merchant_id,
            'MerchantOrderNo': values['reference'],
            'TimeStamp': date_create,
            'Version': '1.2',
        })

        # sorted_to_sign = sorted(to_sign.iteritems())
        # url_encode_str = urllib.urlencode(sorted_to_sign)
        # final_str = 'HashKey=%s&%s&HashIV=%s' % (sp_hash_key, url_encode_str, sp_hash_iv)
        # hash_str = hashlib.sha256(final_str).hexdigest().upper()

        sorted_to_sign = sorted(to_sign.iteritems())
        sorted_to_sign.insert(0, ('HashKey', sp_hash_key))
        sorted_to_sign.append(('HashIV', sp_hash_iv))
        string_to_sign = util.do_str_replace(
            urllib.quote(werkzeug.url_encode(sorted_to_sign), '+&'))

        spgateway_tx_values['CheckValue'] = hashlib.sha256(
            string_to_sign).hexdigest().upper()

        return spgateway_tx_values
Exemple #3
0
    def checkout_feedback(self, cr, uid, id, values, context=None):
        """
        :param post: post is a dictionary which allPay server sent to us.
        :return: a dictionary containing data the allpay server return to us.
        """
        _logger.info('inside the feedback')
        _logger.info('vales: %s' % (values))

        acquirer = self.browse(cr, uid, id, context=context)
        _logger.info('acquirer: %s' % (acquirer))

        HASH_KEY = acquirer.allpay_hash_key
        HASH_IV = acquirer.allpay_hash_iv
        _logger.info('HASH_KEY: %s' % (HASH_KEY))
        _logger.info('HASH_IV: %s' % (HASH_IV))

        returns = {}
        ar_parameter = {}
        check_mac_value = ''

        payment_type_replace_map = {'_CVS': '', '_BARCODE': '', '_Alipay': '', '_Tenpay': '', '_CreditCard': ''}
        period_type_replace_map = {'Y': 'Year', 'M': 'Month', 'D': 'Day'}
        for key, val in values.iteritems():

            print key, val
            if key == 'CheckMacValue':
                check_mac_value = val
            else:
                ar_parameter[key.lower()] = val
                if key == 'PaymentType':
                    for origin, replacement in payment_type_replace_map.iteritems():
                        val = val.replace(origin, replacement)
                elif key == 'PeriodType':
                    for origin, replacement in period_type_replace_map.iteritems():
                        val = val.replace(origin, replacement)
                returns[key] = val

        sorted_returns = sorted(ar_parameter.iteritems())
        sz_confirm_mac_value = "HashKey=" + HASH_KEY

        for val in sorted_returns:
            sz_confirm_mac_value = "".join((str(sz_confirm_mac_value), "&", str(val[0]), "=", str(val[1])))

        sz_confirm_mac_value = "".join((sz_confirm_mac_value, "&HashIV=", HASH_IV))
        _logger.info( 'sz_confirm_mac_value : %s' % sz_confirm_mac_value )
        sz_confirm_mac_value = util.do_str_replace((urllib.quote_plus(sz_confirm_mac_value.encode('utf8'))).lower(), False)
        # sz_confirm_mac_value = util.do_str_replace(urllib.quote(werkzeug.url_encode(sz_confirm_mac_value), '+%').lower())
        sz_confirm_mac_value = hashlib.md5(sz_confirm_mac_value).hexdigest().upper()

        _logger.info('sz-checkMacValue: %s & checkMacValue: %s' % (sz_confirm_mac_value, check_mac_value))

        if sz_confirm_mac_value != check_mac_value:
            return False
        else:
            return returns
Exemple #4
0
    def checkout_feedback(self, cr, uid, id, values, context=None):
        """
        :param post: post is a dictionary which allPay server sent to us.
        :return: a dictionary containing data the allpay server return to us.
        """
        _logger.info('inside the feedback')
        _logger.info('vales: %s' % (values))

        acquirer = self.browse(cr, uid, id, context=context)
        _logger.info('acquirer: %s' % (acquirer))

        HASH_KEY = acquirer.allpay_hash_key
        HASH_IV = acquirer.allpay_hash_iv
        _logger.info('HASH_KEY: %s' % (HASH_KEY))
        _logger.info('HASH_IV: %s' % (HASH_IV))

        returns = {}
        ar_parameter = {}
        check_mac_value = ''

        payment_type_replace_map = {'_CVS': '', '_BARCODE': '', '_Alipay': '', '_Tenpay': '', '_CreditCard': ''}
        period_type_replace_map = {'Y': 'Year', 'M': 'Month', 'D': 'Day'}
        for key, val in values.iteritems():

            print key, val
            if key == 'CheckMacValue':
                check_mac_value = val
            else:
                ar_parameter[key.lower()] = val
                if key == 'PaymentType':
                    for origin, replacement in payment_type_replace_map.iteritems():
                        val = val.replace(origin, replacement)
                elif key == 'PeriodType':
                    for origin, replacement in period_type_replace_map.iteritems():
                        val = val.replace(origin, replacement)
                returns[key] = val

        sorted_returns = sorted(ar_parameter.iteritems())
        sz_confirm_mac_value = "HashKey=" + HASH_KEY

        for val in sorted_returns:
            sz_confirm_mac_value = "".join((str(sz_confirm_mac_value), "&", str(val[0]), "=", str(val[1])))

        sz_confirm_mac_value = "".join((sz_confirm_mac_value, "&HashIV=", HASH_IV))
        _logger.info( 'sz_confirm_mac_value : %s' % sz_confirm_mac_value )
        sz_confirm_mac_value = util.do_str_replace((urllib.quote_plus(sz_confirm_mac_value.encode('utf8'))).lower(), False)
        # sz_confirm_mac_value = util.do_str_replace(urllib.quote(werkzeug.url_encode(sz_confirm_mac_value), '+%').lower())
        sz_confirm_mac_value = hashlib.md5(sz_confirm_mac_value).hexdigest().upper()

        _logger.info('sz-checkMacValue: %s & checkMacValue: %s' % (sz_confirm_mac_value, check_mac_value))

        if sz_confirm_mac_value != check_mac_value:
            return False
        else:
            return returns
Exemple #5
0
    def allpay_form_generate_values(self, cr, uid, id, tx_values, context=None):
        base_url = self.pool['ir.config_parameter'].get_param(cr, SUPERUSER_ID, 'web.base.url')
        acquirer = self.browse(cr, uid, id, context=context)
        date_create = datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')  # time format yyyy/MM/dd HH:mm:ss
        amount = int(round(tx_values['amount']))
        if amount <= 0:
            amount = 1

        allpay_tx_values = dict(tx_values)
        allpay_tx_values.update({
            'MerchantID': acquirer.allpay_merchant_id,
            'MerchantTradeNo': tx_values['reference'],
            'MerchantTradeDate': tx_values.get('date_create', date_create),
            'PaymentType': 'aio',
            'TotalAmount': amount,
            'TradeDesc': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ItemName': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ChoosePayment': 'ALL',
            'IgnorePayment': 'Alipay#Tenpay#TopUpUsed',
            'ReturnURL': '%s' % urlparse.urljoin(base_url, allPayController._return_url),
            'OrderResultURL': '%s' % urlparse.urljoin(base_url, allPayController._order_result_url),
            # 'ClientBackURL': '%s' % urlparse.urljoin(base_url, '/shop/confirmation'),
            # 'OrderResultURL': '%s' % urlparse.urljoin(base_url, allPayController._order_result_url),
            # 'PaymentInfoURL': '%s' % urlparse.urljoin(base_url, allPayController._return_url),
        })

        to_sign = {}
        to_sign.update({
            'MerchantID': acquirer.allpay_merchant_id,
            'MerchantTradeNo': tx_values['reference'],
            'MerchantTradeDate': tx_values.get('date_create', date_create),
            'PaymentType': 'aio',
            'TotalAmount': amount,
            'TradeDesc': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ItemName': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ChoosePayment': 'ALL',
            'IgnorePayment': 'Alipay#Tenpay#TopUpUsed',
            'ReturnURL': '%s' % urlparse.urljoin(base_url, allPayController._return_url),
            'OrderResultURL': '%s' % urlparse.urljoin(base_url, allPayController._order_result_url),
            # 'ClientBackURL': '%s' % urlparse.urljoin(base_url, '/shop/confirmation'),
            # 'OrderResultURL': '%s' % urlparse.urljoin(base_url, allPayController._order_result_url),
            # 'PaymentInfoURL': '%s' % urlparse.urljoin(base_url, allPayController._return_url),
        })

        sorted_to_sign = sorted(to_sign.iteritems())
        sorted_to_sign.insert(0, ('HashKey', acquirer.allpay_hash_key))
        sorted_to_sign.append(('HashIV', acquirer.allpay_hash_iv))

        string_to_sign = util.do_str_replace(urllib.quote(werkzeug.url_encode(sorted_to_sign), '+%').lower())
        allpay_tx_values['CheckMacValue'] = hashlib.md5(string_to_sign).hexdigest().upper()

        return allpay_tx_values
Exemple #6
0
    def allpay_form_generate_values(self, cr, uid, id, partner_values, tx_values, context=None):
        base_url = self.pool['ir.config_parameter'].get_param(cr, SUPERUSER_ID, 'web.base.url')
        acquirer = self.browse(cr, uid, id, context=context)
        date_create = datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')  # time format yyyy/MM/dd HH:mm:ss
        amount = int(round(tx_values['amount']))
        if amount <= 0:
            amount = 1

        allpay_tx_values = dict(tx_values)
        allpay_tx_values.update({
            'MerchantID': acquirer.allpay_merchant_id,
            'MerchantTradeNo': tx_values['reference'],
            'MerchantTradeDate': tx_values.get('date_create', date_create),
            'PaymentType': 'aio',
            'TotalAmount': amount,
            'TradeDesc': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ItemName': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ChoosePayment': 'ALL',
            'IgnorePayment': 'Alipay#Tenpay#TopUpUsed',
            'ReturnURL': '%s' % urlparse.urljoin(base_url, allPayController._return_url),
            # 'PaymentInfoURL': '%s' % urlparse.urljoin(base_url, allPayController._return_url),
            # 'ClientBackURL': '%s' % urlparse.urljoin(base_url, '/shop'),
        })

        to_sign = {}
        to_sign.update({
            'MerchantID': acquirer.allpay_merchant_id,
            'MerchantTradeNo': tx_values['reference'],
            'MerchantTradeDate': tx_values.get('date_create', date_create),
            'PaymentType': 'aio',
            'TotalAmount': amount,
            'TradeDesc': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ItemName': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ChoosePayment': 'ALL',
            'IgnorePayment': 'Alipay#Tenpay#TopUpUsed',
            'ReturnURL': '%s' % urlparse.urljoin(base_url, allPayController._return_url),
            # 'PaymentInfoURL': '%s' % urlparse.urljoin(base_url, allPayController._return_url),
            # 'ClientBackURL': '%s' % urlparse.urljoin(base_url, '/shop'),
        })

        sorted_to_sign = sorted(to_sign.iteritems())
        sorted_to_sign.insert(0, ('HashKey', acquirer.allpay_hash_key))
        sorted_to_sign.append(('HashIV', acquirer.allpay_hash_iv))

        string_to_sign = util.do_str_replace(urllib.quote(werkzeug.url_encode(sorted_to_sign), '+%').lower())
        allpay_tx_values['CheckMacValue'] = hashlib.md5(string_to_sign).hexdigest().upper()

        return partner_values, allpay_tx_values
Exemple #7
0
    def checkout_feedback(cls, post):
        """
        :param post: post is a dictionary which allPay server sent to us.
        :return: a dictionary containing data the allpay server return to us.
        """
        _logger.info('inside the feedback')
        HASH_KEY = acquirer.allpay_hash_key
        HASH_IV = acquirer.allpay_hash_iv
        returns = {}
        ar_parameter = {}
        check_mac_value = ''
        try:
            payment_type_replace_map = {'_CVS': '', '_BARCODE': '', '_Alipay': '', '_Tenpay': '', '_CreditCard': ''}
            period_type_replace_map = {'Y': 'Year', 'M': 'Month', 'D': 'Day'}
            for key, val in post.iteritems():

                print key, val
                if key == 'CheckMacValue':
                    check_mac_value = val
                else:
                    ar_parameter[key.lower()] = val
                    if key == 'PaymentType':
                        for origin, replacement in payment_type_replace_map.iteritems():
                            val = val.replace(origin, replacement)
                    elif key == 'PeriodType':
                        for origin, replacement in period_type_replace_map.iteritems():
                            val = val.replace(origin, replacement)
                    returns[key] = val

            sorted_returns = sorted(ar_parameter.iteritems())
            sz_confirm_mac_value = "HashKey=" + HASH_KEY

            for val in sorted_returns:
                sz_confirm_mac_value = "".join((str(sz_confirm_mac_value), "&", str(val[0]), "=", str(val[1])))

            sz_confirm_mac_value = "".join((sz_confirm_mac_value, "&HashIV=", HASH_IV))
            sz_confirm_mac_value = util.do_str_replace((urllib.quote_plus(sz_confirm_mac_value)).lower(), False)
            sz_confirm_mac_value = hashlib.md5(sz_confirm_mac_value).hexdigest().upper()

            _logger.info('sz-checkMacValue: %s & checkMacValue: %s' % (sz_confirm_mac_value, check_mac_value))

            if sz_confirm_mac_value != check_mac_value:
                return False
            else:
                return returns
        except:
            _logger.info('Exception!')
Exemple #8
0
    def allpay_form_generate_values(self, cr, uid, id, partner_values, tx_values, context=None):
        base_url = self.pool['ir.config_parameter'].get_param(cr, SUPERUSER_ID, 'web.base.url')
        acquirer = self.browse(cr, uid, id, context=context)
        date_create =  fields.datetime.now()

        allpay_tx_values = dict(tx_values)
        allpay_tx_values.update({
            'MerchantID': acquirer.allpay_merchant_id,
            'MerchantTradeNo': tx_values['reference'],
            'MerchantTradeDate': tx_values.get('date_create', date_create),
            'PaymentType': 'aio',
            'TotalAmount': tx_values['amount'],
            'TradeDesc': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ItemName': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ChoosePayment': 'ALL',
            'ReturnURL': '%s' % urlparse.urljoin(base_url, allPayController._return_url),
        })

        to_sign = {}
        to_sign.update({
            'MerchantID': acquirer.allpay_merchant_id,
            'MerchantTradeNo': tx_values['reference'],
            'MerchantTradeDate': tx_values.get('date_create', date_create),
            'PaymentType': 'aio',
            'TotalAmount': tx_values['amount'],
            'TradeDesc': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ItemName': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ChoosePayment': 'ALL',
            'ReturnURL': '%s' % urlparse.urljoin(base_url, allPayController._return_url),
        })

        sorted_to_sign = sorted(to_sign.interitems())
        sorted_to_sign.insert(0,('HashKey',acquirer.allpay_hash_key))
        sorted_to_sign.append(('HashIV',acquirer.allpay_hash_iv))

        sorted_to_sign = util.do_str_replace(urllib.quote(werkzeug.url_encode(sorted_to_sign), '+%').lower())

        check_mac_value = hashlib.md5(sorted_to_sign).hexdigest().upper()
        allpay_tx_values['CheckMacValue'] = check_mac_value

        return partner_values, allpay_tx_values
Exemple #9
0
    def allpay_form_generate_values(self, cr, uid, id, partner_values, tx_values, context=None):
        base_url = self.pool['ir.config_parameter'].get_param(cr, SUPERUSER_ID, 'web.base.url')
        acquirer = self.browse(cr, uid, id, context=context)

        allpay_tx_values = dict(tx_values)
        allpay_tx_values.update({
            'MerchantID': acquirer.allpay_merchant_id,
            'MerchantTradeNo': tx_values['reference'],
            'MerchantTradeDate': tx_values['date_create'],
            'PaymentType': 'aio',
            'TotalAmount': tx_values['amount'],
            'TradeDesc': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ItemName': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ChoosePayment': 'ALL',
            'ReturnURL': '%s' % urlparse.urljoin(base_url, allPayController._return_url),
        })

        to_sign = {}
        to_sign.update({
            'MerchantID': acquirer.allpay_merchant_id,
            'MerchantTradeNo': tx_values['reference'],
            'MerchantTradeDate': tx_values['date_create'],
            'PaymentType': 'aio',
            'TotalAmount': tx_values['amount'],
            'TradeDesc': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ItemName': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
            'ChoosePayment': 'ALL',
            'ReturnURL': '%s' % urlparse.urljoin(base_url, allPayController._return_url),
        })

        sorted_to_sign = sorted(to_sign.interitems())
        sorted_to_sign.insert(0,('HashKey',acquirer.allpay_hash_key))
        sorted_to_sign.append(('HashIV',acquirer.allpay_hash_iv))

        sorted_to_sign = util.do_str_replace(urllib.quote(urllib.urlencode(sorted_to_sign), '+%').lower())
        _logger.info(urllib.quote(urllib.urlencode(sorted_dict), '+').lower())

        check_mac_value = hashlib.md5(sorted_to_sign).hexdigest().upper()
        allpay_tx_values['CheckMacValue'] = check_mac_value

        return partner_values, allpay_tx_values