【问题标题】:EBS SecureHash validation failed Error with django integrationEBS SecureHash 验证失败 django 集成错误
【发布时间】:2013-08-06 14:03:33
【问题描述】:

我有一个 django 应用程序,我正在尝试将它与 EBS 支付网关集成。所以下面是我的代码

settings.py

INSTALLED_APPS = (
    .............  
    'ebspayment',
)
EBS_ACCOUNT_ID = '5880'   #Enter Your Account Id here.This is a test id. 
EBS_SECRET_KEY = 'ebskey' #Enter Your Secret Key here.This is a test key.
EBS_ACTION_URL = 'https://secure.ebs.in/pg/ma/sale/pay' #Do not edit this URL.
EBS_RETURN_URL = 'http://127.0.0.1:8000/ebs/ebspayment/response' #Enter your domain URL instead of 127.0.0.1:8000. 

urls.py

from django.conf.urls import url, patterns
from ebspayment.views import ebspayment, ebsresponse


urlpatterns = patterns('',
    url(r'^ebspayment/(?P<app_id>\d+)/$', ebspayment, name='ebsindex'), 
    url(r'^ebspayment/response', ebsresponse, name='ebsresponse'), 
)

views.py

def ebspayment(request, app_id):
    app = get_object_or_404(App, pk=campaign_id)
    form = PaymentForm()
    # string = settings.EBS_SECRET_KEY+"|"+form.cleaned_data['account_id']+"|"
    #               +form.cleaned_data['amount']+"|"+form.cleaned_data['reference_no'] +"|"
    #               +form.cleaned_data['return_url']+"|"+form.cleaned_data['mode']
    string = settings.EBS_SECRET_KEY+"|"+'5880'+"|"+'1.00'+"|"+'223'+"|"+settings.EBS_RETURN_URL+"|"+"TEST"
    secure_hash = hashlib.md5(string).hexdigest()                 
    return render_to_response('ebspayment/payment_form.html', {'form': form,
                                                      'app_obj' : app,
                                                      'ebs_url': settings.EBS_ACTION_URL,
                                                      'secure_hash' : secure_hash},
                                                      context_instance=RequestContext(request))

payment_form.html

{% block content %}
<h1>Enter Card Details</h1> 
<form class="form-horizontal" action="{{ ebs_url }}" method="POST" name="frmTransaction" id="frmTransaction" onSubmit="return validate()">
        {{form.as_p}}
         <input type='hidden' name='secure_hash' value='{{secure_hash}}'>
         <button type="submit" value="submit"  class="btn btn-primary" >Submit</button>
    </form>
{% endblock %} 

forms.py

#Transaction Modes
MODES = (
     ('TEST', 'TEST'),
     ('LIVE', 'LIVE'),
)

#EBS Payment Form
class PaymentForm(forms.Form):

    account_id = forms.IntegerField(initial=settings.EBS_ACCOUNT_ID, required=True)
    reference_no = forms.IntegerField(required=True, initial="223")
    amount = forms.DecimalField(max_digits=10, decimal_places=2, required=True, initial='1.00')
    name = forms.CharField(max_length=255, required=True, initial="Sheeba") 
    email = forms.EmailField(max_length=70, required=True, initial="xyz@ebs.in")
    address = forms.CharField(required=True, initial="Kodambakkam")
    city = forms.CharField(max_length=60, required=True, initial="Chennai")
    state = forms.CharField(max_length=60, required=True, initial="Tamil Nadu")
    country = CountryField()
    postal_code = forms.IntegerField(required=True, initial="600098")
    phone = forms.IntegerField(required=True, initial="044123456")   
    return_url = forms.URLField(label="Return URL", required=True, initial=settings.EBS_RETURN_URL+'?DR={DR}')
    description = forms.CharField(required=True, initial="Testing EBS-Django")
    mode = forms.ChoiceField(choices=MODES)

因此,从上面的代码中,我将显示 Payment form 并将所有输入的详细信息(包括 secure_hash 变量数据)提交到 URL http://127.0.0.1:8000/ebs/ebspayment/response

但是即使在提交哈希字符串之后,我在重定向到这个 url 后得到Error! SecureHash validation failed,所以我在上面的代码中做错了什么

  1. 实际上有没有满足EBS支付网关与django集成的模块/代码/包?
  2. 为了集成,我们肯定需要EBS merchant account 吗?因为对于 authorize.net 等其他支付网关,需要一个可用于集成目的的沙盒帐户
  3. 在上面的代码中,我对创建哈希的字符串值进行了硬编码,但实际上它需要在验证后来自表单,但在这种情况下不知道如何验证表单,因为如所示我们正在发布到另一个 url像http://127.0.0.1:8000/ebs/ebspayment/response 一样,因此我们无法通过视图验证表单吗?(我们可以通过 javascript 进行验证:))
  4. 所以最后谁能指出我正确的方向,以便将 django 应用程序与 EBS 支付网关集成
  5. 还有谁能告诉我将 django 应用程序与 EBS 网关集成所需的要求吗?
  6. 请告诉我如何处理上述代码以避免secure validation error

【问题讨论】:

  • 我可以知道您是如何在您的 django 应用程序中安装 ebspayment 应用程序的吗?对我有很大帮助

标签: python django forms hash ebs-payment


【解决方案1】:

如果您无法处理哈希验证,则可以禁用商家帐户的安全验证检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2021-11-12
    • 2016-02-02
    • 2019-06-29
    • 2012-09-08
    • 2015-06-02
    相关资源
    最近更新 更多