首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Paytm Paytm支付网关Python后台UPI集成

Paytm Paytm支付网关Python后台UPI集成
EN

Stack Overflow用户
提问于 2020-05-27 15:07:22
回答 1查看 893关注 0票数 0

我正在尝试将Paytm支付网关集成到我的网站上,仅用于UPI交易,所以在阅读文档后,我能够集成Initate payment应用程序接口,但当我尝试集成validate VPA应用编程接口时,它总是显示VPA无效,我正在添加代码以供参考,我正在使用正确的MID替换my_mid,使用正确的密钥替换my_key,并使用有效的VPA替换7777777777@paytm

代码语言:javascript
复制
import requests
import json
paytmParams = dict()
paytmParams["body"] = {
    "vpa" : "7777777777@paytm"
}
paytmParams["head"] = {
    "txnToken" : "4f7197de6840450e9162ddb5c067eb221590561957267"
}
post_data = json.dumps(paytmParams)
url = "https://securegw-stage.paytm.in/theia/api/v1/vpa/validate?mid=my_mid&orderId=123abcd"
response = requests.post(url, data = post_data, headers = {"Content-type": "application/json"}).json()
print(response)

执行此操作总是返回,

代码语言:javascript
复制
{
  "head": {
    "requestId": None,
    "responseTimestamp": "1590561981014",
    "version": "v1"
  },
  "body": {
    "extraParamsMap": None,
    "resultInfo": {
      "resultStatus": "F",
      "resultCode": "501",
      "resultMsg": "Sorry! We could not verify the VPA."
    },
    "vpa": "7777777777@paytm",
    "valid": False
  }
}

txnToken是从下面的代码获得的,而与VPA无关,

代码语言:javascript
复制
import requests
import json
import hashlib
import base64
import string
import random
from Crypto.Cipher import AES

IV = "@@@@&&&&####$$$$"
BLOCK_SIZE = 16

def __pad__(s): return s + (BLOCK_SIZE - len(s) %
                            BLOCK_SIZE) * chr(BLOCK_SIZE - len(s) % BLOCK_SIZE)

def __encode__(to_encode, iv, key):
    to_encode = __pad__(to_encode)
    c = AES.new(key, AES.MODE_CBC, iv)
    to_encode = c.encrypt(to_encode)
    to_encode = base64.b64encode(to_encode)
    return to_encode.decode("UTF-8")

def __id_generator__(size=6, chars=string.ascii_uppercase + string.digits + string.ascii_lowercase):
    return ''.join(random.choice(chars) for _ in range(size))

def generate_checksum_by_str(param_str, merchant_key, salt=None):
    params_string = param_str
    salt = salt if salt else __id_generator__(4)
    final_string = '%s|%s' % (params_string, salt)
    hasher = hashlib.sha256(final_string.encode())
    hash_string = hasher.hexdigest()
    hash_string += salt
    return __encode__(hash_string, IV, merchant_key)

paytmParams = dict()
paytmParams["body"] = {
    "requestType": "Payment",
    "mid": "my_mid",
    "websiteName": "WEBSTAGING",
    "orderId": "123abcd",
    "txnAmount": {
        "value": "500",
        "currency": "INR",
    },
    "userInfo": {
        "custId": "1234567",
    },
    "enablePaymentMode":  [{"mode": "UPI", "channels": ["UPIPUSH"]}]
}
checksum = generate_checksum_by_str(
    json.dumps(paytmParams["body"]), "my_key")
paytmParams["head"] = {
    "signature" : checksum
}
post_data = json.dumps(paytmParams)
url = "https://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid=my_mid&orderId=123abcd"
response = requests.post(url, data=post_data, headers={
                         "Content-type": "application/json"}).json()
print(response)

如果需要更多的细节,请让我知道,因为我已经做了各种研究,但没有得到任何运气。

EN

回答 1

Stack Overflow用户

发布于 2020-06-30 19:19:26

您的代码似乎没有任何问题。也许你可以再试一次。如果您仍然面临这个问题,请联系Paytm开发人员的支持。

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

https://stackoverflow.com/questions/62037305

复制
相关文章

相似问题

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