Subversion Repositories SmartDukaan

Rev

Rev 6144 | Rev 6161 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6048 rajveer 1
from suds.client import Client
2
import base64, re
3
from xml.dom.minidom import parseString
6092 rajveer 4
import logging
5
logging.basicConfig(level=logging.INFO)
6102 rajveer 6
#logging.getLogger('suds.client').setLevel(logging.DEBUG)
7
#logging.getLogger('suds.transport').setLevel(logging.DEBUG)
6048 rajveer 8
 
9
 
10
username = base64.b64encode('saholic20')
11
password = base64.b64encode('ap2020sh')
6151 rajveer 12
account_url = 'http://125.19.68.55/McommWebServices/AccountApiMcomm?wsdl'
6048 rajveer 13
recharge_url = 'http://125.19.68.55/McommWebServices/RechargeApiMcomm?wsdl'
6144 rajveer 14
aclient = None
15
raclient = None
6048 rajveer 16
 
17
 
6144 rajveer 18
def getAccountClient():
19
    global aclient
20
    if aclient is None:
21
        aclient = Client(account_url, timeout=30)
22
    return aclient
23
 
24
def getRechargeClient():
25
    global raclient
26
    if raclient is None:
27
        raclient = Client(recharge_url, timeout=30)    
28
    return raclient
29
 
6048 rajveer 30
def rechargeDevice(transactionId, rechargeType, strProviderCode, deviceNumber, amount):
6144 rajveer 31
    spString = getRechargeClient().service.getRecharge(username, password, '919650889334', 'SOAP', '115.249.47.66', transactionId, rechargeType, strProviderCode, deviceNumber, amount, 'DEBIT', '', '')
6093 rajveer 32
    print spString
6048 rajveer 33
    spString = re.sub('<\?.*\?>','',spString)
34
    spString = "<dom>" + spString + "</dom>"
35
    dom = parseString(spString)
36
    response = dom.getElementsByTagName('ActiveServicesPojo')[0]
37
    retStatus = response.getElementsByTagName('resStatus')[0].childNodes[0].data
38
    retCode = response.getElementsByTagName('respCode')[0].childNodes[0].data
39
    spiceTID = response.getElementsByTagName('SpiceTID')[0].childNodes[0].data
6092 rajveer 40
    retDesc = response.getElementsByTagName('shotDesc')[0].childNodes[0].data
41
    return retStatus, retCode, spiceTID, retDesc 
6048 rajveer 42
 
43
def getAccountdetail():
6144 rajveer 44
    return getAccountClient().service.getAccountdetail(username, password)
6151 rajveer 45
 
6048 rajveer 46
def getBalance():
6151 rajveer 47
    spString = getAccountClient().service.getBalance(username, password)
48
    print spString
49
    spString = re.sub('<\?.*\?>','',spString)
50
    spString = "<dom>" + spString + "</dom>"
51
    dom = parseString(spString)
52
    response = dom.getElementsByTagName('BalancePojo')[0]
53
    balanceAmount = response.getElementsByTagName('balance_amt')[0].childNodes[0].data
54
    return balanceAmount
6048 rajveer 55
 
56
def checkServiceProviderApi(strServiceCode, strDeviceNumber):
6144 rajveer 57
    spString = getAccountClient().service.checkServiceProviderApi(username, password, strServiceCode, strDeviceNumber)
6093 rajveer 58
    print spString
6054 rajveer 59
    spString = re.sub('<\?.*\?>','',spString)
60
    spString = "<dom>" + spString + "</dom>"
61
    dom = parseString(spString)
62
    response = dom.getElementsByTagName('CheckServiceProviderPojo')[0]
63
    providerCode = response.getElementsByTagName('providerCode')[0].childNodes[0].data
64
    return providerCode
6048 rajveer 65
 
66
def validateService(strServiceCode, strProviderCode, strDeviceNumber, dbAmount, strPlan):
6144 rajveer 67
    return getAccountClient().service.validateService(username, password, strServiceCode, strProviderCode, strDeviceNumber, dbAmount, strPlan)
6048 rajveer 68
 
69
def getAvailableServices():
6144 rajveer 70
    spString = getAccountClient().service.getServiceApi(username, password)
6109 rajveer 71
    print spString
6048 rajveer 72
    spString = re.sub('<\?.*\?>','',spString)
73
    spString = "<dom>" + spString + "</dom>"
74
    dom = parseString(spString)
75
    serviceApis = dom.getElementsByTagName('ServiceApiPojo')
76
    services = {}
77
    for serviceApi in serviceApis:
78
        services[serviceApi.getElementsByTagName('serviceCode')[0].childNodes[0].data] = serviceApi.getElementsByTagName('serviceDescription')[0].childNodes[0].data 
79
    return services
80
 
81
 
82
def getServiceProvidersForMobile():
83
    return getServiceProvider('MTP')
84
 
85
def getServiceProvidersForDTH():
86
    return getServiceProvider('RCH')
87
 
88
def getServiceProvider(strServiceCode):
6144 rajveer 89
    spString = getAccountClient().service.getServiceProvider(username, password, strServiceCode)
6109 rajveer 90
    print spString
6048 rajveer 91
    spString = re.sub('<\?.*\?>','',spString)
92
    spString = "<dom>" + spString + "</dom>"
93
    dom = parseString(spString)
94
    providers = dom.getElementsByTagName('ServicesProviderPojo')
95
    serviceProviders = {}
96
    for provider in providers:
97
        serviceProviders[provider.getElementsByTagName('providerCode')[0].childNodes[0].data] = provider.getElementsByTagName('providerDescription')[0].childNodes[0].data 
98
    return serviceProviders
6151 rajveer 99
 
6048 rajveer 100
def getServiceDetails(strServiceCode, strProviderCode):
6144 rajveer 101
    spString = getAccountClient().service.getServiceDetail(username, password, strServiceCode, strProviderCode)
6109 rajveer 102
    print spString
6048 rajveer 103
    spString = re.sub('<\?.*\?>','',spString)
104
    spString = "<dom>" + spString + "</dom>"
105
    dom = parseString(spString)
106
    details = dom.getElementsByTagName('ServiceDetailPojo')
107
    serviceDetails = {}
108
    for detail in details:
109
        serviceDetails['Denomination Type'] = detail.getElementsByTagName('DenominationType')[0].childNodes[0].data
110
        serviceDetails['Denomination Value'] = detail.getElementsByTagName('DenominationValue')[0].childNodes[0].data 
111
    return serviceDetails
112
 
6112 rajveer 113
def checkTransactionStatus(spiceTID='', merchantTxnId=''):
6144 rajveer 114
    spString = getRechargeClient().service.getCheckStatus(username,password,spiceTID,merchantTxnId)
6112 rajveer 115
    print spString
116
    spString = re.sub('<\?.*\?>','',spString)
117
    spString = "<dom>" + spString + "</dom>"
118
    dom = parseString(spString)
119
    response = dom.getElementsByTagName('CheckStatusObj')[0]
120
    responseCode = response.getElementsByTagName('ResponseCode')[0].childNodes[0].data
121
    transStatus = response.getElementsByTagName('transStatus')[0].childNodes[0].data
122
    responseDescription = response.getElementsByTagName('ResponseDescription')[0].childNodes[0].data
123
    if responseCode == '00' and transStatus == 'S':
124
        return True, responseDescription
125
    else:
126
        return False, responseDescription