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!')
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
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
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
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
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!')
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
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