Как обрабатывать данные обратного вызова в колбе - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь произвести оплату на моем сайте через paytm .Но я не знаю, как справиться с его обратным URL в колбеЗаранее спасибо.

Я пробовал Google много раз.

Вот мой код: -

@app.route('/shop/',methods=['POST'])
def shop():
    name=request.form['name']
    email=request.form['email']
    paytmno=request.form['paytmno']
    amount=request.form['amount']
    # password1=request.form['password1']
    # password2=request.form['password2']
    print(name,email,paytmno,amount)
    deepak_dict = {

                'MID': MERCHANT_ID,
                'ORDER_ID': str(12345),
                'TXN_AMOUNT': str(amount),
                'CUST_ID': email,
                'INDUSTRY_TYPE_ID': 'Retail',
                'WEBSITE': 'WEBSTAGING',
                'CHANNEL_ID': 'WEB',
                'CALLBACK_URL':'http://localhost:5000/shop/handlerequest/',

        }
    deepak_dict['CHECKSUMHASH'] = Checksum.generate_checksum(deepak_dict, MERCHANT_KEY)
    return render_template('payment/paytm.html', deepak_dict=deepak_dict)

@app.route('/shop/handlerequest/',methods=['POST'])
def shop_handlerequest():
    # what to do
    response_dict={}
    return render_template('payment/paytm_response.html',response=response_dict)

Я хочу прочитать его данные для обратного вызова.

1 Ответ

0 голосов

На основании того, что я узнал от разработчика Paytm Документы : -

import Checksum
import requests

MERCHANT_KEY = 'YourMerchantKeyHere';

@app.route('/shop/handlerequest/',methods=['POST'])
def shop_handlerequest():      
    respons_dict = {}
    for i in request.form.keys():
         respons_dict[i]=request.form[i] #Getting all the attributes from form in a dictionary to use it later.
         if i=='CHECKSUMHASH':
              checksum = request.form[i]  #Getting Checksum to verify its authenticity

    if 'GATEWAYNAME' in respons_dict:
        if respons_dict['GATEWAYNAME'] == 'WALLET':
            respons_dict['BANKNAME'] = 'null';  #If Gateway is user's paytm wallet setting bankname to null

    verify = Checksum.verify_checksum(respons_dict, MERCHANT_KEY, checksum) # returns true or false based on calculations 
    print(verify) 

    if verify:
        if respons_dict['RESPCODE'] == '01' # 01 Code means successful transaction
            print("order successful")
        else:
            print("order unsuccessful because"+respons_dict['RESPMSG'])
    else: 
        print("order unsuccessful because"+respons_dict['RESPMSG'])

Вы можете использовать проверочные учетные данные от Paytm для проверки вашей интеграции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...