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.
-
initiateRefund(data: Union[dict, sslcommerz_client.dataclasses.RefundRequestPostData])[source]¶ Initiate a refund.
-
initiateSession(postData: Union[sslcommerz_client.dataclasses.PaymentInitPostData, dict])[source]¶ Initiates an session.
-
property
sslcommerz_client.dataclasses module¶
-
class
sslcommerz_client.dataclasses.APIConnectEnum(value)[source]¶ Bases:
str,enum.EnumAn 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.BaseModeldataclass for api response complete with raw response data, status_code and one of response objects for easy introspection.
-
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.BaseModelBase 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.EnumAn enumeration.
-
FALSE= 0¶
-
TRUE= 1¶
-
-
class
sslcommerz_client.dataclasses.CardBrandEnum(value)[source]¶ Bases:
str,enum.EnumAn 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.BaseModelDataclass for cart items in PaymentInitPostData.
-
amount: decimal.Decimal¶
-
product: str¶
-
quantity: int¶
-
-
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.EnumAn 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]¶
-
logo: Optional[str]¶
-
name: str¶
-
r_flag: Optional[str]¶
-
redirectGatewayURL: Optional[str]¶
-
type: str¶
-
-
class
sslcommerz_client.dataclasses.IPNOrderStatusEnum(value)[source]¶ Bases:
str,enum.EnumAn 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.BaseOrderResponseIPN response dataclass with validation
-
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.BaseModelIPN validation result’s dataclass.
-
status: bool¶
-
-
class
sslcommerz_client.dataclasses.MultiCardNamesEnum(value)[source]¶ Bases:
str,enum.EnumAn 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.EnumAn enumeration.
-
INVALID_TRANSACTION= 'INVALID_TRANSACTION'¶
-
VALID= 'VALID'¶
-
VALIDATED= 'VALIDATED'¶
-
-
class
sslcommerz_client.dataclasses.OrderValidationPostData(*, val_id: str, v: int = None)[source]¶ Bases:
pydantic.main.BaseModelDataclass for Order validation API post data.
-
v: Optional[int]¶
-
val_id: str¶
-
-
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.BaseOrderResponseOrder validation response.
-
discount_amount: decimal.Decimal¶
-
discount_percentage: decimal.Decimal¶
-
discount_remarks: str¶
-
emi_amount: decimal.Decimal¶
-
emi_instalment: sslcommerz_client.dataclasses.EMIOptionsEnum¶
-
-
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.BaseModelDataclass for session initiation post data.
-
allowed_bin: Optional[str]¶
-
cancel_url: pydantic.networks.AnyHttpUrl¶
-
cart: Optional[List[sslcommerz_client.dataclasses.CartItem]]¶
-
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]¶
-
multi_card_name: Optional[sslcommerz_client.dataclasses.MultiCardNamesEnum]¶
-
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¶
-
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.BaseModelPayment initiation response as a dataclass.
-
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]¶
-
storeBanner: Optional[str]¶
-
storeLogo: Optional[str]¶
-
-
class
sslcommerz_client.dataclasses.ProductProfileEnum(value)[source]¶ Bases:
str,enum.EnumAn 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.BaseModelRefund initiation response.
-
APIConnect: sslcommerz_client.dataclasses.APIConnectEnum¶
-
bank_tran_id: str¶
-
errorReason: Optional[str]¶
-
refund_ref_id: Optional[str]¶
-
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.BaseModelDataclass for Refund API post data.
-
bank_tran_id: str¶
-
refe_id: str¶
-
refund_amount: str¶
-
refund_remarks: str¶
-
-
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.RefundInitiateResponseRefund response.
-
initiated_on: datetime.datetime¶
-
refunded_on: datetime.datetime¶
-
-
class
sslcommerz_client.dataclasses.RefundStatusEnum(value)[source]¶ Bases:
str,enum.EnumAn enumeration.
-
FAILED= 'failed'¶
-
PROCESSING= 'processing'¶
-
SUCCESS= 'success'¶
-
-
class
sslcommerz_client.dataclasses.ResponseStatusEnum(value)[source]¶ Bases:
str,enum.EnumAn enumeration.
-
FAILED= 'FAILED'¶
-
SUCCESS= 'SUCCESS'¶
-
-
class
sslcommerz_client.dataclasses.RiskLevelEnum(value)[source]¶ Bases:
int,enum.EnumAn 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.BaseModelDataclass 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.EnumAn 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.SessionDataclass 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.BaseModelDataclass for transactions by ID query.
-
APIConnect: sslcommerz_client.dataclasses.APIConnectEnum¶
-
element: List[sslcommerz_client.dataclasses.Session]¶
-
no_of_trans_found: int¶
-