bSecure is a Universal Checkout for Pakistan (Alpha Release)
Project description
bSecure Checkout
Pakistan's first universal checkout solution that is easy and simple to integrate on your e-commerce store.
About bSecure Checkout
It gives you an option to enable universal-login, two-click checkout and accept multiple payment method for your customers, as well as run your e-commerce store hassle free.
It is built for desktop, tablet, and mobile devices and is continuously tested and updated to offer a frictionless payment experience for your e-commerce store.
bSecure
bSecure is a utility library for two-click checkout custom integration. bSecure library simplifies communication between builder and bSecure server and processing tasks for builder's ease.
Installation
Use the package manager pip to install bsecure.
pip install bsecure
Prerequisites
bSecure requires Python 3.3.0 or newer
Configuration Setup
By following a few simple steps, you can set up your bSecure Checkout and Single-Sign-On.
Getting Your Credentials
- Go to Builder Portal
- App Integration >> Sandbox / Live
- Select Environment Type (Custom Integration)
- Fill following fields:
a. Store URL its required in any case
b. Login Redirect URL Required for feature Login with bSecure
c. Checkout Redirect URL Required for feature Pay with bSecure
d. Checkout Order Status webhook Required for feature Pay with bSecure - Save your client credentials (Client ID and Client Secret)
- Please make sure to keep credentials at safe place in your code
Usage
Integration Steps:
Import the package
import bSecure as bsecure
Create Order
In order to create an order you should follow below mentioned steps:
Authenticate Client
To call create order function of bSecure, you first have to authenticate your client.
bsecure.authenticate
will be used to authenticate your client as shown below:
bsecure.authenticate(client_id, client_secret)
client_id and client_secret can be obtained from Builder Portal for your application.
This is time limited activation, and must be considered to implement in a way that traffic may not disrupt your application. We suggest to call this function before each of the following to keep authentication updated:
- create_order
- order_status
- get_customer_profile
2. Set Order
To create an order you should have an order_details object parameters that are to be set before creating an order.
Before proceeding further order_details object has some pre-condition rules that are mentioned below:
Shipment Object Rule
Shipment object should be in below mentioned format:
1- If the merchant want his pre-specified shipment method then he should pass shipment method detail in order detail object.
Customer Object Rule
Customer object mentioned in order detail object should be in below mentioned format:
1- If the customer has already signed-in via bSecure into your system and you have auth_code for the customer you can just pass that code in the customer object no need for the rest of the fields.
2- Since all the fields in Customer object are optional, if you don’t have any information about customer just pass the empty object, or if you have customer details then your customer object should be in below mentioned format:
'customer': {
'name': 'string',
'email': 'string',
'country_code': 'string',
'phone_number': 'string',
}
Order Detail Request Params:
Here you can see sample order format Dictionary format shared below is necessary to activate your bSecure Universal Checkout create order function.
order_details = {
"discount_amount": 0,
"sub_total_amount": 300.78,
"total_amount": 300.78,
"currency_code": "PKR",
"order_id": "order-id-in-your-system-0001",
"customer": {
"name": "your customer name",
"email": "your.customer.email@yourapplication.com",
"country_code": "92",
"phone_number": "345-6789012"
},
"products": {
"0": {
"id": "product-id-in-your-system-0001",,
"name": "BAZIC Asst. Size Paint Brush Set (15/Pack)",
"sku": "product-sku-in-your-system-123",
"quantity": 1,
"price": 25.5,
"sale_price": 35.5,
"image": "https://sc01.alicdn.com/kf/UT8ChMOXjBbXXagOFbXU.jpg",
"description": "product headline/short description",
"short_description": "Detailed description for product. Here you will share all that you know about the product."
}
}
}
After you have created the dictionary in above mentioned format, call:
bsecure.set_order(order_details)
should always be called whenever want to create an order with bSecure.
bsecure.set_order(order_details=order_details)
3. Create Order
Now you are good to go to proceed with create order request. Once order_details are set in your order then, call
order_created = bsecure.create_order()
In response bsecure.created_order()
, will return expiry
, checkout_url
, order_reference
and
merchant_order_id
about current order.
>>> print(order_created)
>>> {
>>> 'expiry': '2020-11-27 10:55:14',
>>> 'checkout_url': '<bSecure-checkout-url>', # Redirect URL
>>> 'order_reference': 'bsecure-reference',
>>> 'merchant_order_id': 'your-order-id',
>>> }
In webview, redirect the to
checkout_url
fromorder_created
variable as shown above.
if order_created.__contains__('checkout_url') and order_created.get('checkout_url', None):
return redirect(order_created.get('checkout_url')
Callback on Order Placement
Once the order is successfully placed, bSecure will redirect the customer to the url you mentioned in “Checkout
redirect url” in your environment settings in Builder Portal, with one additional param
order_ref
in the query string.
Order Updates
By using order_ref
you received in the "Callback on Order Placement" you can call below method to get order details.
order_status = bsecure.order_status(order_reference=order_ref)
This will give you detailed status of your order
Note: We suggest to store order_ref
with your order to use it in future for order status
bSecure Single Sign On (SSO)
Once your account is set up you are ready to authenticate users! You will need two functions: one for redirecting the user to the OAuth provider, and another for receiving the customer profile from the provider after authentication.
Authenticate Client
Here is what you have to do:
1: setup data as below:
sso_data = {
"client_id": "<your client_id for bsecure>",
"state": "string"
}
state
should be unique to each user and stored in your system against each user.
We also support Single Sign On Feature for your application
Here is what you have to do:
Step 1: Redirecting Customer to bSecure
sso_data = { "client_id": "<your client_id for bsecure>", "state": "string" }
In above data, state
should be unique str
and be stored for later usage.
write the code as shown below
bsecure.single_sign_on_set_values(state=sso_data.get('state'), client_id=sso_data.get('client_id'))
redirect_url = bsecure.customer_authenticator()
Above code with create and return redirect url to variable redirect_url
.
You should redirect your application to redirect_url
Step 2: Redirected back to your web application:
When User/customer has completed their registration/login flow with us, we will redirect to your application.
You will receive a code
and state
as query-params to your application as a get request.
You should now:
Verify the state
you received matches with the one you created during
Step 1
If state
matches:
call function bsecure.get_customer_profile
as with the value of code
that you received.:
customer_profile = bsecure.get_customer_profile(code=code)
You will get customer profile from bSecure in variable customer_profile
Then based on the data in customer_data, you will register/login customer in your system.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for bSecure-0.0.0.6.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 564266bbb231e500744a0481bd08875f52bf34898aabec44bcb32b76361f436b |
|
MD5 | 0954ce9674a6c2aaf2a7c713de498c5e |
|
BLAKE2b-256 | 6f70454dd7ab92ffd5cbf8720adca41a349726bdd896867395a8ddc409286c4d |