client for global prime pay

Helper

class Helper[source]

Helper()

Helper.urlEncode({'test':'test','test1':1})
'test=test&test1=1'

Client

class Client[source]

Client(pub, secret, token='', endpoint='https://api.globalprimepay.com') :: Helper

main client for interface with global prime pay accept 3 inputs from gbp pub: public key secret: your secret key token: your client token

please refer to the main readme which should describe what those are

Get token

getCardToken[source]

getCardToken(self, cardNumber, expirationMonth, expirationYear, securityCode, name, ****kwargs**)

client = Client(**sampleKeys)
r = client.getCardToken(**sampleCard)
print(r)
token = r['card']['token']
r
{'rememberCard': True, 'resultCode': '00', 'resultMessage': 'Success', 'card': {'name': None, 'number': '453501XXXXXX5741', 'expirationMonth': '05', 'expirationYear': '28', 'securityCode': None, 'token': '5e41d517-8bac-4be5-a6d0-bbb06001cab1', 'cardLocation': 'I', 'cardType': 'VIS'}, 'email': None, 'mobilePhone': None, 'userId': None, 'partnerKey': None}
{'rememberCard': True,
 'resultCode': '00',
 'resultMessage': 'Success',
 'card': {'name': None,
  'number': '453501XXXXXX5741',
  'expirationMonth': '05',
  'expirationYear': '28',
  'securityCode': None,
  'token': '5e41d517-8bac-4be5-a6d0-bbb06001cab1',
  'cardLocation': 'I',
  'cardType': 'VIS'},
 'email': None,
 'mobilePhone': None,
 'userId': None,
 'partnerKey': None}

Charge Card

chargeCard[source]

chargeCard(self, token:str, amount:Number, referenceNo:str, customerName:str, customerEmail:str, detail:str, responseUrl:str='https://responseUrl', backgroundUrl:str='https://backgroundUrl', otp:str='Y', ****kwargs**)

