sslcommerz_client package

Submodules

sslcommerz_client.client module

class sslcommerz_client.client.SSLCommerzClient(store_id: str, store_passwd: str, sandbox: bool = False)[source]

Bases: object

property baseURL
property credential
getOrderValidationData(data: Union[dict, sslcommerz_client.dataclasses.OrderValidationPostData, sslcommerz_client.dataclasses.IPNResponse])[source]

Get Order validation data from API.

getRefundData(refund_ref_id: str)[source]

Get existing refund data.

getTransactionBySession(sessionkey: str)[source]

Get a transaction by sessionkey.

getTransactionsByID(tran_id: str)[source]

Get transactions by transaction id.

initiateRefund(data: Union[dict, sslcommerz_client.dataclasses.RefundRequestPostData])[source]

Initiate a refund.

initiateSession(postData: Union[sslcommerz_client.dataclasses.PaymentInitPostData, dict])[source]

Initiates an session.

validateIPN(data: dict)[source]

Validate an IPN response.

sslcommerz_client.dataclasses module

class sslcommerz_client.dataclasses.APIConnectEnum(value)[source]

Bases: str, enum.Enum

An enumeration.

DONE = 'DONE'
FAILED = 'FAILED'
INACTIVE = 'INACTIVE'
INVALID_REQUEST = 'INVALID_REQUEST'
class sslcommerz_client.dataclasses.APIResponse(*, raw_data: Any = None, status_code: int, response: Optional[Union[sslcommerz_client.dataclasses.OrderValidationResponse, sslcommerz_client.dataclasses.IPNResponse, sslcommerz_client.dataclasses.PaymentInitResponse, sslcommerz_client.dataclasses.RefundResponse, sslcommerz_client.dataclasses.RefundInitiateResponse, sslcommerz_client.dataclasses.TransactionBySessionResponse, sslcommerz_client.dataclasses.TransactionsByIDResponse]] = None)[source]

Bases: pydantic.main.BaseModel

dataclass for api response complete with raw response data, status_code and one of response objects for easy introspection.

class Config[source]

Bases: object

arbitrary_types_allowed = True
raw_data: Any
response: Optional[Union[sslcommerz_client.dataclasses.OrderValidationResponse, sslcommerz_client.dataclasses.IPNResponse, sslcommerz_client.dataclasses.PaymentInitResponse, sslcommerz_client.dataclasses.RefundResponse, sslcommerz_client.dataclasses.RefundInitiateResponse, sslcommerz_client.dataclasses.TransactionBySessionResponse, sslcommerz_client.dataclasses.TransactionsByIDResponse]]
status_code: int
class sslcommerz_client.dataclasses.BaseOrderResponse(*, tran_date: datetime.datetime, tran_id: str, val_id: str, amount: decimal.Decimal, store_amount: decimal.Decimal, card_type: str, card_no: str, currency: str, bank_tran_id: str, card_issuer: str, card_brand: sslcommerz_client.dataclasses.CardBrandEnum, card_issuer_country: str, card_issuer_country_code: str, currency_type: str, currency_amount: decimal.Decimal, risk_level: sslcommerz_client.dataclasses.RiskLevelEnum, risk_title: str, value_a: str = None, value_b: str = None, value_c: str = None, value_d: str = None)[source]

Bases: pydantic.main.BaseModel

Base dataclass for Order and IPN.

amount: decimal.Decimal
bank_tran_id: str
card_brand: sslcommerz_client.dataclasses.CardBrandEnum
card_issuer: str
card_issuer_country: str
card_issuer_country_code: str
card_no: str
card_type: str
currency: str
currency_amount: decimal.Decimal
currency_type: str
risk_level: sslcommerz_client.dataclasses.RiskLevelEnum
risk_title: str
store_amount: decimal.Decimal
tran_date: datetime.datetime
tran_id: str
val_id: str
value_a: Optional[str]
value_b: Optional[str]
value_c: Optional[str]
value_d: Optional[str]
class sslcommerz_client.dataclasses.BooleanIntEnum(value)[source]

