Skip to main content

A Python wrapper around the Revenue Monster API

Project description

image0 image1 image2

This is an Python SDK that maps some of the RESTful methods of Open API that are documented at Revenue Monster Open API Documentation.

Getting Started

Installation

pip3 install rmsdk

Prerequisite

Before using the SDK, users must obtain credentials from merchant portal first. Click here for tutorial.

Usage

This section explains the basic usage of the SDK. Detail usage for individual modules are prepared in the examples folder.

A dictionary that contains clientID, clientSecret, environment and privateKey (path to private key) is expected to passed in as argument. An object of the RMSDK class will be instantiated. All modules covered in this SDK will be available under the instantiated object.

For instance, to use the store module, simply,

response = client.module.methodName(*args)

Authentication

Authenticate SDK

from rmsdk import RMSDK

client = RMSDK(configs={
    "environment": "sandbox", # or production
    "clientID": "client-id",
    "clientSecret": "client-secret",
    "privateKey": "path-to-private-key"
})

accessToken, refreshToken = client.accessToken, client.refreshToken

Generate Client Credentials

To get refresh token and access token(expired after 2 hours) with using provided clientID and clientSecret.

client = Auth({
    "environment": "sandbox", # or production
    "clientID": "client-id",
    "clientSecret": "client-secret",
    "privateKey": "path-to-private-key"
})

accessToken, refreshToken = client.clientCredentials()

Generate Refresh Token

To get new access token(expired after 2 hours) with using provided clientId and clientSecret (recommended to schedule to run this fucntion on every less than 2 hours) in order to avoid expired access token error.

accessToken, refreshToken = client.getRefreshToken(refreshToken)

Merchant

Get Merchant Profile

result = client.merchant.getMerchantProfile(accessToken)

Get Merchant Subscriptions

result = client.merchant.getMerchantSubcriptions(accessToken)

Store

Get Store List

result = client.store.getStores(accessToken)

Get Store By ID

result = client.store.getStoreByID(accessToken, storeID)

Create Store

result = client.store.createStore(accessToken, {
    "name": "Test store",
    "addressLine1": "Earth",
    "addressLine2": "Mars",
    "postCode": "10001",
    "city": "Petaling Jaya",
    "state": "Selangor",
    "country": "Malaysia",
    "countryCode": "60",
    "phoneNumber": "377334080"
})

Update Store

result = client.store.updateStore(accessToken, storeID, {
    "name": "Test store",
    "addressLine1": "Earth",
    "addressLine2": "Mars",
    "postCode": "10001",
    "city": "Petaling Jaya",
    "state": "Selangor",
    "country": "Malaysia",
    "countryCode": "60",
    "phoneNumber": "377334080"
})

Delete Store

result = client.store.deleteStore(accessToken, storeID)

User

Get User Profile

result = client.user.getUserProfile(accessToken)

Payment (Quickpay QR)

QuickPay

result = client.quickPay.quickPay(accessToken, {
    "authCode": "1234567890",
    "order": {
        "amount": 100,
        "currencyType":"MYR",
        "id":"1312331232",
        "title":"title",
        "detail":"desc",
        "additonalData":"API Test"
   },
    "ipAddress": "8.8.8.8",
    "terminalId": "19382734937293999",
    "storeId": "6170506694335521334"
})

Refund

result = client.quickPay.refund(accessToken, {
    "transactionId": "190109042809010428940037",
    "refund": {
        "type": "FULL",
        "currencyType": "MYR",
        "amount": 100,
    },
    "reason": "test"
})

Reverse

result = client.quickPay.reverse(accessToken, {
    "orderId": "111222333"
})

Get All Transactions

result = client.quickPay.getAllTransactions(accessToken)

Get Transaction By ID

result = client.quickPay.getTransactionByID(accessToken, transactionID)

Get Transaction By Order ID

result = client.quickPay.getTransactionByOrder(accessToken, orderID)

Get Daily Settlement Report

result = client.quickPay.dailySettlementReport(accessToken, {
    "date": "2019-01-09",
    "method": "WECHATPAY",
    "region": "MALAYSIA",
    "sequence": 1
})

Payment (Transaction QR)

Create Transaction

result = client.transaction.createTransaction(accessToken, {
    "amount": 100,
    "currencyType": "MYR",
    "expiry": {
        "type": "PERMANENT"
    },
    "isPreFillAmount": True,
    "method": ['WECHATPAY'],
    "order": {
        "details": "Test",
        "title": "Title"
    },
    "redirectUrl": 'https://www.revenuemonster.com',
    "storeId": '1981039839353524638',
    "type": 'DYNAMIC',
})

Get Transaction

result = client.transaction.getTransaction(accessToken)

Get Transaction By Code

result = client.transaction.getTransactionByCode(accessToken, qrCode)

Get List of Transactions By Code

result = client.transaction.getTransactionByCode(accessToken, qrCode)

Loyalty

Give Loyalty Point

result = client.loyalty.giveLoyaltyPoint(accessToken, {
    "point": 100,
    "type": "ID",
    "memberId": "7765269777796630408",
    "countryCode": "60",
    "phoneNumber": "172826990"
})

Get Loyalty Member

result = client.loyalty.getLoyaltyMember(accessToken, memberID)

Get List of Loyalty Members

result = client.loyalty.getLoyaltyMembers(accessToken)

Get Point History

Get Loyalty point history of a member

result = client.loyalty.getLoyaltyMemberPointHistory(accessToken, memberID)

Voucher

Issue Voucher

result = client.voucher.issueVoucher(accessToken, batchKey)

Void Voucher

result = client.voucher.voidVoucher(accessToken, voucherCode)

Get Voucher By Code

result = client.voucher.getVoucherByCode(accessToken, voucherCode)

Get Voucher Batches

result = client.voucher.getVoucherBatches(accessToken)

Get Voucher Batches By Batch Key

result = client.voucher.getVoucherBatchByKey(accessToken, batchKey)

Detail examples can be found at examples.

Project details


Download files

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

Files for rmsdk, version 1.0.1
Filename, size File type Python version Upload date Hashes
Filename, size rmsdk-1.0.1-py3-none-any.whl (13.6 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size rmsdk-1.0.1.tar.gz (11.9 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page