Skip to content

dwisulfahnur/python-xendit-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Xendit Client API

Build Status PyPI version Downloads Downloads

Xendit REST API Client for Python

Documentation

Install

Install xenditclient with pip by the following command:

pip install xenditclient

Usage

Configure the XenditClient with the secret key that you can obtained on your Xendit Dashboard Account.

from xenditclient import XenditClient

client = XenditClient(api_key='<your-secret-key>')

Get Balance

res_dict = client.balance.get_balance('CASH')
print(res_dict)
# {
#   'balance': 1000137690
# }

EWallets

Create Payment

params = {
  'ewallet_type':'OVO',
  'external_id':'21345',
  'amount':10000,
  'phone':'081234567890'
}

res_dict = client.ewallet.create(params)
print(res_dict)
# {
#   "business_id": "12345678",
#   "external_id": "21345",
#   "amount": "10000",
#   "phone": "081234567890",
#   "ewallet_type": "OVO",
#   "status": "PENDING",
#   "created": "2020-04-04T00:00:00.000Z",
# }

Get Payment Status

res_dict = client.ewallet.get_payment_status(external_id='21345', payment_method='OVO')
print(res_dict)
# {
#   "amount": "10000",
#   "business_id": "12345678",
#   "ewallet_type": "OVO",
#   "external_id": "21345",
#   "status": "COMPLETED",
#   "transaction_date": "2020-04-04T11:48:47.903Z"
# }

QR Codes (QRIS)

Get QRCode client

qrcode = client.qrcodes
# or
from xenditclient.qrcodes import QRCodesClient

qrcode = QRCodesClient(client)

Create QRCode for payment

data = qrcode.create("DYNAMIC", "DS-INV-01", "https://dwisulfahnur.com/api/xendit/callback", 10200)
print(data)
# {
#   "id": "qr_a706814a-d18b-4109-9b71-7a76f9855e123",
#   "external_id": "DS-INV-01",
#   "amount": 10200,
#   "qr_string": "00022312321226660014ID.LINKAJA.WWW0118912312300241148000215200423041141230303UME51450015ID.OR.GPNQR.WWW0215000111111111110303UME520454995802ID5920Placeholder merchant6007Jakarta6106123456623801152QiFZi5qT12307152QiFZi5qThdA4M753033605405102006304D9CM",
#   "callback_url": "https://dwisulfahnur.com/api/xendit/callback",
#   "type": "DYNAMIC",
#   "status": "ACTIVE",
#   "created": "2020-07-27T07:44:31.420Z",
#   "updated": "2020-07-27T07:44:31.420Z"
# }

Get QRCode detail payment

data = qrcode.get_payment_detail("DS-INV-01")
print(data)
# {
#   "id": "qr_a706814a-d18b-4109-9b71-7a76f9855e123",
#   "external_id": "DS-INV-01",
#   "amount": 10200,
#   "qr_string": "00022312321226660014ID.LINKAJA.WWW0118912312300241148000215200423041141230303UME51450015ID.OR.GPNQR.WWW0215000111111111110303UME520454995802ID5920Placeholder merchant6007Jakarta6106123456623801152QiFZi5qT12307152QiFZi5qThdA4M753033605405102006304D9CM",
#   "callback_url": "https://dwisulfahnur.com/api/xendit/callback",
#   "type": "DYNAMIC",
#   "status": "ACTIVE",
#   "created": "2020-07-27T07:44:31.420Z",
#   "updated": "2020-07-27T07:44:31.420Z"
# }

Virtual Account

Get Virtual Account Client

va_client = client.virtual_account
# or
from xenditclient.virtual_accounts import VirtualAccountClient

qrcode = VirtualAccountClient(client)

Get Virtual Account Banks

data = va_client.get_va_banks()
print(data)
# [
#     {'name': 'Bank Mandiri', 'code': 'MANDIRI'}, 
#     {'name': 'Bank Negara Indonesia', 'code': 'BNI'},
#     {'name': 'Bank Rakyat Indonesia', 'code': 'BRI'}, 
#     {'name': 'Bank Permata', 'code': 'PERMATA'},
#     {'name': 'Bank Central Asia', 'code': 'BCA'}
# ]

Create Virtual Account Payment

from xenditclient import virtual_accounts

data = va_client.create(
    external_id="DS-INV-01", 
    bank_code=virtual_accounts.BNI, 
    name="Dwi Sulfahnur", 
)
"""
You can add the following additional options 
for the Virtual Account as arguments:
  - virtual_account_number: str // Optional
  - suggested_amount: int // Optional
  - is_closed: bool // Optional
  - expected_amount: int // Optional
  - expiration_date: UTC datetime // Optional
  - is_single_use: bool // Optional
  - description: str // Optional
"""

print(data)
# {
#     "is_closed": true,
#     "status": "PENDING",
#     "currency": "IDR",
#     "owner_id": "5efab44e31890e1415bb70e9",
#     "external_id": "ZICARE-01",
#     "bank_code": "MANDIRI",
#     "merchant_code": "88908",
#     "name": "Dwi Sulfahnur",
#     "account_number": "889089999000001",
#     "suggested_amount": 15500,
#     "expected_amount": 15500,
#     "is_single_use": true,
#     "expiration_date": "2051-07-27T17:00:00.000Z",
#     "id": "5f1fd5470af2e8475877ba21"
# }

Get Virtual Account Payment Detail

data = va_client.get_payment_detail("5f1fd5470af2e8475877ba21")
print(data)
# {
#     "is_closed": true,
#     "status": "PENDING",
#     "currency": "IDR",
#     "owner_id": "5efab44e31890e1415bb70e9",
#     "external_id": "ZICARE-01",
#     "bank_code": "MANDIRI",
#     "merchant_code": "88908",
#     "name": "Dwi Sulfahnur",
#     "account_number": "889089999000001",
#     "suggested_amount": 15500,
#     "expected_amount": 15500,
#     "is_single_use": true,
#     "expiration_date": "2051-07-27T17:00:00.000Z",
#     "id": "5f1fd5470af2e8475877ba21"
# }

Update Virtual Account Payment Detail

from datetime import datetime

data = va_client.update_payment_detail(
    payment_id="5f1fd5470af2e8475877ba21",
    suggested_amount=20000,
    expected_amount=20000,
    expiration_date=datetime(2020, 12, 31, 00, 00, 00).isoformat(),
    is_single_use=True,
    description="Subscription Payment",
)

print(data)
# {
#     "is_closed": true,
#     "status": "PENDING",
#     "currency": "IDR",
#     "owner_id": "5efab44e31890e1415bb70e9",
#     "external_id": "ZICARE-01",
#     "bank_code": "MANDIRI",
#     "merchant_code": "88908",
#     "name": "Dwi Sulfahnur",
#     "account_number": "889089999000001",
#     "suggested_amount": 20000,
#     "expected_amount": 20000,
#     "is_single_use": true,
#     "expiration_date": "2020-12-31T17:00:00.000Z",
#     "id": "5f1fd5470af2e8475877ba21",
#     "description": "Subscription Payment",
# }

Legal

Disclaimer: This library is not affliated with Xendit. This is an independent and unofficial Library.