Skip to content

Commit

Permalink
Merge pull request #111 from birddevelper/fix/bmi-referer
Browse files Browse the repository at this point in the history
Fix/bmi referer
  • Loading branch information
ali-zahedi authored Jun 4, 2024
2 parents b3d85d0 + 06e6521 commit 416d9af
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,17 @@ def go_to_gateway_view(request):
return render(request, "redirect_to_bank.html")
```

<h3 dir="rtl"> تنظیم SECURE_REFERRER_POLICY برای درگاه بانک ملی </h3>
<p dir="rtl">
برای استفاده از درگاه بانک ملی تنظیم SECURE_REFERRER_POLICY در setting جنگو به صورت زیر الزامیست
</p>

```python
SECURE_REFERRER_POLICY = 'strict-origin-when-cross-origin'
```

<h3 dir="rtl"> انتخاب خودکار درگاه </h3>

<p dir="rtl">
در صورتیکه تمایل دارید به صورت خودکار به اولین درگاه در دسترس متصل شوید. ابتدا از قسمت تنظیمات در بخش `BANK_PRIORITIES
` اولویت های بانک های مد نظر را وارید کنید. سپس به جای استفاده از متد `factory.create` از متد ‍`factory.auto_create` در این بخش استفاده کنید.
Expand Down Expand Up @@ -488,6 +499,7 @@ pre-commit install
* [amirreza8002](https://github.com/amirreza8002) رفع مشکل ترجمه
* [ahmadrezanavaie](https://github.com/ahmadrezanavaie) رفع مشکل ترجمه
* [zamoosh](https://github.com/zamoosh) اضافه کردن وضعیت های تراکنش در بانک ملت
* [birddevelper](https://github.com/birddevelper) الزامی کردن وجود referrer برای درگاه بانک ملی

## License

Expand Down
12 changes: 9 additions & 3 deletions azbankgateways/banks/bmi.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import requests
from Crypto.Cipher import DES3

from django.conf import settings
from azbankgateways.banks import BaseBank
from azbankgateways.exceptions import BankGatewayConnectionError, SettingDoesNotExist
from azbankgateways.exceptions.exceptions import (
Expand All @@ -20,8 +20,14 @@ class BMI(BaseBank):
_terminal_code = None
_secret_key = None

def _is_strict_origin_policy_enabled(self):
return settings.SECURE_REFERRER_POLICY == 'strict-origin-when-cross-origin'

def __init__(self, **kwargs):
super(BMI, self).__init__(**kwargs)
if not self._is_strict_origin_policy_enabled():
raise SettingDoesNotExist("SECURE_REFERRER_POLICY is not set to 'strict-origin-when-cross-origin' in django setting, it's mandatory for BMI gateway")

self.set_gateway_currency(CurrencyEnum.IRR)
self._token_api_url = "https://sadad.shaparak.ir/vpg/api/v0/Request/PaymentRequest"
self._payment_url = "https://sadad.shaparak.ir/VPG/Purchase"
Expand Down Expand Up @@ -63,7 +69,7 @@ def pay(self):
super(BMI, self).pay()
data = self.get_pay_data()
response_json = self._send_data(self._token_api_url, data)
if response_json["ResCode"] == "0":
if str(response_json["ResCode"]) == "0":
token = response_json["Token"]
self._set_reference_number(token)
else:
Expand Down Expand Up @@ -99,7 +105,7 @@ def verify(self, transaction_code):
super(BMI, self).verify(transaction_code)
data = self.get_verify_data()
response_json = self._send_data(self._verify_api_url, data)
if response_json["ResCode"] == "0":
if str(response_json["ResCode"]) == "0":
self._set_payment_status(PaymentStatus.COMPLETE)
extra_information = (
f"RetrivalRefNo={response_json['RetrivalRefNo']},SystemTraceNo={response_json['SystemTraceNo']}"
Expand Down

0 comments on commit 416d9af

Please sign in to comment.