Bases: int, enum.Enum

An enumeration.

FALSE = 0
TRUE = 1
class sslcommerz_client.dataclasses.CardBrandEnum(value)[source]

Bases: str, enum.Enum

An enumeration.

AMEX = 'AMEX'
IB = 'IB'
MASTER = 'MASTER'
MOBILE_BANKING = 'MOBILE BANKING'
VISA = 'VISA'
class sslcommerz_client.dataclasses.CartItem(*, product: str, quantity: int, amount: decimal.Decimal)[source]

Bases: pydantic.main.BaseModel

Dataclass for cart items in PaymentInitPostData.

amount: decimal.Decimal
classmethod not_more_than_255(v, field)[source]
product: str
quantity: int
classmethod valid_decimal(v, field)[source]
class sslcommerz_client.dataclasses.Credential(*, store_id: str, store_passwd: str)[source]

Bases: pydantic.main.BaseModel

store_id: str
store_passwd: str
class sslcommerz_client.dataclasses.EMIOptionsEnum(value)[source]

Bases: int, enum.Enum

An enumeration.

NINE_MONTHS = 9
SIX_MONTHS = 6
THREE_MONTHS = 3
class sslcommerz_client.dataclasses.Gateway(*, name: str, type: str, logo: str = None, gw: str = None, r_flag: str = None, redirectGatewayURL: str = None)[source]

Bases: pydantic.main.BaseModel

gw: Optional[str]
name: str
r_flag: Optional[str]
redirectGatewayURL: Optional[str]
type: str
class sslcommerz_client.dataclasses.IPNOrderStatusEnum(value)[source]

Bases: str, enum.Enum

An enumeration.

CANCELLED = 'CANCELLED'
EXPIRED = 'EXPIRED'
FAILED = 'FAILED'
UNATTEMPTED = 'UNATTEMPTED'
VALID = 'VALID'
class sslcommerz_client.dataclasses.IPNResponse(*, tran_date: datetime.datetime, tran_id: str, val_id: str, amount: decimal.Decimal, store_amount: decimal.Decimal, card_type: str, card_no: str, currency: str, bank_tran_id: str, card_issuer: str, card_brand: sslcommerz_client.dataclasses.CardBrandEnum, card_issuer_country: str, card_issuer_country_code: str, currency_type: str, currency_amount: decimal.Decimal, risk_level: sslcommerz_client.dataclasses.RiskLevelEnum, risk_title: str, value_a: str = None, value_b: str = None, value_c: str = None, value_d: str = None, status: sslcommerz_client.dataclasses.IPNOrderStatusEnum, verify_sign: str, verify_key: str)[source]

Bases: sslcommerz_client.dataclasses.BaseOrderResponse

IPN response dataclass with validation

status: sslcommerz_client.dataclasses.IPNOrderStatusEnum
validate_against_credential(credential: Union[sslcommerz_client.dataclasses.Credential, dict])[source]
verify_key: str
verify_sign: str
class sslcommerz_client.dataclasses.IPNValidationStatus(*, status: bool, response: sslcommerz_client.dataclasses.IPNResponse)[source]

Bases: pydantic.main.BaseModel

IPN validation result’s dataclass.

class Config[source]

Bases: object

arbitrary_types_allowed = True
response: sslcommerz_client.dataclasses.IPNResponse
status: bool
class sslcommerz_client.dataclasses.MultiCardNamesEnum(value)[source]

Bases: str, enum.Enum

An enumeration.

