Skip to content

Latest commit

 

History

History
372 lines (276 loc) · 8.16 KB

README.md

File metadata and controls

372 lines (276 loc) · 8.16 KB

RM-API-SDK-Python

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.

Supported APIs

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.