Ошибка 199 при тестировании песочницы JazzCash во время интеграции с Django
Я пытаюсь интегрировать платежный шлюз JazzCash в свой проект Django, используя метод HTTP POST Redirect, но сталкиваюсь с ошибкой 199 на их портале. Я следовал настройкам в их документации и тестировал, используя их среду песочницы.
Код: Ниже приведен фрагмент моего кода интеграции, за которым следует JSON ответа на ошибку.
from django.views.decorators.csrf import csrf_exempt
from django.shortcuts import render
from datetime import datetime, timedelta
import hashlib
import hmac
JAZZCASH_MERCHANT_ID = ""
JAZZCASH_PASSWORD = ""
JAZZCASH_RETURN_URL = ""
JAZZCASH_INTEGRITY_SALT = ""
def calculate_jazzcash_secure_hash(request_data, integrity_salt):
sorted_data = {k: v for k, v in sorted(request_data.items()) if k != "pp_SecureHash"}
final_string = integrity_salt + '&' + '&'.join(str(v) for v in sorted_data.values() if v)
secure_hash = hmac.new(
integrity_salt.encode(),
final_string.encode(),
hashlib.sha256
).hexdigest().upper()
return secure_hash
def checkout(request):
product_name = "Sample Product"
product_price = 100
pp_Amount = int(product_price * 100) # in paisa
current_datetime = datetime.now()
pp_TxnDateTime = current_datetime.strftime('%Y%m%d%H%M%S')
pp_TxnExpiryDateTime = (current_datetime + timedelta(hours=1)).strftime('%Y%m%d%H%M%S')
pp_TxnRefNo = 'T' + pp_TxnDateTime
post_data = {
"pp_Version": "1.1",
"pp_TxnType": "MWALLET",
"pp_Language": "EN",
"pp_MerchantID": JAZZCASH_MERCHANT_ID,
"pp_SubMerchantID": "",
"pp_Password": JAZZCASH_PASSWORD,
"pp_BankID": "TBANK",
"pp_ProductID": "RETL",
"pp_TxnRefNo": pp_TxnRefNo,
"pp_Amount": pp_Amount,
"pp_TxnCurrency": "PKR",
"pp_TxnDateTime": pp_TxnDateTime,
"pp_BillReference": "billRef",
"pp_Description": "Test transaction",
"pp_TxnExpiryDateTime": pp_TxnExpiryDateTime,
"pp_ReturnURL": JAZZCASH_RETURN_URL,
"ppmpf_1": "1",
"ppmpf_2": "2",
"ppmpf_3": "3",
"ppmpf_4": "4",
"ppmpf_5": "5",
}
post_data['pp_SecureHash'] = calculate_jazzcash_secure_hash(post_data, JAZZCASH_INTEGRITY_SALT)
return render(request, 'index.html', {'product_name': product_name, 'product_price': product_price, 'post_data': post_data})
@csrf_exempt
def success(request):
# Placeholder for handling JazzCash success response
return render(request, 'success.html')
Ошибка 199:
request.json
{
"pp_Version": "1.1",
"pp_TxnType": "MWALLET",
"pp_Language": "EN",
"pp_MerchantID": "MERCHANT_ID",
"pp_SubMerchantID": "",
"pp_UsageMode": "PR",
"pp_Password": "PASSWORD",
"pp_BankID": "TBANK",
"pp_ProductID": "RETL",
"pp_TxnRefNo": "T20241103183926",
"pp_Amount": "10000",
"pp_DiscountedAmount": "",
"pp_TxnCurrency": "PKR",
"pp_TxnDateTime": "20241103183926",
"pp_BillReference": "billRef",
"pp_Description": "Test transaction",
"pp_TxnExpiryDateTime": "20241103193926",
"pp_ReturnURL": "RETURN_URL",
"pp_SecureHash": "A59624AF8240E4E1A158855F9CA5087B741A064CCBEF52D23FE8F459E3A904B4",
"ppmpf_1": "1",
"ppmpf_2": "2",
"ppmpf_3": "3",
"ppmpf_4": "4",
"ppmpf_5": "5",
"pp_MobileNumber": "Number",
"DiscountProfileId": null,
"ppTxnOrderIdentifier": null,
"pp_PaymentInstrumentNumber": "Number",
"pp_PaymentInstrumentID": "0"
}
Response JSON
{
"pp_Amount": "10000",
"pp_AuthCode": "",
"pp_BankID": "",
"pp_BillReference": "billRef",
"pp_Language": "EN",
"pp_MerchantID": "MERVHANT_ID",
"pp_ResponseCode": "199",
"pp_ResponseMessage": "Sorry! Your transaction was not successful. Please try again later.",
"pp_RetreivalReferenceNo": "241103130002",
"pp_SecureHash": "03123C048CD00F8E58C278FC70EA7BA735DA894010CE73FCA0FDDF0689F53948",
"pp_SettlementExpiry": "",
"pp_SubMerchantId": "",
"pp_TxnCurrency": "PKR",
"pp_TxnDateTime": "20241103183926",
"pp_TxnRefNo": "T20241103183926",
"pp_TxnType": "MWALLET",
"pp_Version": "1.1",
"ppmpf_1": "1",
"ppmpf_2": "2",
"ppmpf_3": "3",
"ppmpf_4": "4",
"ppmpf_5": "5"
Вот что я пробовал:
Разверните проект: Я разместил проект на Vercel, думая, что проблема может быть в локальном запуске. Обратился в службу поддержки: Я связался со службой поддержки JazzCash по электронной почте, но пока не получил никакого ответа.