ABBANK = 'abbank'
AMEX_CARD = 'amexcard'
BANK_ASIA = 'bankasia'
BKASH = 'bkash'
BRAC_MASTER = 'brac_master'
BRAC_VISA = 'brac_visa'
CITY = 'city'
CITY_AMEX = 'city_amex'
CITY_MASTER = 'city_master'
CITY_VISA = 'city_visa'
DBBL_MASTER = 'dbbl_master'
DBBL_MOBILE_BANKING = 'dbblmobilebanking'
DBBL_NEXUS = 'dbbl_nexus'
DBBL_VISA = 'dbbl_visa'
EBL_MASTER = 'ebl_master'
EBL_VISA = 'ebl_visa'
IBBL = 'ibbl'
INTERNET_BANK = 'internetbank'
MASTER_CARD = 'mastercard'
MOBILE_BANK = 'mobilebank'
MTBL = 'mtbl'
OTHER_CARD = 'othercard'
QCASH = 'qcash'
SBL_MASTER = 'sbl_master'
SBL_VISA = 'sbl_visa'
TAPNPAY = 'tapnpay'
UPAY = 'upay'
VISA_CARD = 'visacard'
class sslcommerz_client.dataclasses.OrderStatusEnum(value)[source]

Bases: str, enum.Enum

An enumeration.

INVALID_TRANSACTION = 'INVALID_TRANSACTION'
VALID = 'VALID'
VALIDATED = 'VALIDATED'
class sslcommerz_client.dataclasses.OrderValidationPostData(*, val_id: str, v: int = None)[source]

Bases: pydantic.main.BaseModel

Dataclass for Order validation API post data.

classmethod not_more_than_fifty(v, field)[source]
v: Optional[int]
val_id: str
classmethod validate_v(v)[source]
class sslcommerz_client.dataclasses.OrderValidationResponse(*, tran_date: datetime.datetime, tran_id: str, val_id: str, amount: decimal.Decimal, store_amount: decimal.Decimal, card_type: str, card_no: str, currency: str, bank_tran_id: str, card_issuer: str, card_brand: sslcommerz_client.dataclasses.CardBrandEnum, card_issuer_country: str, card_issuer_country_code: str, currency_type: str, currency_amount: decimal.Decimal, risk_level: sslcommerz_client.dataclasses.RiskLevelEnum, risk_title: str, value_a: str = None, value_b: str = None, value_c: str = None, value_d: str = None, status: sslcommerz_client.dataclasses.OrderStatusEnum, emi_instalment: sslcommerz_client.dataclasses.EMIOptionsEnum, emi_amount: decimal.Decimal, discount_amount: decimal.Decimal, discount_percentage: decimal.Decimal, discount_remarks: str)[source]

Bases: sslcommerz_client.dataclasses.BaseOrderResponse

Order validation response.

discount_amount: decimal.Decimal
discount_percentage: decimal.Decimal
discount_remarks: str
emi_amount: decimal.Decimal
emi_instalment: sslcommerz_client.dataclasses.EMIOptionsEnum
status: sslcommerz_client.dataclasses.OrderStatusEnum
class sslcommerz_client.dataclasses.PaymentInitPostData(*, total_amount: decimal.Decimal, currency: str, tran_id: str, product_category: str, success_url: pydantic.networks.AnyHttpUrl, fail_url: pydantic.networks.AnyHttpUrl, cancel_url: pydantic.networks.AnyHttpUrl, emi_option: sslcommerz_client.dataclasses.BooleanIntEnum = <BooleanIntEnum.FALSE: 0>, cus_name: str, cus_email: str, cus_add1: str, cus_city: str, cus_country: str, cus_phone: str, shipping_method: sslcommerz_client.dataclasses.ShippingMethodEnum = <ShippingMethodEnum.YES: 'YES'>, num_of_item: int, product_name: str, product_profile: sslcommerz_client.dataclasses.ProductProfileEnum, ipn_url: str = None, multi_card_name: sslcommerz_client.dataclasses.MultiCardNamesEnum = None, allowed_bin: str = None, emi_max_inst_option: sslcommerz_client.dataclasses.EMIOptionsEnum = None, emi_selected_inst: sslcommerz_client.dataclasses.EMIOptionsEnum = None, emi_allow_only: int = None, cus_add2: str = None, cus_postcode: str = None, cus_state: str = None, cus_fax: str = None, ship_name: str = None, ship_add1: str = None, ship_add2: str = None, ship_city: str = None, ship_postcode: str = None, ship_country: str = None, ship_phone: str = None, ship_state: str = None, hours_till_departure: str = None, flight_type: str = None, pnr: str = None, journey_from_to: str = None, third_party_booking: str = None, hotel_name: str = None, length_of_stay: str = None, check_in_time: str = None, hotel_city: str = None, product_type: str = None, topup_number: str = None, country_topup: str = None, cart: List[sslcommerz_client.dataclasses.CartItem] = None, product_amount: decimal.Decimal = None, vat: decimal.Decimal = None, discount_amount: decimal.Decimal = None, convenience_fee: decimal.Decimal = None, value_a: str = None, value_b: str = None, value_c: str = None, value_d: str = None)[source]

