首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2checkout IPN示例Python验证响应

2checkout IPN示例Python验证响应
EN

Stack Overflow用户
提问于 2021-06-29 16:27:33
回答 1查看 34关注 0票数 0

2checkout提供了IPN响应验证的示例代码,除了Python之外,如果有人正在寻找Python (特别是Django )示例代码,Iv'e提供了下面的答案,干杯!

EN

回答 1

Stack Overflow用户

发布于 2021-06-29 16:27:33

代码语言:javascript
复制
import hmac
import hashlib
import datetime

from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt


def hmac_md5(key, value):
    message = value.encode('utf-8')
    return hmac.new(key.encode('utf-8'), message, digestmod=hashlib.md5).hexdigest()

@csrf_exempt
def subscription_listener(request):
    if request.method == "GET":
        return HttpResponse("Hello")

    if request.method == "POST":
        pass_str = "SECRET_KEY_HERE"
        DATE = datetime.datetime.now().strftime("%Y%m%d%H%M%S")

        original_dict = dict(request.POST)
        base_string_for_return_hash = str(len(original_dict['IPN_PID[]'][0])) + str(
            original_dict['IPN_PID[]'][0]) + str(
            len(original_dict['IPN_PNAME[]'][0])) + str(original_dict['IPN_PNAME[]'][0]) + str(
            len(original_dict['IPN_DATE'][0])) + str(original_dict['IPN_DATE'][0]) + str(len(DATE)) + str(DATE)

        hashed = hmac_md5(pass_str, base_string_for_return_hash)
        
        response = "<EPAYMENT>{}|{}</EPAYMENT>".format(DATE, hashed)

        return HttpResponse(response)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68175138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档