charge card using 3d security, input: token:str:: card token (generated using client.getCardToken amount:Number:: amount to charge referenceNo:str:: reference used to check payment status later, should be uniquely generated customerName:str customerEmail:str detail:str responseUrl:str:: redirect url backgroundUrl:str:: callback url otp:str:: should we force user to input OTP 'Y' or 'N' **kwargs: any other input, please see full reference here https://doc.gbprimepay.com/full-payment-3d

client = Client(**sampleKeys)
from random import randint

cardPayload = {
  'token': token,
  'amount': 10,
  'referenceNo': f"TEST123{randint(1000,10000)}",
  'customerName': 'nic',
  'customerEmail': 'email@gmail.com',
  'otp': 'Y',
  'detail': 'this is just a test'
}
r = client.chargeCard(**cardPayload)
print(r)
gbpReferenceNo = r['gbpReferenceNo']
{'customerAddress': None, 'amount': 10, 'referenceNo': 'TEST1232301', 'messageToMerchant': None, 'resultCode': '00', 'customerTelephone': None, 'resultMessage': 'Success', 'customerName': 'nic', 'customerEmail': 'email@gmail.com', 'gbpReferenceNo': 'gbp173512137823', 'merchantDefined5': None, 'detail': 'this is just a test', 'merchantDefined3': None, 'merchantDefined4': None, 'merchantDefined1': None, 'merchantDefined2': None}

Verify OTP

verifyOtp[source]

verifyOtp(self, gbpReferenceNo)

r = client.verifyOtp(gbpReferenceNo)
r
'<!DOCTYPE html>\n\n<html>\n  <head>\n    <title>GB Prime Pay</title>\n    <meta charset="UTF-8" />\n    <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n  </head>\n  <body>\n    <div>Loading...</div>\n    <div>\n      <form action="https://simbank.globalprimepay.com/pay/3d_secure" method="post">\n        <input type="hidden" name="MERID" value="21291800058" />\n        <input type="hidden" name="TERMINALID" value="18060001" />\n        <input type="hidden" name="PAN" value="4535017710535741" />\n        <input type="hidden" name="EXPIRYDATE" value="0528" />\n        <input type="hidden" name="CVV2" value="184" />\n        <input type="hidden" name="INVOICENO" value="2211210057" />\n        <input type="hidden" name="AMOUNT" value="1000" />\n        <input type="hidden" name="POSTURL" value="https://api.globalprimepay.com/web/thanachat_gateway/receive/goback" />\n        <input type="hidden" name="POSTURL2" value="https://api.globalprimepay.com/web/thanachat_gateway/receive/realtime" />\n        <input type="hidden" name="AUTOREDIRECT" value="Y" />\n      </form>\n    </div>\n    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>\n    <script type="text/javascript">\n      $(document).ready(function () {\n        $(\'form\').submit();\n      });\n    </script>\n  </body>\n</html>'
import json
data = "{\"rememberCard\":false,\"card\":{\"number\":\"4535017710535741\",\"expirationYear\":\"28\",\"expirationMonth\":\"05\",\"securityCode\":\"184\",\"name\":\"Watcharagon Phokonwong\"}}"
json.loads(data)
{'rememberCard': False,
 'card': {'number': '4535017710535741',
  'expirationYear': '28',
  'expirationMonth': '05',
  'securityCode': '184',
  'name': 'Watcharagon Phokonwong'}}
{'customerAddress': None, 'amount': 10, 'referenceNo': 'TEST1235543', 'messageToMerchant': None, 'resultCode': '00', 'customerTelephone': None, 'resultMessage': 'Success', 'customerName': 'nic', 'customerEmail': 'email@gmail.com', 'gbpReferenceNo': 'gbp173512058890', 'merchantDefined5': None, 'detail': 'this is just a test', 'merchantDefined3': None, 'merchantDefined4': None, 'merchantDefined1': None, 'merchantDefined2': None}
{'customerAddress': None,
 'amount': 10,
 'referenceNo': 'TEST1235543',
 'messageToMerchant': None,
 'resultCode': '00',
 'customerTelephone': None,
 'resultMessage': 'Success',
 'customerName': 'nic',
 'customerEmail': 'email@gmail.com',
 'gbpReferenceNo': 'gbp173512058890',
 'merchantDefined5': None,
 'detail': 'this is just a test',
 'merchantDefined3': None,
 'merchantDefined4': None,
 'merchantDefined1': None,
 'merchantDefined2': None}

QR Payment

qrPayment[source]

qrPayment(self, amount:Number, referenceNo:str, ***args, **kwargs**)

pass through variable except token is get from the main class, please see docs at https://doc.gbprimepay.com/qrcash currently only amount and referenceNo are required

client = Client( pub=sec['public'], secret = sec['secret'], token = sec['token'],endpoint = 'https://api.gbprimepay.com/', )
customerKey = sec['token']
ref = f'test{randint(100,999)}'

r = client.qrPayment(token = customerKey, amount = 15.00, referenceNo=ref,responseUrl = "https://responseUrl",
               backgroundUrl =  "https://backgroundUrl")
r
{'referenceNo': 'test445',
 'qrcode': '00020101021230830016A00000067701011201150105560068127480218000000221121041055031800000000000test4455303764540515.005802TH5910GBPrimePay6304746D',
 'resultCode': '00',
 'gbpReferenceNo': 'gbp8778184909986',
 'resultMessage': 'Success'}

Check status

checkStatus[source]

checkStatus(self, referenceNo, ****kwargs**)

class PaymentStatusError[source]

PaymentStatusError() :: Exception

Common base class for all non-exit exceptions.

paymentStatus[source]

paymentStatus(self, referenceNo, ****kwargs**)

client.checkStatus(ref)
{'resultCode': '00',
 'txn': {'amount': '15.00',
  'referenceNo': 'test445',
  'gbpReferenceNo': 'gbp8778184909986',
  'merchantDefined5': None,
  'merchantDefined3': None,
  'merchantDefined4': None,
  'merchantDefined1': None,
  'status': 'G',
  'paymentType': 'Q',
  'merchantDefined2': None},
 'resultMessage': 'Success'}
client.paymentStatus(ref)
status is Generate
'G'

wechatpay

wechatPay[source]

wechatPay(self, amount:Number, referenceNo:str, ***args, **kwargs**)

pass through variable except token is get from the main class, please see docs at https://doc.gbprimepay.com/wechat currently only amount and referenceNo are required

client = Client( pub=sec['public'], secret = sec['secret'], token = sec['token'],endpoint = 'https://api.gbprimepay.com/' )
customerKey = sec['token']
ref = f'test{randint(100,999)}'

r = client.wechatPay(
    token = customerKey, 
    amount = 15.00, 
    referenceNo=ref,
    responseUrl = "https://responseUrl",
    backgroundUrl =  "https://backgroundUrl"
    )
r
{'referenceNo': 'test546',
 'resultCode': '00',
 'gbpReferenceNo': 'gbp8778184909992',
 'wechat': 'weixin://wxpay/bizpayurl?pr=kHETOrdzz',
 'resultMessage': 'Success'}

Alipay

alipay[source]

alipay(self, amount:Number, referenceNo:str, ***args, **kwargs**)

pass through variable except token is get from the main class, please see docs at https://doc.gbprimepay.com/wechat currently only amount and referenceNo are required

client = Client( pub=sec['public'], secret = sec['secret'], token = sec['token'],endpoint = 'https://api.gbprimepay.com/', )
customerKey = sec['token']
ref = f'test{randint(100,999)}'

r = client.alipay(
    token = customerKey, 
    amount = '15.00', 
    referenceNo=ref,
    responseUrl = "https://responseUrl",
    backgroundUrl =  "https://backgroundUrl",
    detail='test'
    )
r
'<!DOCTYPE html>\n\n<html>\n<head>\n    <title>GB Prime Pay</title>\n    <meta charset="UTF-8" />\n    <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n</head>\n<body>\n<div>Loading...</div>\n<div>\n    <form action="https://paygate.ktc.co.th/ktc/eng/merchandize/payment/payForm.jsp" method="post">\n        <input type="hidden" name="merchantId" value="991304584" />\n        <input type="hidden" name="amount" value="15.00" />\n        <input type="hidden" name="orderRef" value="221121017380" />\n        <input type="hidden" name="currCode" value="764" />\n        <input type="hidden" name="successUrl" value="https://api.gbprimepay.com/alipay/ktc_gateway/success" />\n        <input type="hidden" name="failUrl" value="https://api.gbprimepay.com/alipay/ktc_gateway/fail" />\n        <input type="hidden" name="cancelUrl" value="https://api.gbprimepay.com/alipay/ktc_gateway/cancel" />\n        <input type="hidden" name="payType" value="N" />\n        <input type="hidden" name="lang" value="E" />\n        <input type="hidden" name="pMethod" value="ALIPAY" />\n        <input type="hidden" name="TxType" value="Retail" />\n\n    </form>\n</div>\n<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>\n<script type="text/javascript">\n      $(document).ready(function () {\n        $(\'form\').submit();\n      });\n    </script>\n</body>\n</html>'