پیاده سازی درگاه پرداخت بانک سامان با پایتون

بانک سامان
بانک سامان

در یکی از پروژه ها برای پیاده سازی درگاه بانگ سامان خیلی درسر کشیدم بعد از دو روز پیگیری و گفتگو با پشتیبانیشون فهمیدم هر هدری(Header) که به webservice ارسال بشه و داخلش کلمه "python" باشه بلاک میشه. همچنین هیچ نموه کدی برای پایتون تو سایتشون قرار ندادن. کلا رابطه خوبی با پایتون ندارن!
نمونه کد زیر این مشکل رو حل میکنه.

from requests import Session
from zeep import Client, Transport
class PaymentGatewayAdapter(object):
    def __init__(self):
        pass

    def create_client(self, web_service) -> Client:
        session = Session()
        session.headers = {}
        transport = Transport(session=session)
        transport.session.headers = {}  # DON'T REMOVE THIS LINE.YOU BLOCK FROM SAMAN BANK IF REMOVE THIS LINE
        return Client(web_service, transport=transport)

    def sep_request_token(self, amount, wage, additional_data: ['', '']):
        client = self.create_client('https://sep.shaparak.ir/payments/initpayment.asmx?wsdl')
        res_num = self.sep_generate_reservation_number()
        response = client.service.RequestToken(
            'saman mid',
            res_num,
            amount,
            0, 0, 0, 0, 0, 0,
            additional_data[0],
            additional_data[1],
            wage
        )
        token = str(response)
        return token, res_num

    def sep_verify_transaction(self, ref_num):
        client = self.create_client('https://sep.shaparak.ir/payments/referencepayment.asmx?wsdl')
        result = client.service.verifyTransaction(
            ref_num,
            'saman mid'
        )
        return result

    def sep_reverse_transaction(self, ref_num):
        client = self.create_client('https://sep.shaparak.ir/payments/referencepayment.asmx?wsdl')
        result = client.service.reverseTransaction(
            ref_num,
            "saman mid",
            "saman mid,
            "saman password"
        )
        return result

    def sep_generate_reservation_number(self):
        return StringUtils.id_generator(size=15)
درصورتی که بانک سامان مشکل بالا رو حل کرده حتما اطلاع بدین.