【问题标题】:Paytm - Checksum provided is invalidPaytm - 提供的校验和无效
【发布时间】:2020-11-26 17:32:00
【问题描述】:

在为 paytm 业务创建交易令牌时,我收到以下错误作为 paytm 的响应。

CURL 请求(根据文档,https://developer.paytm.com/docs/initiate-transaction-api/?ref=payments

curl -X POST 'https://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid=hkmbcA45014017456710&orderId=ORDERID_2' \
--header 'Content-Type: application/json' \
--data '{"body":{"requestType":"Payment","mid":"hkmbcA45014017456710","websiteName":"WEBSTAGING","orderId":"ORDERID_2","txnAmount":{"value":"1.00","currency":"INR"},"userInfo":{"custId":"CUST_001"},"callbackUrl":"https://merchant.com/callback"},"head":{"signature":"E3g+4XifD5/XwcD/tJ9ePYJTlJGZL7BneqY4Vf32faqEJ8zkSvgM+pMWfCAfmb0VwQaT3M4p6e+grMXjeqsRScF7en86MjLY1ieA9WRf4w="}}'

回应

{"head":{"requestId":null,"responseTimestamp":"1596714537669","version":"v1"},"body":{"extraParamsMap":null,"resultInfo":{"resultStatus":"F","resultCode":"2005","resultMsg":"Checksum provided is invalid"}}}

我在 ruby 中使用 https://github.com/paytm/Paytm_Ruby_Checksum/blob/master/PaytmChecksum.rb

生成了校验和

也欢迎回答和小建议!!!

【问题讨论】:

  • 嗨@Bharathiraja,你有什么解决方法吗?我也面临同样的问题。你能帮帮我吗?
  • 我在生产 api 密钥方面面临同样的问题,paytm 支持没有回复?

标签: payment-gateway paytm


【解决方案1】:
require './lib/modules/PaytmChecksum.rb'

def paytm_txn_gen
body = '{"requestType":"Payment","mid":"YOUR_MID_HERE","websiteName":"WEBSTAGING","orderId":"ORDERID_98765","txnAmount":{"value":"1.00","货币":"INR"},"userInfo":{"custId":"CUST_001"},"callbackUrl":"https://merchant.com/callback"}'

paytmChecksum = PaytmChecksum.new.generateSignature(body, "YOUR_MERCHANT_KEY")
verifyChecksum = PaytmChecksum.new.verifySignature(body, "YOUR_MERCHANT_KEY", paytmChecksum)

puts "generateSignature Returns: %s\n" %[paytmChecksum]
puts "verifySignature Returns: %s\n" %[verifyChecksum]

data = '{"body":{"requestType":"Payment","mid":"YOUR_MID_HERE","websiteName":"WEBSTAGING","orderId":"ORDERID_98765","txnAmount":{"value":"1.00","currency":"INR"},"userInfo":{"custId":"CUST_001"},"callbackUrl":"https://merchant.com/callback"},"head":{"signature":"'+paytmChecksum+'"}}'

puts data

_url = "https://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid=YOUR_MID_HERE&orderId=ORDERID_98765";

response = RestClient::Request.new({
method: :post,
url: "#{_url}",
payload: data,
headers: {content_type: "application/json"}
 }).execute do |response, request, result|
  puts "***********************"
  puts JSON.parse(response).inspect
end

结束

【讨论】:

  • 虽然您的回答可能会解决问题,但 including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。您可以编辑您的答案以添加解释并指出适用的限制和假设。 - From Review
【解决方案2】:

您似乎正在使用错误的参数创建校验和,请查找以下步骤以获得更多说明。

  1. 正文请求应该是

body='{“requestType”:“Payment”,“mid”:“YOUR_MID_HERE”,“websiteName”:“WEBSTAGING”,“orderId”:“ORDERID_98765111”,“txnAmount”:{“value”:“1.00 ”,“货币”:“INR”},“userInfo”:{“custId”:“CUST_001”},“callbackUrl”:“https://merchant.com/callback”}'

  1. paytmChecksum = PaytmChecksum.new.generateSignature(body, “YOUR_Key_HERE”)

  2. 您的最终 curl 请求应该是 curl -X POST ‘https://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid=hkmbcA45014017456710&orderId=ORDERID_2’
    --header ‘Content-Type: application/json’
    --data '{“body”:{“requestType”:“Payment”,“mid”:“INTEGR77698636129383”,“websiteName”:“WEBSTAGING”,“orderId”:“ORDERID_98765111”,“txnAmount”:{“value” :“1.00”,“货币”:“INR”},“userInfo”:{“custId”:“CUST_001”},“callbackUrl”:“https://merchant.com/callback”},“head”:{ “签名”:“'+paytmChecksum+'“}}'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 2016-08-06
    相关资源
    最近更新 更多