Exemple #1
0
 public Card(string chName, RealExCardType type, string number, string expDate, Cvn cvn, string issueNo = null)
 {
     ChName  = chName;
     Type    = type;
     Number  = number;
     IssueNo = issueNo;
     Cvn     = cvn;
     ExpDate = expDate;
 }
        public void ThreeDSecureSigRequestXmlWithSettersTest()
        {
            Card card = new Card();

            card.ExpiryDate     = sx.CARD_EXPIRY_DATE;
            card.Number         = sx.CARD_NUMBER;
            card.Type           = CardType.VISA;
            card.CardHolderName = sx.CARD_HOLDER_NAME;
            card.IssueNumber    = sx.CARD_ISSUE_NUMBER;

            Cvn cvn = new Cvn();

            cvn.Number            = sx.CARD_CVN_NUMBER;
            cvn.PresenceIndicator = sx.CARD_CVN_PRESENCE;
            card.Cvn = cvn;

            ThreeDSecureRequest request = new ThreeDSecureRequest();

            request.Account    = sx.ACCOUNT;
            request.MerchantId = sx.MERCHANT_ID;

            RxpAmount amount = new RxpAmount();

            amount.Amount   = sx.AMOUNT;
            amount.Currency = sx.CURRENCY;
            request.Amount  = amount;

            request.Card      = card;
            request.Timestamp = sx.TIMESTAMP;
            request.OrderId   = sx.ORDER_ID;
            request.Pares     = sx.THREE_D_SECURE_PARES;
            request.Hash      = sx.THREE_D_SECURE_VERIFY_SIG_REQUEST_HASH;
            request.Type      = ThreeDSecureType.VERIFY_SIG;

            //convert to XML
            string xml = request.ToXml();

            //Convert from XML back to PaymentRequest
            ThreeDSecureRequest fromXmlRequest = new ThreeDSecureRequest().FromXml(xml);

            sx.checkUnmarshalledVerifySigRequest(fromXmlRequest);
        }
        public void PaymentRequestXmlHelpersTest()
        {
            var cvn = new Cvn()
                      .AddNumber(sx.CARD_CVN_NUMBER)
                      .AddPresenceIndicator(sx.CARD_CVN_PRESENCE);

            var card = new Card()
                       .AddExpiryDate(sx.CARD_EXPIRY_DATE)
                       .AddNumber(sx.CARD_NUMBER)
                       .AddType(CardType.VISA)
                       .AddCardHolderName(sx.CARD_HOLDER_NAME)
                       .AddIssueNumber(sx.CARD_ISSUE_NUMBER);

            card.Cvn = cvn;

            var tssInfo = new TssInfo()
                          .AddCustomerNumber(sx.CUSTOMER_NUMBER)
                          .AddProductId(sx.PRODUCT_ID)
                          .AddVariableReference(sx.VARIABLE_REFERENCE)
                          .AddCustomerIpAddress(sx.CUSTOMER_IP)
                          .AddAddress(new Address()
                                      .AddType(sx.ADDRESS_TYPE_BUSINESS)
                                      .AddCode(sx.ADDRESS_CODE_BUSINESS)
                                      .AddCountry(sx.ADDRESS_COUNTRY_BUSINESS))
                          .AddAddress(new Address()
                                      .AddType(sx.ADDRESS_TYPE_SHIPPING)
                                      .AddCode(sx.ADDRESS_CODE_SHIPPING)
                                      .AddCountry(sx.ADDRESS_COUNTRY_SHIPPING));

            var request = new PaymentRequest()
                          .AddAccount(sx.ACCOUNT)
                          .AddMerchantId(sx.MERCHANT_ID)
                          .AddType(PaymentType.AUTH)
                          .AddAmount(sx.AMOUNT)
                          .AddCurrency(sx.CURRENCY)
                          .AddCard(card)
                          .AddAutoSettle(sx.AUTO_SETTLE_FLAG)
                          .AddTimestamp(sx.TIMESTAMP)
                          .AddChannel(sx.CHANNEL)
                          .AddOrderId(sx.ORDER_ID)
                          .AddHash(sx.REQUEST_HASH)
                          .AddComment(sx.COMMENT1)
                          .AddComment(sx.COMMENT2)
                          .AddPaymentsReference(sx.PASREF)
                          .AddAuthCode(sx.AUTH_CODE)
                          .AddRefundHash(sx.REFUND_HASH)
                          .AddFraudFilter(sx.FRAUD_FILTER)
                          .AddRecurring(new Recurring()
                                        .AddFlag(sx.RECURRING_FLAG)
                                        .AddSequence(sx.RECURRING_SEQUENCE)
                                        .AddType(sx.RECURRING_TYPE))
                          .AddTssInfo(tssInfo)
                          .AddMpi(new Mpi()
                                  .AddCavv(sx.THREE_D_SECURE_CAVV)
                                  .AddXid(sx.THREE_D_SECURE_XID)
                                  .AddEci(sx.THREE_D_SECURE_ECI));


            string xml = request.ToXml();

            PaymentRequest fromXmlRequest = new PaymentRequest().FromXml(xml);

            sx.checkUnmarshalledPaymentRequest(fromXmlRequest);
        }
        public void PaymentRequestXmlSettersTest()
        {
            Card card = new Card();

            card.ExpiryDate     = sx.CARD_EXPIRY_DATE;
            card.Number         = sx.CARD_NUMBER;
            card.Type           = CardType.VISA;
            card.CardHolderName = sx.CARD_HOLDER_NAME;
            card.IssueNumber    = sx.CARD_ISSUE_NUMBER;

            Cvn cvn = new Cvn();

            cvn.Number            = sx.CARD_CVN_NUMBER;
            cvn.PresenceIndicator = sx.CARD_CVN_PRESENCE;
            card.Cvn = cvn;

            PaymentRequest request = new PaymentRequest();

            request.Account    = sx.ACCOUNT;
            request.MerchantId = sx.MERCHANT_ID;
            request.Type       = PaymentType.AUTH;

            RxpAmount amount = new RxpAmount();

            amount.Amount   = sx.AMOUNT;
            amount.Currency = sx.CURRENCY;
            request.Amount  = amount;

            AutoSettle autoSettle = new AutoSettle();

            autoSettle.Flag = sx.AUTO_SETTLE_FLAG;

            request.AutoSettle = autoSettle;
            request.Card       = card;
            request.Timestamp  = sx.TIMESTAMP;
            request.Channel    = sx.CHANNEL;
            request.OrderId    = sx.ORDER_ID;
            request.Hash       = sx.REQUEST_HASH;

            List <RxpComment> comments = new List <RxpComment>();
            RxpComment        comment  = new RxpComment();

            comment.Id      = 1;
            comment.Comment = sx.COMMENT1;
            comments.Add(comment);
            comment         = new RxpComment();
            comment.Id      = 2;
            comment.Comment = sx.COMMENT2;
            comments.Add(comment);
            request.Comments = comments;

            request.PaymentsReference = sx.PASREF;
            request.AuthCode          = sx.AUTH_CODE;
            request.RefundHash        = sx.REFUND_HASH;
            request.FraudFilter       = sx.FRAUD_FILTER;

            Recurring recurring = new Recurring();

            recurring.Flag     = sx.RECURRING_FLAG;
            recurring.Sequence = sx.RECURRING_SEQUENCE;
            recurring.Type     = sx.RECURRING_TYPE;
            request.Recurring  = recurring;

            TssInfo tssInfo = new TssInfo();

            tssInfo.CustomerNumber    = sx.CUSTOMER_NUMBER;
            tssInfo.ProductId         = sx.PRODUCT_ID;
            tssInfo.VariableReference = sx.VARIABLE_REFERENCE;
            tssInfo.CustomerIpAddress = sx.CUSTOMER_IP;

            List <Address> addresses = new List <Address>();
            Address        address   = new Address();

            address.Type    = sx.ADDRESS_TYPE_BUSINESS;
            address.Code    = sx.ADDRESS_CODE_BUSINESS;
            address.Country = sx.ADDRESS_COUNTRY_BUSINESS;
            addresses.Add(address);

            address         = new Address();
            address.Type    = sx.ADDRESS_TYPE_SHIPPING;
            address.Code    = sx.ADDRESS_CODE_SHIPPING;
            address.Country = sx.ADDRESS_COUNTRY_SHIPPING;
            addresses.Add(address);

            tssInfo.Addresses = addresses;
            request.TssInfo   = tssInfo;

            Mpi mpi = new Mpi();

            mpi.Cavv    = sx.THREE_D_SECURE_CAVV;
            mpi.Xid     = sx.THREE_D_SECURE_XID;
            mpi.Eci     = sx.THREE_D_SECURE_ECI;
            request.Mpi = mpi;

            //convert to XML
            string xml = request.ToXml();

            //Convert from XML back to PaymentRequest
            PaymentRequest fromXmlRequest = new PaymentRequest().FromXml(xml);

            sx.checkUnmarshalledPaymentRequest(fromXmlRequest);
        }
