public override void Close()
 {
     tranPeach = null;
     base.Close();
 }
        private int PeachHTML(byte transactionType, Payment payment)
        {
            int    ret  = 10;
            string pURL = "https://test.oppwa.com/v1/registrations";
//			string tURL = "https://test-api.tokenex.com/TransparentGatewayAPI/Detokenize";
            string tURL = BureauURL;

            strResult  = "";
            payRef     = "";
            resultCode = "999.999.999";
            resultMsg  = "(999.999.999) Internal error";

            try
            {
                if (payment.ProviderURL.Length > 0)                    // The PAYMENT provider (Peach)
                {
                    pURL = payment.ProviderURL;
                }
                if (payment.TokenizerURL.Length > 0)                   // The TOKENIZER (TokenEx)
                {
                    tURL = payment.TokenizerURL;
                }
                if (tranPeach == null)
                {
                    tranPeach = new TransactionPeach();
                }

                tURL = tURL + "/TransparentGatewayAPI/Detokenize";

                Tools.LogInfo("PeachHTML/10", "URL=" + pURL + ", URL data=" + xmlSent, 221, this);

                ret = 20;
                byte[]         buffer  = Encoding.UTF8.GetBytes(xmlSent);
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(tURL);
                ret            = 30;
                request.Method = "POST";
                request.Headers["Authorization"] = "Bearer " + payment.ProviderKey;
                request.Headers["TX_URL"]        = pURL;
                request.Headers["TX_TokenExID"]  = payment.TokenizerID;                  // "4311038889209736";
                request.Headers["TX_APIKey"]     = payment.TokenizerKey;                 // "54md8h1OmLe9oJwYdp182pCxKF0MUnWzikTZSnOi";
                request.ContentType = "application/x-www-form-urlencoded";
                ret = 40;
                Stream postData = request.GetRequestStream();
                ret = 50;
                postData.Write(buffer, 0, buffer.Length);
                postData.Close();

                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    ret = 60;
                    Stream dataStream = response.GetResponseStream();
                    ret = 70;
                    StreamReader reader = new StreamReader(dataStream);
                    ret       = 80;
                    strResult = reader.ReadToEnd();
                    ret       = 90;
//					var s       = new JavaScriptSerializer();
//					xmlReceived = s.Deserialize<Dictionary<string, dynamic>>(reader.ReadToEnd());
                    reader.Close();
                    dataStream.Close();
                    ret                  = 100;
                    resultCode           = Tools.JSONValue(strResult, "code");
                    resultMsg            = Tools.JSONValue(strResult, "description");
                    ret                  = 110;
                    tranPeach.ResultCode = resultCode;
                    if (tranPeach.Successful)
                    {
                        ret = 0;
                    }
                    else
                    {
                        Tools.LogInfo("PeachHTML/110", "resultCode=" + resultCode + ", resultMsg=" + resultMsg, 221, this);
                    }
                }
            }
            catch (WebException ex1)
            {
                resultCode = ex1.Response.Headers["tx_code"];
                resultMsg  = ex1.Response.Headers["tx_message"];
                Tools.DecodeWebException(ex1, ClassName + ".PeachHTML/197", xmlSent);
            }
            catch (Exception ex2)
            {
                Tools.LogInfo("PeachHTML/198", "Ret=" + ret.ToString() + ", URL=" + pURL + ", XML Sent=" + xmlSent, 255, this);
                Tools.LogException("PeachHTML/199", "Ret=" + ret.ToString() + ", URL=" + pURL + ", XML Sent=" + xmlSent, ex2, this);
            }
            return(ret);
        }