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

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

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

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)
درصورتی که بانک سامان مشکل بالا رو حل کرده حتما اطلاع بدین.