ConfirmPaymentResult.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using SinochemCloudClient.Models;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Wayne.Lib.StateEngine;
  8. using Wayne.Lib.StateEngine.Generic;
  9. namespace SinochemInternetPlusApp.EpsTrxCleanup.States
  10. {
  11. class ConfirmPaymentResult : State<EpsTrxCleanupManager>
  12. {
  13. protected override void Enter(StateEntry stateEntry, ref Transition transition)
  14. {
  15. base.Enter(stateEntry, ref transition);
  16. var needConfirmEpsTrxes = Main.GetNeedConfirmEpsTrxes();
  17. foreach (EpsTransaction trx in needConfirmEpsTrxes)
  18. {
  19. TrxStatusInquiryResponse response = Main.InquiryCloudTrxStatus(trx.Model);
  20. if (response != null)
  21. {
  22. if (response.IsSuccessful())
  23. {
  24. trx.UpdateTrxStatusToDb(EpsTrxStatus.PaymentOkButNeedRefund);
  25. }
  26. else if(!response.IsStatusUnknown())
  27. {
  28. trx.UpdateTrxStatusToDb(EpsTrxStatus.PaymentFailed);
  29. }
  30. }
  31. }
  32. transition = new Transition(this, TransitionType.ConfirmPaymentDone);
  33. }
  34. protected override void HandleEvent(StateEngineEvent stateEngineEvent, ref Transition transition)
  35. {
  36. base.HandleEvent(stateEngineEvent, ref transition);
  37. if (stateEngineEvent.Type is BasicTransitionType)
  38. {
  39. switch ((BasicTransitionType)stateEngineEvent.Type)
  40. {
  41. case BasicTransitionType.Error:
  42. transition = new Transition(this, BasicTransitionType.Error);
  43. stateEngineEvent.Handled = true;
  44. break;
  45. }
  46. }
  47. }
  48. }
  49. }