예제 #1
0
 public string ToXML(CreditVendResp feedback)
 {
     using (var stringwriter = new System.IO.StringWriter())
     {
         var serializer = new XmlSerializer(this.GetType());
         serializer.Serialize(stringwriter, this);
         return(stringwriter.ToString());
     }
 }
예제 #2
0
    public SageWoodResponse PaySageWoodElectricity(string MNo, string amount, string transactionId)
    {
        SageWoodResponse woodResponse = new SageWoodResponse();
        string           rawRequest;
        DatabaseHandler  dh = new DatabaseHandler();

        try
        {
            string    clientId     = "2019112800001";
            string    opName       = "UDEMO";
            string    password     = "******";
            string    meterno      = "14012018064";
            string    date         = DateTime.Now.ToString("yyyyMMddHHmmss").ToString();
            string    randomnumber = GenerateRandomNumber().ToString();
            MeterInfo custInfo     = new MeterInfo();
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback
                                                                          (delegate { return(true); });
            EANDeviceID deviceId = new EANDeviceID();
            deviceId.ean = clientId;
            GenericDeviceID genericDeviceID = new GenericDeviceID();
            genericDeviceID.id = clientId;
            PurchaseValueCurrency purchaseValue = new PurchaseValueCurrency();
            purchaseValue.amt        = new Currency();
            purchaseValue.amt.symbol = "UGX";
            purchaseValue.amt.value  = Decimal.Parse("10");
            Electricity electricity = new Electricity();
            MsgID       msg         = new MsgID();
            msg.dateTime     = DateTime.Now.ToString("yyyyMMddHHmmss").ToString();
            msg.uniqueNumber = randomnumber;
            AuthCred authCred = new AuthCred();
            authCred.opName      = opName;
            authCred.password    = password;
            authCred.newPassword = "";
            MsgID       messageId = msg;
            AuthCred    creds     = authCred;
            MeterDetail meter     = new MeterDetail();
            meter.msno = meterno;
            Cash pay = new Cash();
            pay.tenderAmt        = new Currency();
            pay.tenderAmt.symbol = "UGX";
            pay.tenderAmt.value  = Decimal.Parse("100");
            VendIDMethod vendIDMethod = new VendIDMethod();
            vendIDMethod.meterIdentifier = meter;
            CreditVendReq    request  = new CreditVendReq();
            XMLVendService21 sageWood = new XMLVendService21();
            request.clientID      = deviceId;
            request.msgID         = msg;
            request.authCred      = authCred;
            request.terminalID    = genericDeviceID;
            request.idMethod      = vendIDMethod;
            request.resource      = electricity;
            request.purchaseValue = purchaseValue;
            request.payType       = pay;
            rawRequest            = XmlCreditVend(request);
            CreditVendResp    response     = sageWood.CreditVendRequest(request);
            Tx                tx           = response.creditVendReceipt.transactions.tx[0];
            CreditVendTx      creditVendTx = (CreditVendTx)tx;
            CreditVendReceipt resp         = response.creditVendReceipt;
            STS1Token         sts1Token    = (STS1Token)creditVendTx.creditTokenIssue.token;
            woodResponse.Token     = sts1Token.stsCipher;
            woodResponse.ReceiptNo = response.creditVendReceipt.receiptNo;
            woodResponse.Units     = creditVendTx.creditTokenIssue.units.value.ToString();
            string rawResponse = XmlCreditVendResp(response);

            //log raw request and response
            dh.LogRequestAndResponse("SAGEWOOD", transactionId, rawRequest, rawResponse);
        }
        catch (SoapException soapException)
        {
            // XMLVendFaultResp xmlVendFaultResp = XMLDeserialize.Deserialize(soapException.Detail);

            // if (xmlVendFaultResp.fault.GetType() ==
            //typeof(UnknownMeterEx))
            // {
            //     Console.WriteLine("Unknown Meter Serial Number!");
            // }
            // else
            // {
            //     string fert = xmlVendFaultResp.fault.GetType().ToString();
            //     Console.WriteLine("Unexpected XMLVend Fault Response" +
            //                 "received: (" + xmlVendFaultResp.fault.GetType().ToString()
            //     + ")" + xmlVendFaultResp.fault.desc);
            // }
            dh.LogError(soapException.Detail.InnerXml, transactionId, DateTime.Now, "SAGEWOOD");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex);
            dh.LogError(ex.ToString(), transactionId, DateTime.Now, "SAGEWOOD");
        }
        return(woodResponse);
    }