Bases: pydantic.main.BaseModel

Dataclass for session initiation post data.

class Config[source]

Bases: object

arbitrary_types_allowed = True
allowed_bin: Optional[str]
cancel_url: pydantic.networks.AnyHttpUrl
cart: Optional[List[sslcommerz_client.dataclasses.CartItem]]
classmethod check_cart_items(v)[source]
check_in_time: Optional[str]
convenience_fee: Optional[decimal.Decimal]
country_topup: Optional[str]
currency: str
cus_add1: str
cus_add2: Optional[str]
cus_city: str
cus_country: str
cus_email: str
cus_fax: Optional[str]
cus_name: str
cus_phone: str
cus_postcode: Optional[str]
cus_state: Optional[str]
discount_amount: Optional[decimal.Decimal]
emi_allow_only: Optional[int]
emi_max_inst_option: Optional[sslcommerz_client.dataclasses.EMIOptionsEnum]
emi_option: sslcommerz_client.dataclasses.BooleanIntEnum
emi_selected_inst: Optional[sslcommerz_client.dataclasses.EMIOptionsEnum]
fail_url: pydantic.networks.AnyHttpUrl
flight_type: Optional[str]
hotel_city: Optional[str]
hotel_name: Optional[str]
hours_till_departure: Optional[str]
ipn_url: Optional[str]
journey_from_to: Optional[str]
length_of_stay: Optional[str]
classmethod mandatory_if_airline_tickets(v, field, values)[source]
classmethod mandatory_if_telecom_vertical(v, field, values)[source]
classmethod mandatory_if_travel_vertical(v, field, values)[source]
multi_card_name: Optional[sslcommerz_client.dataclasses.MultiCardNamesEnum]
classmethod not_more_than_255(v, field)[source]
classmethod not_more_than_fifty(v, field)[source]
classmethod not_more_than_hundred(v, field)[source]
classmethod not_more_than_hundred_fifty(v, field)[source]
classmethod not_more_than_thirty(v, field)[source]
classmethod not_more_than_three(v, field)[source]
num_of_item: int
pnr: Optional[str]
product_amount: Optional[decimal.Decimal]
product_category: str
product_name: str
product_profile: sslcommerz_client.dataclasses.ProductProfileEnum
product_type: Optional[str]
ship_add1: Optional[str]
ship_add2: Optional[str]
ship_city: Optional[str]
ship_country: Optional[str]
ship_name: Optional[str]
ship_phone: Optional[str]
ship_postcode: Optional[str]
ship_state: Optional[str]
shipping_method: sslcommerz_client.dataclasses.ShippingMethodEnum
success_url: pydantic.networks.AnyHttpUrl
third_party_booking: Optional[str]
topup_number: Optional[str]
total_amount: decimal.Decimal
tran_id: str
classmethod valid_decimal(v, field)[source]
classmethod valid_emi_allow_only(v, values, field)[source]
classmethod validate_based_on_shipping_method(v, field, values)[source]
classmethod validate_num_of_item(v)[source]
value_a: Optional[str]
value_b: Optional[str]
value_c: Optional[str]
value_d: Optional[str]
vat: Optional[decimal.Decimal]
class sslcommerz_client.dataclasses.PaymentInitResponse(*, status: sslcommerz_client.dataclasses.ResponseStatusEnum, failedreason: str = None, sessionkey: str = None, gw: Any = None, redirectGatewayURL: str = None, directPaymentURLBank: str = None, directPaymentURLCard: str = None, directPaymentURL: str = None, redirectGatewayURLFailed: str = None, GatewayPageURL: str = None, storeBanner: str = None, storeLogo: str = None, desc: List[sslcommerz_client.dataclasses.Gateway] = None)[source]