Exemple #5
0
        public async Task <object> addcardAsync(Payvisa visa)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                string Card       = visa.CARD_NUMBER;
                string Expire     = visa.EXPIRES;
                string cvv        = visa.CVV_NUM;
                string Name       = visa.CH_NAME;
                string MerchantID = "globaltmstest";
                string Secret     = "secret";
                string OrderRef   = visa.ORDER_REF_NO;
                long   Userid     = visa.USER_ID;
                //await Task.Delay(10000);
                //TB_ECOMM_ORDER order = await entity.TB_ECOMM_ORDER.FindAsync(OrderID);
                string   Amount     = Convert.ToInt32(visa.AMOUNT).ToString();
                string   Cur        = "EUR";
                DateTime DateTime   = Convert.ToDateTime(visa.DATE_TIME);
                string   TimeStamp  = CreateTimeStamp(DateTime).Result.Remove(14);
                string   hashFormat = TimeStamp + "." + MerchantID + "." + OrderRef + "." + Amount + "." + Cur + "." + Card;
                string   sha1hash   = await GenerateSHA1HASH(hashFormat, Secret);


                //Generating XML
                Payment payment = new Payment();
                payment.Type       = "auth";
                payment.Timestamp  = TimeStamp;
                payment.Merchantid = MerchantID;
                payment.Orderid    = OrderRef;

                Amount amount = new Amount();
                amount.Currency = Cur;
                amount.Text     = Amount;
                payment.Amount  = amount;

                Card card = new Card();
                card.Number  = Card;
                card.Expdate = Expire;
                card.Chname  = Name;
                card.Type    = "VISA";
                payment.Card = card;

                Cvn cvn = new Cvn();
                cvn.CNumber      = cvv;
                cvn.Presind      = "1";
                payment.Card.Cvn = cvn;


                Autosettle autosettle = new Autosettle();
                autosettle.Flag    = "1";
                payment.Autosettle = autosettle;
                payment.Sha1hash   = sha1hash;

                string xml = await GetXMLFromObject(payment);

                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml);

                //Api call for request payment
                var uri     = new Uri(string.Format("https://remote.sandbox.addonpayments.com/remote", string.Empty));
                var content = new StringContent(xml, Encoding.UTF8, "application/xml");
                var client  = new HttpClient();
                HttpResponseMessage response = null;
                response = await client.PostAsync(uri, content);

                var contents = await response.Content.ReadAsStringAsync();

                XmlSerializer serializer           = new XmlSerializer(typeof(Response), new XmlRootAttribute("response"));
                StringReader  stringReader         = new StringReader(contents);
                Response      re                   = (Response)serializer.Deserialize(stringReader);
                TB_ECOMM_PAYMENT_STATUS_DETAILS PS = new TB_ECOMM_PAYMENT_STATUS_DETAILS();
                if (re.Result == "00")
                {
                    PS.ACCOUNT              = re.Account;
                    PS.AUTH_CODE            = re.Authcode;
                    PS.AVS_ADDRESS_RESPONSE = re.Avsaddressresponse;
                    PS.BANK_COUNTRY         = re.Cardissuer.Country;
                    PS.BANK_NAME            = re.Cardissuer.Bank;
                    PS.BATCH_ID             = re.Batchid;
                    PS.COUNTRY_CODE         = re.Cardissuer.Countrycode;
                    PS.CREATED_DATE         = DateTime.Now;
                    PS.CVN_RESULT           = re.Cvnresult;
                    PS.MERCHANT_ID          = re.Merchantid;
                    PS.MESSAGE              = re.Message;
                    PS.MODIFIED_DATE        = DateTime.Now;
                    PS.ORDER_ID             = re.Orderid;
                    PS.PAYMENT_REF_NUMBER   = re.Pasref;
                    PS.REGION    = re.Cardissuer.Region;
                    PS.RESULT    = re.Result;
                    PS.SHA_HASH  = re.Sha1hash;
                    PS.TIMESTAMP = re.Timestamp;
                    PS.USER_ID   = Userid;
                    entity.TB_ECOMM_PAYMENT_STATUS_DETAILS.Add(PS);
                    await entity.SaveChangesAsync();

                    TB_ECOMM_ORDER TO = (from o in entity.TB_ECOMM_ORDER where o.ORDER_REF_NO == re.Orderid select o).FirstOrDefault();
                    //TB_ECOMM_ORDER TO = entity.TB_ECOMM_ORDER.Find(Convert.ToInt64(visa.ORDER_REF_NO));
                    TO.ORDER_STATUS = "Paid";
                    await this.entity.SaveChangesAsync();

                    return(new PaymentResponse {
                        Message = "Transaction Success", ORDER_REF_NO = OrderRef.ToString(), STATUS = re.Result
                    });
                }
                else if (re.Result == "101")
                {
                    PS.ACCOUNT              = re.Account;
                    PS.AUTH_CODE            = re.Authcode;
                    PS.AVS_ADDRESS_RESPONSE = re.Avsaddressresponse;
                    PS.BANK_COUNTRY         = re.Cardissuer.Country;
                    PS.BANK_NAME            = re.Cardissuer.Bank;
                    PS.BATCH_ID             = re.Batchid;
                    PS.COUNTRY_CODE         = re.Cardissuer.Countrycode;
                    PS.CREATED_DATE         = DateTime.Now;
                    PS.CVN_RESULT           = re.Cvnresult;
                    PS.MERCHANT_ID          = re.Merchantid;
                    PS.MESSAGE              = re.Message;
                    PS.MODIFIED_DATE        = DateTime.Now;
                    PS.ORDER_ID             = re.Orderid;
                    PS.PAYMENT_REF_NUMBER   = re.Pasref;
                    PS.REGION    = re.Cardissuer.Region;
                    PS.RESULT    = re.Result;
                    PS.SHA_HASH  = re.Sha1hash;
                    PS.TIMESTAMP = re.Timestamp;
                    PS.USER_ID   = Userid;
                    entity.TB_ECOMM_PAYMENT_STATUS_DETAILS.Add(PS);
                    await entity.SaveChangesAsync();

                    TB_ECOMM_ORDER TO = (from o in entity.TB_ECOMM_ORDER where o.ORDER_REF_NO == re.Orderid select o).FirstOrDefault();
                    TO.ORDER_STATUS = "Pay Declined";
                    await this.entity.SaveChangesAsync();

                    return(new PaymentResponse {
                        Message = "Transaction Declined", ORDER_REF_NO = OrderRef.ToString(), STATUS = re.Result
                    });
                }
                else
                {
                    TB_ECOMM_ORDER TO = (from o in entity.TB_ECOMM_ORDER where o.ORDER_REF_NO == re.Orderid select o).FirstOrDefault();
                    TO.ORDER_STATUS = "Pay Failed";
                    await this.entity.SaveChangesAsync();

                    return(new PaymentResponse {
                        Message = "Transaction Failed", ORDER_REF_NO = OrderRef.ToString(), STATUS = re.Result
                    });
                    //return contents;
                }
            }
            catch (DbEntityValidationException ex)
            {
                foreach (var entityValidationErrors in ex.EntityValidationErrors)
                {
                    foreach (var validationError in entityValidationErrors.ValidationErrors)
                    {
                        throw new Exception("Error" + validationError.ErrorMessage);
                        //return new ApiResponse { Status = "Error", Message = validationError.ErrorMessage };
                    }
                    throw new Exception("Error" + entityValidationErrors.ValidationErrors);
                }
                throw new Exception("Error" + ex.Message);
            }
        }