Beispiel #1
0
        public override CallbackInfo ProcessCallback(Order order, HttpRequest request, IDictionary <string, string> settings)
        {
            CallbackInfo callbackInfo = null;

            try
            {
                order.MustNotBeNull("order");
                request.MustNotBeNull("request");
                settings.MustNotBeNull("settings");
                settings.MustContainKey("secretKey", "settings");

                //Write data when testing
                if (settings.ContainsKey("testMode") && settings["testMode"] == "1")
                {
                    LogRequest <Paynova>(request, logPostData: true);
                }

                PostbackDigest postbackDigest = new PostbackDigest(settings["secretKey"]);
                if (order.CartNumber == request.Form["ORDER_NUMBER"] && postbackDigest.Validate(request.Form))
                {
                    decimal amountAuthorized  = decimal.Parse(request.Form["PAYMENT_1_AMOUNT"], CultureInfo.InvariantCulture);
                    string  transaction       = request.Form["PAYMENT_1_TRANSACTION_ID"];
                    string  paymentType       = request.Form["PAYMENT_1_PAYMENT_METHOD_NAME"];
                    string  paymentIdentifier = request.Form["PAYMENT_1_CARD_LAST_FOUR"];

                    PaymentState?paymentState = null;
                    switch (request.Form["PAYMENT_1_STATUS"])
                    {
                    case "Pending":
                        paymentState = PaymentState.PendingExternalSystem;
                        break;

                    case "Completed":
                    case "PartiallyCompleted":
                        paymentState = PaymentState.Captured;
                        break;

                    case "Authorized":
                        paymentState = PaymentState.Authorized;
                        break;
                    }

                    if (paymentState != null)
                    {
                        callbackInfo = new CallbackInfo(amountAuthorized, transaction, paymentState.Value, paymentType, paymentIdentifier);
                    }
                }
                else
                {
                    LoggingService.Instance.Warn <Paynova>("Paynova(" + order.CartNumber + ") - digest check failed");
                }
            }
            catch (Exception exp)
            {
                LoggingService.Instance.Error <Paynova>("Paynova(" + order.CartNumber + ") - Process callback", exp);
            }

            return(callbackInfo);
        }
Beispiel #2
0
        public override CallbackInfo ProcessCallback( Order order, HttpRequest request, IDictionary<string, string> settings )
        {
            CallbackInfo callbackInfo = null;

              try {
            order.MustNotBeNull( "order" );
            request.MustNotBeNull( "request" );
            settings.MustNotBeNull( "settings" );
            settings.MustContainKey( "secretKey", "settings" );

            //Write data when testing
            if ( settings.ContainsKey( "testMode" ) && settings[ "testMode" ] == "1" ) {
              LogRequest<Paynova>( request, logPostData: true );
            }

            PostbackDigest postbackDigest = new PostbackDigest( settings[ "secretKey" ] );
            if ( order.CartNumber == request.Form[ "ORDER_NUMBER" ] && postbackDigest.Validate( request.Form ) ) {
              decimal amountAuthorized = decimal.Parse( request.Form[ "PAYMENT_1_AMOUNT" ], CultureInfo.InvariantCulture );
              string transaction = request.Form[ "PAYMENT_1_TRANSACTION_ID" ];
              string paymentType = request.Form[ "PAYMENT_1_PAYMENT_METHOD_NAME" ];
              string paymentIdentifier = request.Form[ "PAYMENT_1_CARD_LAST_FOUR" ];

              PaymentState? paymentState = null;
              switch ( request.Form[ "PAYMENT_1_STATUS" ] ) {
            case "Pending":
              paymentState = PaymentState.PendingExternalSystem;
              break;
            case "Completed":
            case "PartiallyCompleted":
              paymentState = PaymentState.Captured;
              break;
            case "Authorized":
              paymentState = PaymentState.Authorized;
              break;
              }

              if ( paymentState != null ) {
            callbackInfo = new CallbackInfo( amountAuthorized, transaction, paymentState.Value, paymentType, paymentIdentifier );
              }
            } else {
              LoggingService.Instance.Warn<Paynova>( "Paynova(" + order.CartNumber + ") - digest check failed" );
            }
              } catch ( Exception exp ) {
            LoggingService.Instance.Error<Paynova>( "Paynova(" + order.CartNumber + ") - Process callback", exp );
              }

              return callbackInfo;
        }