def get(self, request, *args, **kwargs): method = self.load_method(kwargs['method']) settings = method.behavior().config order = Order.objects.get(pk=request.session['order_id']) detalisation = order.get_detalisation() # for row in detalisation['rows']: # ulink_order.items.append(UlinkOrderItem(smart_str(row['title']), '', str(row['price']))) order_total = int(detalisation['full_total'] * 100) order_id = order.id # key = """ #""" # oid = 'EB00310653' oid = settings['id'] ecuno = str(order_id + 100000) ver = '004' eamount = str(order_total) cur = 'EUR' datetime = time.strftime("%Y%m%d%H%M%S") feedbackurl = 'http://' + request.META['HTTP_HOST'] + reverse('kardikeskus_payment_callback', kwargs={'method': method.slug}) delivery = 'S' # padding feedbackurl = feedbackurl.ljust(128) ecuno = ecuno.zfill(12) eamount = eamount.zfill(12) data = ver + oid + ecuno + eamount + cur + datetime + feedbackurl + delivery signed = ssl_sign(data, load_pem_private_key(settings['pkey'])) mac = signed.encode('hex') data = { 'lang': 'et', # get_language(), 'action': 'gaf', 'ver': ver, 'id': oid, 'ecuno': ecuno, 'eamount': eamount, 'cur': 'EUR', 'datetime': datetime, 'charEncoding': 'UTF-8', 'feedBackUrl': feedbackurl.strip(), 'delivery': delivery, 'mac': mac } log_payment(request, 'kardikeskus', 'pay_start', data) return render(request, 'payment/post_redirect.html', {'url': settings['url'], 'fields': data.items()})
def post(self, request, *args, **kwargs): log_payment(request, 'dibs', 'pay_cancel') # order_id = request.POST['orderid'] # order = Order.objects.get(order_id) # order.mark_paid() return HttpResponseRedirect(reverse('orders_checkout'))
def post(self, request, *args, **kwargs): log_payment(request, "paytrail", "pay_cancel") # order_id = request.GET['orderid'] # order = Order.objects.get(order_id) # order.mark_paid() return HttpResponseRedirect(reverse("orders_checkout"))
def post(self, request, *args, **kwargs): log_payment(request, "paytrail", "pay_callback") # skip validation order_id = request.GET["orderid"] order = Order.objects.get(order_id) order.mark_paid() return HttpResponse("ok")
def post(self, request, *args, **kwargs): log_payment(request, 'dibs', 'pay_callback') # skip validation order_id = request.POST['orderid'] order = Order.objects.get(order_id) order.mark_paid() return HttpResponse('ok')
def get(self, request, *args, **kwargs): method = self.load_method(kwargs['method']) settings = method.behavior().config order = Order.objects.get(pk=request.session['order_id']) detalisation = order.get_detalisation() order_total = detalisation['full_total'] order_id = order.id oid = settings['id'] ecuno = str(order_id + 100000) eamount = str(order_total) feedbackurl = 'http://' + request.META['HTTP_HOST'] + reverse('pangalink_payment_callback', kwargs={'method': method.slug}) cancelurl = 'http://' + request.META['HTTP_HOST'] + reverse('pangalink_payment_callback', kwargs={'method': method.slug}) # padding feedbackurl = feedbackurl.ljust(128) ecuno = ecuno.zfill(12) eamount = eamount.zfill(12) data = { 'VK_SERVICE': '1001', 'VK_VERSION': '008', 'VK_SND_ID': oid, 'VK_STAMP': ecuno, 'VK_AMOUNT': eamount, 'VK_CURR': 'EUR', 'VK_ACC': settings['account'], 'VK_NAME': settings['owner'], 'VK_REF': '', 'VK_MSG': 'Order id ' + str(order_id), 'VK_RETURN': feedbackurl, 'VK_ENCODING': 'utf-8', } mac_data = '' for field in ['VK_SERVICE', 'VK_VERSION', 'VK_SND_ID', 'VK_STAMP', 'VK_AMOUNT', 'VK_CURR', 'VK_ACC', 'VK_NAME', 'VK_REF', 'VK_MSG']: v = data[field] vlen = len(v) mac_data += str(vlen).zfill(3) + v signed = ssl_sign(mac_data.encode('utf-8'), load_pem_private_key(settings['pkey'])) data['VK_MAC'] = re.sub('\s+', '', signed.encode('base64')) log_payment(request, 'pangalink', 'pay_start', data) return render(request, 'payment/post_redirect.html', {'url': settings['url'], 'fields': data.items()})
def post(self, request, *args, **kwargs): log_payment(request, 'dibs', 'pay_accept') # skip validation order_id = request.POST['orderid'] print order_id order = Order.objects.get(pk=order_id) order.mark_paid() return HttpResponseRedirect(reverse('cratis.app.ecommerce.orders.views.confirm'))
def post(self, request, *args, **kwargs): method = self.load_method(kwargs['method']) log_payment(request, 'voucher_' + kwargs['method'], 'pay_callback') order = Order.objects.get(pk=request.session['order_id']) order.comment = 'Voucher: %s phone: %s email: %s' % (request.POST['voucher_code'], request.POST['phone'], request.POST['email']) order.mark_confirmed() return HttpResponseRedirect(reverse('cratis.app.ecommerce.orders.views.confirm'))
def validate_payment(request): settings = config_get_group('PAYMENT_DIBS') transaction_id = request.POST['transact'] amount = request.POST['amount'] currency = request.POST['currency'] hash_data = '&transact=' + smart_str(transaction_id) + '&amount=' + smart_str(amount) + '¤cy=' + smart_str(currency) md5_key1 = settings['MD51'] md5_key2 = settings['MD52'] calculated_authkey = md5(md5_key2 + md5(md5_key1 + hash_data)) if calculated_authkey != request.POST['authkey']: log_payment(request, 'dibs', 'pay_accept_error', 'Siganture not valid. Data: ' + hash_data + ' Key: ' + calculated_authkey) return False return True
def get(self, request, *args, **kwargs): log_payment(request, "paytrail", "pay_accept") method = self.load_method(kwargs["method"]) settings = method.behavior().config # skip validation order_id = request.GET["ORDER_NUMBER"] timestamp = request.GET["TIMESTAMP"] paid = request.GET["PAID"] method = request.GET["METHOD"] authcode = request.GET["RETURN_AUTHCODE"] mac_data = "|".join((order_id, timestamp, paid, method, settings["secret"])) if md5(mac_data).upper() != authcode: return HttpResponse("Bad signature. Can not accpet payment.", None, 403) order = Order.objects.get(pk=order_id) order.mark_paid() return HttpResponseRedirect(reverse("cratis.app.ecommerce.orders.views.confirm"))
def post(self, request, *args, **kwargs): method = self.load_method(kwargs['method']) settings = method.behavior().config log_payment(request, 'pangalink_' + kwargs['method'], 'pay_callback') if request.POST['VK_SERVICE'] != '1101': log_payment(request, 'pangalink', 'pay_cancel') return self.bad_payment(request) mac_data = '' for field in ['VK_SERVICE', 'VK_VERSION', 'VK_SND_ID', 'VK_REC_ID', 'VK_STAMP', 'VK_T_NO', 'VK_AMOUNT', 'VK_CURR', 'VK_REC_ACC', 'VK_REC_NAME', 'VK_SND_ACC', 'VK_SND_NAME', 'VK_REF', 'VK_MSG', 'VK_T_DATE']: v = request.POST[field] vlen = len(v) mac_data += str(vlen).zfill(3) + v public_key = load_pem_cert_public_key(settings['pubkey']) if ssl_verify(mac_data.encode('utf-8'), request.POST['VK_MAC'].decode('base64'), public_key): ecuno = request.POST['VK_STAMP'] order_id = int(ecuno) - 100000 log_payment(request, 'pangalink', 'pay_success') order = Order.objects.get(pk=order_id) order.mark_paid() return HttpResponseRedirect(reverse('cratis.app.ecommerce.orders.views.confirm')) else: print request.POST['VK_MAC']
def post(self, request, *args, **kwargs): method = self.load_method(kwargs['method']) settings = method.behavior().config log_payment(request, 'kardikeskus_' + kwargs['method'], 'pay_callback') oid = settings['id'] ecuno = request.POST['ecuno'] receipt_no = request.POST['receipt_no'] eamount = request.POST['eamount'] datetime = request.POST['datetime'] mac = request.POST['mac'].decode('hex') respcode = request.POST['respcode'] msgdata = request.POST['msgdata'] actiontext = request.POST['actiontext'] id = request.POST['id'] ver = request.POST['ver'] cur = request.POST['cur'] #ver = '004' #eamount = str(order_total) #cur = 'EUR' #datetime = time.strftime("%Y%m%d%H%M%S") #feedbackurl = 'http://' + request.META['HTTP_HOST'] + reverse('kardikeskus_payment_callback', # kwargs={'method': method.slug}) #delivery = 'S' # ## padding #feedbackurl = feedbackurl.ljust(128) #ecuno = ecuno.zfill(12) #eamount = eamount.zfill(12) # # # # data = '' data += ver.zfill(3) data += id.ljust(10, ' ') data += ecuno.zfill(12) data += receipt_no.zfill(6) data += eamount.zfill(12) data += cur.rjust(3, ' ') data += respcode data += datetime data += unicode(msgdata).ljust(40, ' ') data += unicode(actiontext).ljust(40, ' ') #sprintf("%03s", $ver) . sprintf("%-10s", "$id") . #sprintf("%012s", $ecuno) . sprintf("%06s", $receipt_no) . sprintf("%012s", #$eamount) . sprintf("%3s", $cur) . $respcode . $datetime . mb_sprintf("%-40s", #$msgdata) . mb_sprintf("%-40s", $actiontext); # #print data #print mac #data = ver+id+ecuno+receipt_no+eamount+cur+respcode+datetime+msgdata+actiontext order_id = int(ecuno) - 100000 #if ssl_verify(data, mac, load_pem_public_key(settings['pubkey'])): # # return HttpResponse('okkkk') #else: # return HttpResponse('not ok') log_payment(request, 'kardikeskus', 'pay_callback') # skip validation #order_id = request.POST['orderid'] order = Order.objects.get(pk=order_id) order.mark_paid() return HttpResponseRedirect(reverse('cratis.app.ecommerce.orders.views.confirm'))
def get(self, request, *args, **kwargs): method = self.load_method(kwargs["method"]) settings = method.behavior().config order = Order.objects.get(pk=request.session["order_id"]) detalisation = order.get_detalisation() order_total = detalisation["full_total"] data = OrderedDict() data["MERCHANT_ID"] = settings["id"] data["AMOUNT"] = str(order_total) data["ORDER_NUMBER"] = str(order.id) data["REFERENCE_NUMBER"] = "" data["ORDER_DESCRIPTION"] = "" data["CURRENCY"] = "EUR" data["RETURN_ADDRESS"] = ( "http://" + request.META["HTTP_HOST"] + reverse("paytrail_payment_accept", kwargs={"method": method.slug}) ) data["CANCEL_ADDRESS"] = ( "http://" + request.META["HTTP_HOST"] + reverse("paytrail_payment_cancel", kwargs={"method": method.slug}) ) data["PENDING_ADDRESS"] = "" data["NOTIFY_ADDRESS"] = ( "http://" + request.META["HTTP_HOST"] + reverse("paytrail_payment_callback", kwargs={"method": method.slug}) ) data["TYPE"] = "S1" data["CULTURE"] = "en_US" data["PRESELECTED_METHOD"] = "" data["MODE"] = "1" data["VISIBLE_METHODS"] = "" data["GROUP"] = "" # 6pKF4jkv97zmqBJ3ZL8gUw5DfT2NMQ|13466|99.90|123456||Testitilaus|EUR|http://www.esimerkki.fi/success|http://www.esimerkki.fi/cancel||http://www.esimerkki.fi/notify|S1|fi_FI|1|| # 6pKF4jkv97zmqBJ3ZL8gUw5DfT2NMQ|13466|99.90|123456||Testitilaus|EUR|http://www.esimerkki.fi/success|http://www.esimerkki.fi/cancel||http://www.esimerkki.fi/notify|S1|fi_FI||1|| # # data['MERCHANT_ID'] = settings['id'] # data['AMOUNT'] = '99.90' # data['ORDER_NUMBER'] = '123456' # data['REFERENCE_NUMBER'] = '' # data['ORDER_DESCRIPTION'] = 'Testitilaus' # data['CURRENCY'] = 'EUR' # data['RETURN_ADDRESS'] = 'http://www.esimerkki.fi/success' # data['CANCEL_ADDRESS'] = 'http://www.esimerkki.fi/cancel' # data['PENDING_ADDRESS'] = '' # data['NOTIFY_ADDRESS'] = 'http://www.esimerkki.fi/notify' # # data['TYPE'] = 'S1' # data['CULTURE'] = 'fi_FI' # data['PRESELECTED_METHOD'] = '' # data['MODE'] = '1' # data['VISIBLE_METHODS'] = '' # data['GROUP'] = '' mac_data = settings["secret"] + "|" + "|".join(data.values()) mac = md5(mac_data).upper() data["AUTHCODE"] = mac log_payment(request, "paytrail", "pay_start", data) url = "https://payment.verkkomaksut.fi/" return render(request, "payment/post_redirect.html", {"url": url, "fields": data.items()})
def get(self, request, *args, **kwargs): method = self.load_method(kwargs['method']) settings = method.behavior().config order = Order.objects.get(pk=request.session['order_id']) # order.mark_confirmed() detalisation = order.get_detalisation() # for row in detalisation['rows']: # ulink_order.items.append(UlinkOrderItem(smart_str(row['title']), '', str(row['price']))) # Preparing the data that we are sending to DIBS # Order total to be sent to DIBS must be an int specified in cents or # equivalent. order_total = int(detalisation['full_total'] * 100) order_id = order.id # Create md5 hash to make payment secure: md5_key = md5(settings['MD52'] + md5(settings['MD51'] + 'merchant=%s&orderid=%s¤cy=%s&amount=%s' % (settings['MERCHANT'], order_id, settings['CURRENCY'], order_total))) # Create the cancel and accept url, based on the request to get the host # and reverse to get the url. # cancelurl = 'http://' + request.META['HTTP_HOST'] + reverse('satchmo_checkout-step1') # accepturl = 'http://' + request.META['HTTP_HOST'] + reverse('DIBS_satchmo_checkout-success') # callbackurl = 'http://' + request.META['HTTP_HOST'] + reverse('DIBS_satchmo_checkout-step4') + '?order_id=' + str(order.id) # cancelurl = 'http://' + settings['CALLBACK_DOMAIN'] + reverse('dibs_payment_cancel', kwargs={'method': method.slug}) accepturl = 'http://' + settings['CALLBACK_DOMAIN'] + reverse('dibs_payment_accept', kwargs={'method': method.slug}) callbackurl = 'http://' + settings['CALLBACK_DOMAIN'] + reverse('dibs_payment_callback', kwargs={'method': method.slug}) data = [ ('merchant', settings['MERCHANT']), ('amount', order_total), ('currency', settings['CURRENCY']), ('orderid', order_id), ('accepturl', accepturl), ('cancelurl', cancelurl), ('callbackurl', callbackurl), ('ip', get_client_ip(request)), #('uniqueoid', 'yes'), ('lang', get_language()), ('md5key', md5_key), ('calcfee', 'yes'), # Currently not implemented in the flex window. # ('delivery1', order.ship_addressee), # ('delivery2', order.ship_street1), # ('delivery3', order.ship_postal_code + ' ' + order.ship_city) ('capturenow', 'yes'), ] log_payment(request, 'dibs', 'pay_start', data) # if settings['CAPTURE']: # data.append(('capturenow', 'yes')) if not settings['LIVE']: data.append(('test', 'yes')) send_data = urllib.urlencode(data) return HttpResponseRedirect('https://payment.architrade.com/paymentweb/start.action?' + send_data)
def post(self, request, *args, **kwargs): log_payment(request, 'pangalink', 'pay_cancel') return HttpResponseRedirect(reverse('orders_checkout'))