payment.py 3 KB
import base64

from opensipkd.base.tools import get_random_number
from pyramid.view import view_config
import logging

log = logging.getLogger(__name__)
"""
test-purchase http://server/api/test/prepaid/purchase
"""


def validate_header(request):
    env = request.environ
    # http_header = env["HTTP_HEADER"]
    # log.info(env)
    # if 'HTTP_AUTHORIZATION' not in env:
    #     log.info("HTTP_AUTHORIZATION tidak ditemukan")
    #     return
    #
    # auth = env['HTTP_AUTHORIZATION'].split()
    # log.info(auth)
    # if len(auth) < 2 or auth[0] != "Bearer":
    #     log.info('Error Auth')
    #     return
    #
    # key = ":".join(['agratek', '4444444']).encode()
    # key_encoded = base64.b64encode(key).decode()
    # log.info(key_encoded)
    # if auth[1] != key_encoded:
    #     return

    return True


def anauthorized(request):
    request.response.status = 401
    result = {
        "status": "UNAUTHORIZED",
        "data": {
            "errors": [
                "Unauthorized"
            ]
        },
        "message": ""
    }
    return result


def bad_request(request, message=None):
    if not message:
        message = "Paramter(s) Expected"
    request.response.status = 400
    result = {
        "status": "BAD_REQUEST",
        "data": {
            "errors": [
                "ERROR_MESSAGE_1",
                "ERROR_MESSAGE_2",
                "ERROR_MESSAGE_ETC"
            ]
        },
        "message": message
    }
    return result


def produk_not_found(request):
    return bad_request(request, "Prduk Not Found")


# @view_config(route_name='test-purchase', renderer='json', request_method="POST")
def view_test_purchase(request):
     denom=""
     if denom[:2] == "CC":
        tx_id = get_random_number(32)
        return {
              'resultCd': '0000',
              'resultMsg': 'SUCCESS',
              'tXid': 'AGRATEK{}'.format(tx_id),
              'referenceNo': '2669739141972781',
              'payMethod': '01',
              'amt': ' 10000',
              'transDt': '20190906',
              'transTm': '110857',
              'description': 'Transaction Description',
              'bankCd': None,
              'vacctNo': None,
              'mitraCd': None,
              'payNo': None,
              'currency': None,
              'goodsNm': None,
              'billingNm': None,
              'vacctValidDt': None,
              'vacc tValidTm': None,
              'payValidDt': None,
              'payValidTm': None,
              'requestURL': None
            }

     return produk_not_found(request)

# @view_config(route_name='test-order', renderer='json', request_method="GET")
# def view_test_pln_pre(request):
#     if not validate_header(request):
#         return anauthorized(request)
#     matchdict = request.matchdict
#     id = "id" in matchdict and matchdict["id"] or ""
#     return {
#       "order_id": 123,
#       "name": "Telkomsel 5",
#       "msisdn": "08xx",
#       "serial_number": "XXX",
#       "status": "COMPLETED",
#       "price": 5000
#     }