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); }
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; }