/// <summary>
/// Create the XML needed to submit Charge request in order to charge a subscriber for a service
/// We used here the StringBuilder object instead of XML DOM in order to get better performance
/// </summary>
/// <param name="TimeStamp">date time in DDMMYYYYHHMMSS format </param>
/// <param name="SubsIdType">may be MSISDN or XID or IP</param>
/// <param name="SubsID">value must be according to SubsIdType</param>
/// <param name="ServiceCode">Service code</param>
/// <returns>Request XML</returns>
private string MakeChargeXml(string TimeStamp, string SubsIdType, string SubsID, string ServiceCode)
{
StringBuilder sb = new StringBuilder();
sb.Append("<MSG>");
sb.Append("<HEADER>");
sb.Append("<ACTION>Request</ACTION>");
sb.Append("<ACTION_TYPE>Send</ACTION_TYPE>");
sb.AppendFormat("<MSG_ID>{0}</MSG_ID>", Guid.NewGuid().ToString("N"));
sb.AppendFormat("<TRANSACTION_TS>{0}</TRANSACTION_TS>", TimeStamp);
sb.Append("</HEADER>");
sb.Append("<BODY>");
sb.Append("<REQUEST_TYPE>Charging</REQUEST_TYPE>");
sb.Append("<REQUEST_METHOD>Charge</REQUEST_METHOD>");
sb.AppendFormat("<SUBS_ID_TYPE>{0}</SUBS_ID_TYPE>", SubsIdType);
sb.AppendFormat("<SUBSCRIBER_ID>{0}</SUBSCRIBER_ID>", SubsID);
sb.AppendFormat("<SERVICE_CODE>{0}</SERVICE_CODE>", ServiceCode);
sb.Append("<REQUEST_PARAMS>");
sb.Append("<CHARGING_PARAMETER>");
sb.Append("<ITEMS>1</ITEMS>");
sb.Append("</CHARGING_PARAMETER>");
sb.Append("</REQUEST_PARAMS>");
sb.Append("</BODY>");
sb.Append("</MSG>");
return sb.ToString();
}