Bases: pydantic.main.BaseModel

Payment initiation response as a dataclass.

class Config[source]

Bases: object

arbitrary_types_allowed = True
GatewayPageURL: Optional[str]
desc: Optional[List[sslcommerz_client.dataclasses.Gateway]]
directPaymentURL: Optional[str]
directPaymentURLBank: Optional[str]
directPaymentURLCard: Optional[str]
failedreason: Optional[str]
gw: Optional[Any]
redirectGatewayURL: Optional[str]
redirectGatewayURLFailed: Optional[str]
sessionkey: Optional[str]
status: sslcommerz_client.dataclasses.ResponseStatusEnum
storeBanner: Optional[str]
class sslcommerz_client.dataclasses.ProductProfileEnum(value)[source]

Bases: str, enum.Enum

An enumeration.

AIRLINE_TICKETS = 'airline-tickets'
GENERAL = 'general'
NON_PHYSICAL_GOODS = 'non-physical-goods'
PHYSICAL_GOODS = 'physical-goods'
TELECOM_VERTICAL = 'telecom-vertical'
TRAVEL_VERTICAL = 'travel-vertical'
class sslcommerz_client.dataclasses.RefundInitiateResponse(*, APIConnect: sslcommerz_client.dataclasses.APIConnectEnum, bank_tran_id: str, trans_id: str = None, refund_ref_id: str = None, status: sslcommerz_client.dataclasses.RefundStatusEnum, errorReason: str = None)[source]

Bases: pydantic.main.BaseModel

Refund initiation response.

APIConnect: sslcommerz_client.dataclasses.APIConnectEnum
bank_tran_id: str
errorReason: Optional[str]
refund_ref_id: Optional[str]
status: sslcommerz_client.dataclasses.RefundStatusEnum
trans_id: Optional[str]
class sslcommerz_client.dataclasses.RefundRequestPostData(*, bank_tran_id: str, refund_amount: str, refund_remarks: str, refe_id: str)[source]

Bases: pydantic.main.BaseModel

Dataclass for Refund API post data.

bank_tran_id: str
classmethod not_more_than_255(v, field)[source]
classmethod not_more_than_eighty(v, field)[source]
classmethod not_more_than_fifty(v, field)[source]
refe_id: str
refund_amount: str
refund_remarks: str
classmethod valid_decimal(v, field)[source]
class sslcommerz_client.dataclasses.RefundResponse(*, APIConnect: sslcommerz_client.dataclasses.APIConnectEnum, bank_tran_id: str, trans_id: str = None, refund_ref_id: str = None, status: sslcommerz_client.dataclasses.RefundStatusEnum, errorReason: str = None, initiated_on: datetime.datetime, refunded_on: datetime.datetime)[source]

Bases: sslcommerz_client.dataclasses.RefundInitiateResponse

Refund response.

initiated_on: datetime.datetime
refunded_on: datetime.datetime
class sslcommerz_client.dataclasses.RefundStatusEnum(value)[source]

Bases: str, enum.Enum

