Skip to main content

Xendit REST API Client for Python

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xenditclient-0.0.5.tar.gz (9.8 kB view hashes)

Uploaded Source

Built Distribution

xenditclient-0.0.5-py3-none-any.whl (12.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page