Ecinetwireless backend code2
Ecinetwireless backend code2
import xmlrpc.client
import xmltodict # Simplified XML parsing
import os
import logging
# Configure logging
logging.basicConfig(level=logging.ERROR)
if isinstance(result, str):
# Use xmltodict for simplified XML parsing
response_data = xmltodict.parse(result)
return response_data
else:
logging.error(f"Unexpected response from Econet API: {result}")
return None
except xmlrpc.client.Fault as e:
logging.error(f"XML-RPC Fault: {e}")
return None
except Exception as e:
logging.error(f"An error occurred: {e}")
return None
@app.route("/api/airtime/load", methods=["POST"])
def load_airtime():
"""Loads airtime to a specified MSISDN."""
data = request.get_json()
msisdn = data.get("msisdn")
amount = data.get("amount")
reference = data.get("reference")
currency = data.get("currency", 840) # Default to USD (840) if not provided
api_params = {
"MSISDN": str(msisdn),
"Amount": amount,
"Reference": str(reference),
"Currency": currency # Defaults to 840 (USD)
}
if status == 1:
return jsonify({
"status": "success",
"statusCode": status_code,
"description": description,
"serial": response.get("Serial"),
"providerReference": response.get("ProviderReference"),
"rate": response.get("Rate")
}), 200
else:
return jsonify({
"status": "error",
"statusCode": status_code,
"description": description
}), 400
else:
return jsonify({"error": "Invalid response structure from Econet API"}),
500
@app.route("/api/bundle/load", methods=["POST"])
def load_bundle():
"""Purchases a data bundle for a specified MSISDN."""
data = request.get_json()
msisdn = data.get("msisdn")
provider_code = data.get("provider_code")
amount = data.get("amount")
currency = data.get("currency", 840) # Default to USD (840) if not provided
account_type = data.get("account_type")
quantity = data.get("quantity")
reference = data.get("reference")
product_code = data.get("product_code")
api_params = {
"MSISDN": str(msisdn),
"ProviderCode": int(provider_code),
"Amount": amount,
"Currency": currency, # Defaults to 840 (USD)
"AccountType": int(account_type),
"Quantity": quantity,
"Reference": str(reference),
"ProductCode": str(product_code)
}
if status == 1:
return jsonify({
"status": "success",
"statusCode": status_code,
"description": description,
"serial": response.get("Serial"),
"providerReference": response.get("ProviderReference")
}), 200
else:
return jsonify({
"status": "error",
"statusCode": status_code,
"description": description
}), 400
else:
return jsonify({"error": "Invalid response structure from Econet API"}),
500
@app.route("/api/value/deduct", methods=["POST"])
def deduct_value():
"""Deducts airtime value from a specified MSISDN."""
data = request.get_json()
msisdn = data.get("msisdn")
provider_code = data.get("provider_code")
amount = data.get("amount")
reference = data.get("reference")
# Validate amount
try:
amount = int(amount)
except ValueError:
return jsonify({"error": "Amount must be a valid integer"}), 400
api_params = {
"MSISDN": str(msisdn),
"ProviderCode": int(provider_code),
"Amount": amount,
"Reference": str(reference)
}
if status == 1:
return jsonify({
"status": "success",
"statusCode": status_code,
"description": description,
"serial": response.get("Serial"),
"providerReference": response.get("ProviderReference")
}), 200
else:
return jsonify({
"status": "error",
"statusCode": status_code,
"description": description
}), 400
else:
return jsonify({"error": "Invalid response structure from Econet API"}),
500
@app.route("/api/balance", methods=["POST"])
def account_balance_enquiry():
"""Enquires the balance of a specified MSISDN."""
data = request.get_json()
msisdn = data.get("msisdn")
provider_code = data.get("provider_code")
api_params = {
"MSISDN": str(msisdn),
"ProviderCode": int(provider_code)
}
@app.route("/api/msisdn/validate", methods=["POST"])
def validate_msisdn():
"""Validates a specified MSISDN."""
data = request.get_json()
msisdn = data.get("msisdn")
provider_code = data.get("provider_code")
api_params = {
"MSISDN": str(msisdn),
"ProviderCode": int(provider_code)
}
@app.route("/api/transaction/status", methods=["POST"])
def get_transaction_status():
"""Checks the status of a previously submitted transaction."""
data = request.get_json()
reference = data.get("reference")
api_params = {
"Reference": str(reference)
}
@app.route("/api/account/transfer", methods=["POST"])
def account_transfer():
"""Transfers funds between company accounts."""
data = request.get_json()
from_company_id = data.get("from_company_id")
to_company_id = data.get("to_company_id")
currency = data.get("currency", 840) # Default to USD (840) if not provided
amount = data.get("amount")
reference = data.get("reference")
api_params = {
"FromCompanyID": int(from_company_id),
"ToCompanyID": int(to_company_id),
"Currency": currency, # Defaults to 840 (USD)
"Amount": amount,
"Reference": str(reference)
}
if __name__ == "__main__":
app.run(debug=True)