An enumeration.

FAILED = 'failed'
PROCESSING = 'processing'
SUCCESS = 'success'
class sslcommerz_client.dataclasses.ResponseStatusEnum(value)[source]

Bases: str, enum.Enum

An enumeration.

FAILED = 'FAILED'
SUCCESS = 'SUCCESS'
class sslcommerz_client.dataclasses.RiskLevelEnum(value)[source]

Bases: int, enum.Enum

An enumeration.

HIGH = 1
LOW = 0
class sslcommerz_client.dataclasses.Session(*, status: str, sessionkey: str, tran_date: datetime.datetime, tran_id: str, val_id: str, amount: decimal.Decimal, store_amount: decimal.Decimal, card_type: str, card_no: str, currency: str, bank_tran_id: str, card_issuer: str, card_brand: sslcommerz_client.dataclasses.CardBrandEnum, card_issuer_country: str, card_issuer_country_code: str, currency_type: str, currency_amount: decimal.Decimal, emi_instalment: int, emi_amount: decimal.Decimal, discount_percentage: decimal.Decimal, discount_remarks: str, value_a: str = None, value_b: str = None, value_c: str = None, value_d: str = None, risk_level: sslcommerz_client.dataclasses.RiskLevelEnum, risk_title: str)[source]

Bases: pydantic.main.BaseModel

Dataclass for transaction session.

amount: decimal.Decimal
bank_tran_id: str
card_brand: sslcommerz_client.dataclasses.CardBrandEnum
card_issuer: str
card_issuer_country: str
card_issuer_country_code: str
card_no: str
card_type: str
currency: str
currency_amount: decimal.Decimal
currency_type: str
discount_percentage: decimal.Decimal
discount_remarks: str
emi_amount: decimal.Decimal
emi_instalment: int
risk_level: sslcommerz_client.dataclasses.RiskLevelEnum
risk_title: str
sessionkey: str
status: str
store_amount: decimal.Decimal
tran_date: datetime.datetime
tran_id: str
val_id: str
value_a: Optional[str]
value_b: Optional[str]
value_c: Optional[str]
value_d: Optional[str]
class sslcommerz_client.dataclasses.ShippingMethodEnum(value)[source]

Bases: str, enum.Enum

An enumeration.

COURIER = 'COURIER'
NO = 'NO'
YES = 'YES'
class sslcommerz_client.dataclasses.TransactionBySessionResponse(*, status: str, sessionkey: str, tran_date: datetime.datetime, tran_id: str, val_id: str, amount: decimal.Decimal, store_amount: decimal.Decimal, card_type: str, card_no: str, currency: str, bank_tran_id: str, card_issuer: str, card_brand: sslcommerz_client.dataclasses.CardBrandEnum, card_issuer_country: str, card_issuer_country_code: str, currency_type: str, currency_amount: decimal.Decimal, emi_instalment: int, emi_amount: decimal.Decimal, discount_percentage: decimal.Decimal, discount_remarks: str, value_a: str = None, value_b: str = None, value_c: str = None, value_d: str = None, risk_level: sslcommerz_client.dataclasses.RiskLevelEnum, risk_title: str, APIConnect: sslcommerz_client.dataclasses.APIConnectEnum)[source]

Bases: sslcommerz_client.dataclasses.Session

Dataclass for transaction by session query.

APIConnect: sslcommerz_client.dataclasses.APIConnectEnum
class sslcommerz_client.dataclasses.TransactionsByIDResponse(*, APIConnect: sslcommerz_client.dataclasses.APIConnectEnum, no_of_trans_found: int, element: List[sslcommerz_client.dataclasses.Session])[source]

Bases: pydantic.main.BaseModel

Dataclass for transactions by ID query.

APIConnect: sslcommerz_client.dataclasses.APIConnectEnum
element: List[sslcommerz_client.dataclasses.Session]
no_of_trans_found: int

Module contents