From 08c219db80de5052877b47d73281b50724642023 Mon Sep 17 00:00:00 2001 From: Sathishkumar Date: Mon, 3 Jun 2019 18:54:28 +0530 Subject: [PATCH] Socioboard 3.0.57 --- .gitignore | 3 + .vs/Socioboard/v14/.suo | Bin 454656 -> 51200 bytes .vs/config/applicationhost.config | 1097 ----------------- .vs/restore.dg | 10 - .../PaymentTransactionController.cs | 14 + src/Socioboard/Controllers/HomeController.cs | 26 +- src/Socioboard/Controllers/IndexController.cs | 28 +- .../Controllers/PaymentController.cs | 168 ++- src/Socioboard/Helpers/AppSettings.cs | 13 + src/Socioboard/Helpers/Payment.cs | 272 ++++ src/Socioboard/appsettings.json | 15 + 11 files changed, 497 insertions(+), 1149 deletions(-) delete mode 100644 .vs/config/applicationhost.config delete mode 100644 .vs/restore.dg diff --git a/.gitignore b/.gitignore index e9fdf56c2..b709d07ef 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ /bin /obj *.xml +src/Api.Socioboard/obj/ +src/Api.Socioboard/bin/ +*.rsp diff --git a/.vs/Socioboard/v14/.suo b/.vs/Socioboard/v14/.suo index 761dedd779e7390c223530f431c387aef6b8fa3a..6412b07bfaf0e03755a3f5e3a2c54a9bb2f88d27 100644 GIT binary patch literal 51200 zcmeHQ4Uikvec!VUwy^^kj7bcIBXNPiN!6XcZH%pxboTih-`S?ITwB)don_0?q1721 z83jWbC@+X;|Nnn^p!K$>Z%Go3OSW||o?f&PAP z^|Y(Km9&!fe0TA#<}dBX+xP#!|JVD!w{QP??bQ`;JpKIYHx+YZR2c^LaqOj)lPzkgzr0FW&~qbBK^+Ah^;hkW&Q#0u zs>DyclS%;;lob^)0$yYRs(lr;vuj`hW^vapG}#%!wR4N~0y~u{U@0hhw4X3x!kogH za+7*^3HW=6pLWRK7RANoWB86$@!yI4U-QQ5Mq8e18%gy8eg{DM?!a#V-~;pl1^_`o z2oMHD08u~;5C^OUtOMKySP%F;zy`oZKmsrbNCHxTG++p@39uP34A=r7-fj5Z4%h+M z2^a-fd9?@U?lqnNUF`3#9-Dc45a$k?%9*cO>zv8si)sJLqECO9_WwS#+p~W#0h=54 z&wh6afO^6@TWx0hm%7D%o_>IONPAlfSO(zn75H5YSPmebD*;yl=yO*9t^r&NSP8fe zunKTJ;QfFP01g0d0MJkW7T_kp&46COEr1UKJ_J|;_-(+g0OGwJzq&T zK7Fr=)_vIji0L>}-DkTFna*di&vV}9abPw$K;0uOgdWoFF9XmQ(B5h5^aHei`U2WN zeYdoKc`tuy|NOPHf5wIF+W&31hxX4g2K#%)DeUXn=gU}tF#uypC;h*qmHofm=WhbX zPWu0?C}-{e>6@hevo6L1?EmQpX#b1@*#FZHFb1Fxpf6Q~*Dfwhf}Dl5!07W>L>E zQ}l@&9BemM<4^j2R_fpuMEkmIS#}h7HQ?QbSXV;}MwBBW2Csl4jEvc?W*g(*1t`Ei z$0`0i%2Kzv?FEKW!Gi+iPy)|JMErjO^yFGb|LnUKhVb}(F>W4uHzw*G0p=noDB+i9$|gLr zy!99D7j2<`aN2$|{z0@l2l-C`TL}^`0`oTPW$~NBH%DR3wp*+EN8H?+m6g{vV&}1{ z07gV>scCua6>EGZH3dXxleH@b&t*OQ^>@Jk4Y=>>Y9(^~sY`hjT$lpaE4A@(Sy-l| zu6mQ{Cjk8P-FoYtwcpJDBJfQ>*7O~nY|A@nKkYR`qOt7*-zoDFJl1x|npQx1%HZrS zajl4>F=%BOSB_)9UJen+pM4AaE2r}BL0Q@>w*(~2aX+n{+NNs(XCpN1Prw_Qtxdnj z{C#@|?dScBncdo??47pXj5h_&)6blF)tjz#7iv!R`B}QK6S>^xet) zmzn>2pmm&eqraz}*ZV^|jjN}G{SVtMxB9F0NA2KmH6JPaAI80;!5(A%*>>=!z?Bn- zazpi1)Q+V7b=rQ`e^~SZy4T$&ykHJ~&+2JwDC>55JK+D_sDbe!H!J=@*ntWfj=?LJ zppo^_j((5%8~(S4^9h`1aLWI?Pq%J z{EYwDAJQ+;|FnuhrT(=efAaouIxK9B@t;DUz=)Wmj>a4DbFPPDLZ|IF>%SHMcJTf< zu<|*Cxi4zu384SN|8b1!6hHflQ2;k9etZ2hQ=;D|zeB)(Ee<%ZrGA-DpO^3eNmmNl(U7t-d$6N z3;Enu_0(wTm|9$aI1n5Uk4MM*`^Un8Y%qHn>%U1bIQFcywv$AXcN8VnyeK#477 zJimxv9)qSah-_J0)#4?|((%b`SuHQwoYjtu#;6>F^_pfWh?iRgGj$onu^dNn?5qLCQBSXkD>c+^ zPYds*{#dte&YeWu?35mfmp=JpfL878#jIpI_47G$Bi?63UvK8UqC7I|G_)uGndQfE z=n?r-7Wz2*ywMPqXmf;?3SxAfFBe~LY2)+}8h&$vA5MIQySieffu3m$b|0E0`AnyW zb9bEc|D%g;(^gt?B7T%-73Gt&PEj5!Ht40vpT}pN8h!oEF>s0FzS**HDIaN790e5S z2!~F<&Z$LZP?X2GkaBxs*5yX3IAhLPf;_B^@yl%38)uFSz&|d$p_HFIo;wujbj}4H zah9V#@`2#Q_VyPO*F73MCj(1PY_9#U=O%CYz*{?B+R-=q%1_Hr@fzXmj);tn#XT&0 z$HFiEB-x`4{=t2pJD2@I_KdlnxBmBQg|BXy*!0PNee);JjSoD5YrM?)sI-W4H$jWo zuTBXK=NwE9XG&rogwIFE@cfyxw49^z!Gq~>G;YUsF2DWHf3aW-E9Aon(00SK+Mf-6 zq1qm68>)0l@>ql11Z|Z^UVQY{;b)SM{rk`ENc_izzqxJYcaMGN$kO4jJoM84eEYzL zA6++i^h@vj>cgCOA#h_|FRf3nNIdy3$@@Ou_rh5Rv>?vDLiyWg##ev&mAg_;ZQcKo zr=I`Rf0~K$ZNIWg%U&rGP~zYCtKD|n;kL@ftQ$wRDB+L()uY?~ z_~C)l>uZ+&ej^@O?Z`@}l_yr5Y^(bA)YA_i`2MDkUpN~5e)^|x5f>*JTk*SH9$0Z( zd1BQ;()MQM-Di?tdu_#YtCcUja@Bj^l03qt>6<>sfK`BY?$<9CiWKp9fDeoCnD$Qi z8?HS-l~*e_@)piy$Y*xFD8e-p97pyvzkIpgYxgMCojVdha00Uy?5BvV{^=Z7iLgiD zlM<|KovADyon0y*NB4kg^m=cXDqu##eH;|Wd zVG$o_#EjxxhowgtTm`{3K-4fk3F1xlYm#_tz_^vHXK1n;jnirm%ctLR8*GG@N5HHj z=k;bnfi#d~RYO1K%qBr3-}E5*&-ct6{zeKs3BK}~mcGuxu9P2iYhnc-Y1|yZB&qr1 zs~t7pGvCAg>SkZ(h_YtcuM>AZ`ts)I|Lredz4qCCS8Y>X`{pn1edL4RNdNWPALc&$ z%aeSxgl$BLjjz1$?uDDSed$lfo;!QfTk%FE6~+1eocG)=G?+e%?>D)0jg}VC){j_W)K;21QgH$59GwuPos9XXj_MxxJuN$8vSrcs_=|lU!p2!fT0Kr>;-pr!OHv?EpzoBS9%`7 z9@iY2WzJP{?$TpC>ur~okf5a>R0bj4kdS^<$U2Btg@qRj@Ry#{iI2XlCJ{HWx*-ua>FHJ??2QJ&Q(A*=4?$==`(sLkoTn#?K?*7Cv)7~~ zC`IxJgg95@BD!SR^LwASC2KuSM?DQW#Y+qM#fY(J+po zEwL|Q^pg}v&b-#*nnc{h>V`zzq^DbnkhhFx8RN0H_6ZAN{6>lJEMq+SsgT$U;X0pR z(a&)&jo*IM;KW9j)+FL4RyQQ#COzFsBrLR_@l&A6^C57bkv}Cue?}=W_M%jL;5~g5 zy%yu{e%!@qJ>ftiD=@N=v6h=y-H?cz^mHo`Mp4vt_6dxlD2FhP^)Vl#Tt;0S?7$m{CYfxB`v*>qOO(Je$bweU<($lR(!jMN2(n!Gq*rRh~%GgUE57RE_zx1(o z0DD1{NkSq6xML6&k_1E`FDG8>ikd{+#Oj7b+@z;liA2y7Fw#na%K_0-un(c;(;niG z0Bs~8tb+Z11f@7HLHW^tF$N0*oJiz-HHo;1)eVWbNl*6@(IYL6K{!K1p2vjM=n~PT zL~Eej^s!k^Sly9`d-QZGks$cWX;ErBWkGw;Er1eXRLmYF zj&q!Kqt{|&OexTFF&>EHiZidpxkG(k%T26qNW@Kgx|In15#uSncW2K|&DXil5n@XC zFZSacdC-E`%joAB18^pVBTFYXvb-h{H?g`Q5jW}SULphFC;Jl4VzJMlh3K;=jI&a( z0@@9)v5%)cao&;hS{#w^lZ1?%NQ5@Rw`UTVhvhSX6PT+_Vs4fh2sqQsj1P_5v(A&h z@JjVo(3oGXX1(>9X3hXy9QpG-T)w}wSoyo2)Y7f6Q^pd%Ua#bS|!FAxb0 z#DalvC=v}lcwrW)&XtOlGT#C+C^t^|owwoq9BBhyd{R$#)PjGQBP}>mI<9uqfFH{S zg!@y$P#_fd4Ml@dUuZBI_9eoJs4o%^r4o^${=h&ep(}r4GVeDTK>eX(Bgmo_lOY(y z*Ng$Lw-vRlc(2U3+J<(0T{g|uuK6w|fy?%|mXb@fxMYV*7`c3iuZgmE;2Img>*wYF zG4lWI0zd8n>;{mBqxhX~`G36pFZCBJwXVesHS)X8+^me`%ioh9gNY z{|l6>!RFN0%b2Os^FJB+hrIkhM*b-;|4#!`7IOlOzdPP|GYwZ(;^qIb z%Vy-||7nr#X-+eU!SO8Q|6xw6R{5W3x9w%ts?Yx<&9>A0PsHC%t{=O5+ewf`{M@|! zKb_@&ayO@oH7kIZ|3~KOnw~4l%l}iKgUHMOW9W)ClZ^hhqde>7|B;-KuR?qIf4Dx* z$O_2U!0WBc%m33XkDr(Sr&XTGjCj-2$dP32>Gdd#-_7_uT`T2tluq+MF@AL?|Bul& z=~bNMf0FUD(SH8tjq^;J*8D$uR!=LpB}LQoKY96ozpci651*{RhfpZ|wxb*5)zLjI?j$^T=E%{Kp&m;Xm*J8G15$jyv6&2t@j z`G36pKavAp{-5UAq4f7;+{}E_+%~ylQ@%^+CRR7zTyv8iV?9V`IkMc$eA7xIUj82^ zHsWUHn^qF>^8YxIh?|*jT1mvq|Kmg=Zf3q|B@r+Gj}wWwnfa!IB3}Lc=>;vN#tVXf5FpPFaHmCa2olK+{=R1ZDi-=|MBwwT%62H zMoJkiY~*mjrv^h|AF|uUeDTQGxG$_` z$Aj^Zssv*+H$5}Z&|37;vdCdZ>x)9@38$tZaU3yMm!<=yQ_Kv&pnXk=- z&b)^SAH>#oemV9Bv7efoDP|j{WHy9d%S3CO^5ow%8lOk<7x}ikO)-3P)hb7gRK<1X zo@s6F_34xAI^Wr>+y!Tlthxe4={?Vk!ORqznlquTCx5|#MwS}Lrv>&YN$;nH;o>2-T7hNVwKeVoLax48q6So-r&qYEzEWAeqAt@ z>OJ|J{+6cU*r@ZVwK*sMuAVyFQp>)#{QT`0=kkvT7~W#Hy44-|m7@yZ4lY)Ud=rl; z)?jd4{|^M3(yQzh|7g`OG7|NRs+gCzj9l3KKR7*4k^UMx|EJ_nP|sTAOxc8guVPlT zDZIa&!JDG0H!?Zw$nGK`ZEfx%7RJ_-}=9>QR|v%6(1LU z#sv;ieADfuG2NR{np!VuyZ2T8JCGu@PfC|5Kb&q(?Y~id%=`UW7x>UflVm&f|AR5? ze;D!^L#t2LIAJa!IWhOW6Ztw_{?08<%HQgRXcdzpN!j@N~hX6GcmYe6xbmGasTMeAw(TTnMoku5jeR6$t@^UP3Zo%LG g{GCIk>%Vcs*Z+@y&2>p_PDVGg7oB?YpJ`?Me@Mx1vH$=8 literal 454656 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

vY3Ozg2V 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 c#*HUZu - - - - - - -

-
-
-
-
-
-
-
- - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
- -
-
-
- -
-
- -
-
- -
-
-
- - -
-
-
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.vs/restore.dg b/.vs/restore.dg deleted file mode 100644 index a9dc0b43a..000000000 --- a/.vs/restore.dg +++ /dev/null @@ -1,10 +0,0 @@ -#:E:\Github\Socioboard-Core-3.0\src\Socioboard\Socioboard.xproj -E:\Github\Socioboard-Core-3.0\src\Socioboard\Socioboard.xproj|E:\Github\Socioboard-Core-3.0\src\Socioboard.Facebook\Socioboard.Facebook.xproj -E:\Github\Socioboard-Core-3.0\src\Socioboard\Socioboard.xproj|E:\Github\Socioboard-Core-3.0\src\Socioboard.Pinterest\Socioboard.Pinterest.xproj -E:\Github\Socioboard-Core-3.0\src\Socioboard.Facebook\Socioboard.Facebook.xproj|E:\Github\Socioboard-Core-3.0\src\Domain.Socioboard\Domain.Socioboard.xproj -#:E:\Github\Socioboard-Core-3.0\src\AdvancedContentSearch\AdvancedContentSearch.xproj -E:\Github\Socioboard-Core-3.0\src\AdvancedContentSearch\AdvancedContentSearch.xproj|E:\Github\Socioboard-Core-3.0\src\Socioboard\Socioboard.xproj -E:\Github\Socioboard-Core-3.0\src\AdvancedContentSearch\AdvancedContentSearch.xproj|E:\Github\Socioboard-Core-3.0\src\Socioboard.Instagram\Socioboard.Instagram.xproj -E:\Github\Socioboard-Core-3.0\src\Socioboard\Socioboard.xproj|E:\Github\Socioboard-Core-3.0\src\Socioboard.Facebook\Socioboard.Facebook.xproj -E:\Github\Socioboard-Core-3.0\src\Socioboard\Socioboard.xproj|E:\Github\Socioboard-Core-3.0\src\Socioboard.Pinterest\Socioboard.Pinterest.xproj -E:\Github\Socioboard-Core-3.0\src\Socioboard.Facebook\Socioboard.Facebook.xproj|E:\Github\Socioboard-Core-3.0\src\Domain.Socioboard\Domain.Socioboard.xproj diff --git a/src/Api.Socioboard/Controllers/PaymentTransactionController.cs b/src/Api.Socioboard/Controllers/PaymentTransactionController.cs index 10ffdd751..4d9cf29d7 100644 --- a/src/Api.Socioboard/Controllers/PaymentTransactionController.cs +++ b/src/Api.Socioboard/Controllers/PaymentTransactionController.cs @@ -77,6 +77,20 @@ public IActionResult GetPaymentTransactiondata(long id) } + /// + /// + /// + /// + /// + [HttpGet("GetUserPaymentProfiles")] + public IActionResult GetUserPaymentProfiles(Int64 id) + { + var dbr = new DatabaseRepository(_logger, _appEnv); + var payments = dbr.Find(t => t.userid == id); + var filterPayment = payments.ToList().OrderByDescending(x => x.paymentdate).FirstOrDefault(); + return Ok(filterPayment); + } + /// /// /// diff --git a/src/Socioboard/Controllers/HomeController.cs b/src/Socioboard/Controllers/HomeController.cs index df6a76514..4c96cd9b8 100644 --- a/src/Socioboard/Controllers/HomeController.cs +++ b/src/Socioboard/Controllers/HomeController.cs @@ -917,11 +917,13 @@ public async Task PayPalAccount(string emailId, bool isLogin) HttpContext.Session.SetObjectAsJson("paymentsession", true); if (user.PaymentType == Domain.Socioboard.Enum.PaymentType.paypal) - return Redirect(Payment.PaypalRecurringPayment(sessionPackage.amount, - sessionPackage.packagename, user.FirstName + " " + user.LastName, user.PhoneNumber, - user.EmailId, "USD", _appSettings.paypalemail, _appSettings.callBackUrl, - _appSettings.failUrl, _appSettings.callBackUrl, _appSettings.cancelurl, - _appSettings.notifyUrl, "", _appSettings.PaypalURL, user.Id)); + { + + var payment = new Payment(_appSettings); + var redirect = await payment.PaypalExpressPayment(sessionPackage.amount, "USD", sessionPackage.packagename, user.EmailId, user.Id, Guid.NewGuid().ToString()); + return Redirect(redirect); + } + return RedirectToAction("paymentWithPayUMoney", "Index", new { contesnt = false }); @@ -1228,8 +1230,13 @@ public async Task BluesnapAccount(string emailId, bool IsLogin) if (user.PaymentType == Domain.Socioboard.Enum.PaymentType.paypal) { HttpContext.Session.SetObjectAsJson("paymentsession", true); - string paypalUrl = Helpers.Payment.PaypalRecurringPayment(_Package.amount, _Package.packagename, user.FirstName + " " + user.LastName, user.PhoneNumber, user.EmailId, "USD", _appSettings.paypalemail, _appSettings.callBackUrl, _appSettings.failUrl, _appSettings.callBackUrl, _appSettings.cancelurl, _appSettings.notifyUrl, "", _appSettings.PaypalURL, user.Id); - return Content(paypalUrl); + + var payment = new Payment(_appSettings); + + var paypalUrl = await payment.PaypalExpressPayment(_Package.amount, "USD", _Package.packagename, user.EmailId, user.Id, + Guid.NewGuid().ToString()); + + return Content(paypalUrl); } else { @@ -1242,7 +1249,10 @@ public async Task BluesnapAccount(string emailId, bool IsLogin) if (user.PaymentType == Domain.Socioboard.Enum.PaymentType.paypal) { HttpContext.Session.SetObjectAsJson("paymentsession", true); - return Redirect(Helpers.Payment.PaypalRecurringPayment(_Package.amount, _Package.packagename, user.FirstName + " " + user.LastName, user.PhoneNumber, user.EmailId, "USD", _appSettings.paypalemail, _appSettings.callBackUrl, _appSettings.failUrl, _appSettings.callBackUrl, _appSettings.cancelurl, _appSettings.notifyUrl, "", _appSettings.PaypalURL, user.Id)); + var payment = new Payment(_appSettings); + var paypalUrl = await payment.PaypalExpressPayment(_Package.amount, "USD", _Package.packagename, user.EmailId, user.Id, + Guid.NewGuid().ToString()); + return Redirect(paypalUrl); } else { diff --git a/src/Socioboard/Controllers/IndexController.cs b/src/Socioboard/Controllers/IndexController.cs index 89b866fdb..bc491d547 100644 --- a/src/Socioboard/Controllers/IndexController.cs +++ b/src/Socioboard/Controllers/IndexController.cs @@ -16,7 +16,7 @@ using Socioboard.Helper; using System.Linq; using System.Net; - +using Domain.Socioboard.Enum; namespace Socioboard.Controllers @@ -449,25 +449,23 @@ public async Task UpgradeAccount(string packagename) { var package = await response.Content.ReadAsAsync(); HttpContext.Session.SetObjectAsJson("Package", package); - + var payment = new Payment(_appSettings); if (user.CreateDate.AddDays(29) > DateTime.UtcNow) { - return user.PaymentType == Domain.Socioboard.Enum.PaymentType.paypal - ? (IActionResult)Content(Payment.PaypalRecurringPayment(package.amount, - package.packagename, - user.FirstName + " " + user.LastName, user.PhoneNumber, user.EmailId, "USD", - _appSettings.paypalemail, _appSettings.callBackUrl, _appSettings.failUrl, - _appSettings.callBackUrl, _appSettings.cancelurl, _appSettings.notifyUrl, "", - _appSettings.PaypalURL, user.Id)) - : RedirectToAction("paymentWithPayUMoney", "Index"); - } + if (user.PaymentType == PaymentType.paypal) + { + var redirect = await payment.PaypalExpressPayment(package.amount, "USD", package.packagename, user.EmailId, user.Id, Guid.NewGuid().ToString()); + return (IActionResult)Content(redirect); + } + return RedirectToAction("paymentWithPayUMoney", "Index"); + } if (user.PaymentType == Domain.Socioboard.Enum.PaymentType.paypal) - return Content(Payment.PaypalRecurringPayment(package.amount, package.packagename, user.FirstName + " " + user.LastName, user.PhoneNumber, user.EmailId, "USD", _appSettings.paypalemail, _appSettings.callBackUrl, _appSettings.failUrl, _appSettings.callBackUrl, _appSettings.cancelurl, _appSettings.notifyUrl, "", _appSettings.PaypalURL, user.Id)); - - return RedirectToAction("paymentWithPayUMoney", "Index"); - + { + var redirect = await payment.PaypalExpressPayment(package.amount, "USD", package.packagename, user.EmailId, user.Id, Guid.NewGuid().ToString()); + return (IActionResult)Content(redirect); + } } catch (Exception ex) { diff --git a/src/Socioboard/Controllers/PaymentController.cs b/src/Socioboard/Controllers/PaymentController.cs index cbad76138..5ec938251 100644 --- a/src/Socioboard/Controllers/PaymentController.cs +++ b/src/Socioboard/Controllers/PaymentController.cs @@ -69,12 +69,12 @@ public async Task Index(string emailId) HttpContext.Session.SetObjectAsJson("paymentsession", true); if (user.PaymentType == PaymentType.paypal) - return Content(Payment.PaypalRecurringPayment(sessionPackage.amount, - sessionPackage.packagename, user.FirstName + " " + user.LastName, user.PhoneNumber, - user.EmailId, "USD", _appSettings.paypalemail, _appSettings.callBackUrl, - _appSettings.failUrl, _appSettings.callBackUrl, _appSettings.cancelurl, - _appSettings.notifyUrl, "", _appSettings.PaypalURL, user.Id)); - + { + var payment = new Payment(_appSettings); + var paypalUrl = await payment.PaypalExpressPayment(sessionPackage.amount, "USD", sessionPackage.packagename, user.EmailId, user.Id, + Guid.NewGuid().ToString()); + return Content(paypalUrl); + } if (user.PaymentType == PaymentType.bluesnap) { return RedirectToAction("paymentWithPayUMoney", "Index", new { contesnt = false }); @@ -250,6 +250,129 @@ public async Task PaypalSuccess() return Content(output); } + + public async Task PaypalExpressSuccess() + { + + var payment = new Payment(_appSettings); + + var token = Utils.GetBetween(Request.QueryString + "&", "token=", "&"); + var user = HttpContext.Session.GetObjectFromJson("User"); + var packageDetails = HttpContext.Session.GetObjectFromJson("Package"); + + try + { + await payment.CancelRecurring(user.Id.ToString()); + } + catch (Exception e) + { + Console.WriteLine(e); + } + + var payerId = await payment.GetPayPalPayerId(token); + + var paymentResponse = await payment.PaypalInitialPayment(token, payerId, packageDetails.packagename, packageDetails.amount); + + var status = Utils.GetBetween(paymentResponse, "ACK=", "&"); + + if (status != "Success") + return RedirectToAction("Index", "Home"); + + var transactionId = Utils.GetBetween(paymentResponse, "PAYMENTINFO_0_TRANSACTIONID=", "&"); + var paidAmount = Uri.UnescapeDataString(Utils.GetBetween(paymentResponse, "PAYMENTINFO_0_AMT=", "&")); + var paymentDate = Uri.UnescapeDataString(Utils.GetBetween(paymentResponse, "PAYMENTINFO_0_ORDERTIME=", "&")); + var payerEmail = Uri.UnescapeDataString(Utils.GetBetween(paymentResponse, "PAYMENTINFO_0_SELLERPAYPALACCOUNTID=", "&")); + var paymentStatus = Uri.UnescapeDataString(Utils.GetBetween(paymentResponse, "PAYMENTINFO_0_PAYMENTSTATUS=", "&")); + var itemName = $"Socioboard_{packageDetails.packagename}"; + + var charset = Uri.UnescapeDataString(Utils.GetBetween(paymentResponse, "PAYMENTINFO_0_SECUREMERCHANTACCOUNTID=", "&")); + var details = await payment.PaypalRecurringCreation(token, payerId, packageDetails.packagename, packageDetails.amount); + var profileId = Uri.UnescapeDataString(Utils.GetBetween(details, "PROFILEID=", "&")); + var profileDetails = await payment.GetRecurringProfileDetails(profileId); + var payerName = Uri.UnescapeDataString(Utils.GetBetween(profileDetails, "SUBSCRIBERNAME=", "&")); + + var parameters = new List> + { + new KeyValuePair("userId", user.Id.ToString()), + new KeyValuePair("UserName", user.FirstName + " " + user.LastName), + new KeyValuePair("email", user.EmailId), + new KeyValuePair("amount", paidAmount), + new KeyValuePair("PaymentType", user.PaymentType.ToString()), + new KeyValuePair("trasactionId", transactionId), + new KeyValuePair("paymentId", profileId), + new KeyValuePair("accType", packageDetails.packagename), + new KeyValuePair("subscr_date", paymentDate.ToString(CultureInfo.InvariantCulture)), + new KeyValuePair("payer_email", payerEmail), + new KeyValuePair("Payername", payerName), + new KeyValuePair("payment_status", paymentStatus), + new KeyValuePair("item_name", itemName), + new KeyValuePair("media", charset) + }; + + var paymentTransaction = new PaymentTransaction + { + amount = paidAmount, + email = user.EmailId, + paymentdate = DateTime.Parse(paymentDate), + userid = user.Id, + PaymentType = PaymentType.paypal, + trasactionId = transactionId, + paymentId = profileId, + payeremail = payerEmail, + Payername = payerName, + paymentstatus = paymentStatus, + itemname = itemName, + media = charset, + subscrdate = DateTime.Parse(paymentDate) + }; + + var passingData = Newtonsoft.Json.JsonConvert.SerializeObject(paymentTransaction); + + var param = new List> + { + new KeyValuePair("information", passingData) + }; + + var response = await WebApiReq.PostReq("/api/PaymentTransaction/UpdatePaypalTransactions", param, "", "", _appSettings.ApiDomain); + + if (response.IsSuccessStatusCode) + try + { + var data = await response.Content.ReadAsStringAsync(); + + if (data == "Completed") + { + var responseMessage = await WebApiReq.GetReq("/api/User/GetUser?Id=" + user.Id, "", "", + _appSettings.ApiDomain); + + if (response.IsSuccessStatusCode) + try + { + var userCurrentDetails = await responseMessage.Content.ReadAsAsync(); + + if (user.ReferralStatus == "InActive" && user.ReferdBy != null) + await WebApiReq.PostReq("/api/User/UpdateRefrralStatus", parameters, "", "", _appSettings.ApiDomain); + + HttpContext.Session.SetObjectAsJson("User", userCurrentDetails); + HttpContext.Session.SetObjectAsJson("paymentsession", false); + return RedirectToAction("Index", "Home"); + } + catch (Exception ex) + { + Console.WriteLine(ex.StackTrace); + } + } + } + catch (Exception) + { + return RedirectToAction("Index", "Index"); + } + + var output = "false"; + return Content(output); + } + + public IActionResult PaypalFailed() { return RedirectToAction("Index", "Index"); @@ -637,23 +760,30 @@ public async Task UpgradeAccount(string packagename) HttpContext.Session.SetObjectAsJson("Package", package); if (user.CreateDate.AddDays(29) > DateTime.UtcNow) - return user.PaymentType == PaymentType.paypal - ? (IActionResult)Content(Payment.PaypalRecurringPayment(package.amount, - package.packagename, - user.FirstName + " " + user.LastName, user.PhoneNumber, user.EmailId, "USD", - _appSettings.paypalemail, _appSettings.callBackUrl, _appSettings.failUrl, - _appSettings.callBackUrl, _appSettings.cancelurl, _appSettings.notifyUrl, "", - _appSettings.PaypalURL, user.Id)) - : RedirectToAction("paymentWithPayUMoney", "Index"); + { + if (user.PaymentType == PaymentType.paypal) + { + var payment = new Payment(_appSettings); + var paypalUrl = await payment.PaypalExpressPayment(package.amount, "USD", package.packagename, user.EmailId, user.Id, + Guid.NewGuid().ToString()); + return Content(paypalUrl); + } + else + { + return RedirectToAction("paymentWithPayUMoney", "Index"); + } + } if (user.PaymentType == PaymentType.paypal) - return Content(Payment.PaypalRecurringPayment(package.amount, package.packagename, - user.FirstName + " " + user.LastName, user.PhoneNumber, user.EmailId, "USD", - _appSettings.paypalemail, _appSettings.callBackUrl, _appSettings.failUrl, - _appSettings.callBackUrl, _appSettings.cancelurl, _appSettings.notifyUrl, "", - _appSettings.PaypalURL, user.Id)); + { + var payment = new Payment(_appSettings); + var paypalUrl = await payment.PaypalExpressPayment(package.amount, "USD", package.packagename, user.EmailId, user.Id, + Guid.NewGuid().ToString()); + return Content(paypalUrl); + } + return RedirectToAction("paymentWithPayUMoney", "Index"); } catch (Exception ex) diff --git a/src/Socioboard/Helpers/AppSettings.cs b/src/Socioboard/Helpers/AppSettings.cs index c0eb1f59e..b155ee1e6 100644 --- a/src/Socioboard/Helpers/AppSettings.cs +++ b/src/Socioboard/Helpers/AppSettings.cs @@ -67,6 +67,19 @@ public class AppSettings public string PaypalPdtToken { get; set; } + + public string PaypalApiUsername { get; set; } + + public string PaypalApiPassword { get; set; } + + public string PaypalApiSignature { get; set; } + + public string PaypalSuccessUrl { get; set; } + + public string PaypalExpressUrl { get; set; } + + public string PaypalRedirectUrl { get; set; } + public string AgencycallBackUrl { get; set; } public string TrainingcallBackUrl { get; set; } diff --git a/src/Socioboard/Helpers/Payment.cs b/src/Socioboard/Helpers/Payment.cs index 59da02162..f83bd2bf1 100644 --- a/src/Socioboard/Helpers/Payment.cs +++ b/src/Socioboard/Helpers/Payment.cs @@ -5,12 +5,22 @@ using System.Net.Http; using System.Security.Cryptography; using System.Text; +using System.Threading.Tasks; using System.Web; +using Domain.Socioboard.Models; namespace Socioboard.Helpers { public class Payment { + + private readonly AppSettings _appSettings; + + public Payment(AppSettings settings) + { + _appSettings = settings; + } + public static string RecurringPaymentWithPayPal(string amount, string itemInfo, string name, string phone, string email, string currency, string paypalemail, string successUrl, string failUrl, string callBackUrl, string cancelurl, string notifyurl, string custom, string PaypalURL) { string redirecturl = ""; @@ -533,6 +543,268 @@ public static string PaypalRecurringPayment(string amount, string itemInfo, stri } + public async Task PaypalExpressPayment(string amount, string currency, string description, string email, long userId, string invoiceNumber) + { + var redirectUrl = string.Empty; + + + try + { + var parameters = new List>{ + new KeyValuePair("METHOD", "SetExpressCheckout"), + new KeyValuePair("VERSION", "204.0"), + new KeyValuePair("USER", _appSettings.PaypalApiUsername), + new KeyValuePair("PWD", _appSettings.PaypalApiPassword), + new KeyValuePair("SIGNATURE", _appSettings.PaypalApiSignature), + new KeyValuePair("PAYMENTREQUEST_0_AMT", amount), + new KeyValuePair("L_BILLINGTYPE0","RecurringPayments"), + new KeyValuePair("L_BILLINGAGREEMENTDESCRIPTION0","SocioboardMembership"), + new KeyValuePair("returnUrl", _appSettings.PaypalSuccessUrl), + new KeyValuePair("cancelUrl", _appSettings.failUrl), + }; + + var response = await WebApiReq.PostReq("", parameters, "", "", _appSettings.PaypalExpressUrl); + + if (response.IsSuccessStatusCode) + { + try + { + var data = await response.Content.ReadAsStringAsync(); + var token = Uri.UnescapeDataString(Utils.GetBetween(data, "TOKEN=", "&")); + + redirectUrl = $"{_appSettings.PaypalRedirectUrl}?cmd=_express-checkout&token={token}"; + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + } + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + return redirectUrl; + } + + public async Task GetPayPalPayerId(string token) + { + var payerId = string.Empty; + try + { + var parameters = new List>{ + new KeyValuePair("METHOD", "GetExpressCheckoutDetails"), + new KeyValuePair("VERSION", "204.0"), + new KeyValuePair("TOKEN", HttpUtility.UrlEncode(token)), + new KeyValuePair("USER", _appSettings.PaypalApiUsername), + new KeyValuePair("PWD", _appSettings.PaypalApiPassword), + new KeyValuePair("SIGNATURE", _appSettings.PaypalApiSignature), + }; + + var response = await WebApiReq.PostReq("", parameters, "", "", _appSettings.PaypalExpressUrl); + + if (response.IsSuccessStatusCode) + { + try + { + var data = await response.Content.ReadAsStringAsync(); + payerId = Uri.UnescapeDataString(Utils.GetBetween(data, "PAYERID=", "&")); + } + catch (Exception e) + { + Console.WriteLine(e); + } + } + } + catch (Exception e) + { + Console.WriteLine(e); + } + + return payerId; + } + + public async Task PaypalInitialPayment(string token, string payerId, string description, string amount) + { + var responseData = string.Empty; + try + { + var parameters = new List>{ + new KeyValuePair("METHOD", "DoExpressCheckoutPayment"), + new KeyValuePair("VERSION", "204.0"), + new KeyValuePair("USER", _appSettings.PaypalApiUsername), + new KeyValuePair("PWD", _appSettings.PaypalApiPassword), + new KeyValuePair("SIGNATURE", _appSettings.PaypalApiSignature), + new KeyValuePair("TOKEN",token), + new KeyValuePair("PAYERID",payerId), + new KeyValuePair("PAYMENTREQUEST_0_PAYMENTACTION", "Sale"), + new KeyValuePair("PAYMENTREQUEST_0_AMT", amount), + new KeyValuePair("PAYMENTREQUEST_0_CURRENCYCODE", "USD"), + new KeyValuePair("PAYMENTREQUEST_0_DESC", "Initial Payment") + }; + var response = await WebApiReq.PostReq("", parameters, "", "", _appSettings.PaypalExpressUrl); + + if (response.IsSuccessStatusCode) + { + try + { + responseData = await response.Content.ReadAsStringAsync(); + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + } + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + return responseData; + } + + public async Task PaypalRecurringCreation(string token, string payerId, string description, string amount) + { + var recurringResponse = string.Empty; + try + { + var parameters = new List>{ + new KeyValuePair("METHOD", "CreateRecurringPaymentsProfile"), + new KeyValuePair("VERSION", "204.0"), + new KeyValuePair("USER", _appSettings.PaypalApiUsername), + new KeyValuePair("PWD", _appSettings.PaypalApiPassword), + new KeyValuePair("SIGNATURE", _appSettings.PaypalApiSignature), + new KeyValuePair("TOKEN",token), + new KeyValuePair("PAYERID",payerId), + new KeyValuePair("PROFILESTARTDATE", $"{DateTime.UtcNow.AddMonths(1):yyyy-MM-ddTHH:mm:ss.FFFZ}"), + new KeyValuePair("DESC", "SocioboardMembership"), + new KeyValuePair("BILLINGPERIOD", "Month"), + new KeyValuePair("BILLINGFREQUENCY","1"), + new KeyValuePair("AMT", amount), + new KeyValuePair("CURRENCYCODE", "USD"), + new KeyValuePair("COUNTRYCODE","US"), + new KeyValuePair("MAXFAILEDPAYMENTS","3") + }; + var response = await WebApiReq.PostReq("", parameters, "", "", _appSettings.PaypalExpressUrl); + + if (response.IsSuccessStatusCode) + { + try + { + recurringResponse = await response.Content.ReadAsStringAsync(); + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + } + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + return recurringResponse; + } + + public async Task GetRecurringProfileDetails(string profileId) + { + var responseData = string.Empty; + + try + { + var parameters = new List>{ + new KeyValuePair("METHOD", "GetRecurringPaymentsProfileDetails"), + new KeyValuePair("VERSION", "204.0"), + new KeyValuePair("USER", _appSettings.PaypalApiUsername), + new KeyValuePair("PWD", _appSettings.PaypalApiPassword), + new KeyValuePair("SIGNATURE", _appSettings.PaypalApiSignature), + new KeyValuePair("PROFILEID", profileId), + }; + var response = await WebApiReq.PostReq("", parameters, "", "", _appSettings.PaypalExpressUrl); + + if (response.IsSuccessStatusCode) + { + try + { + responseData = await response.Content.ReadAsStringAsync(); + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + } + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + + return responseData; + } + + public async Task CancelRecurring(string userId = null, string profileId = null) + { + var responseData = string.Empty; + + try + { + var parameters = new List>{ + new KeyValuePair("METHOD", "ManageRecurringPaymentsProfileStatus"), + new KeyValuePair("VERSION", "204.0"), + new KeyValuePair("USER", _appSettings.PaypalApiUsername), + new KeyValuePair("PWD", _appSettings.PaypalApiPassword), + new KeyValuePair("SIGNATURE", _appSettings.PaypalApiSignature), + new KeyValuePair("ACTION","Cancel") + }; + + + if (!string.IsNullOrEmpty(userId)) + { + var paymentResponse = await WebApiReq.GetReq($"/api/PaymentTransaction/GetUserPaymentProfiles?id={userId}", "", "", _appSettings.ApiDomain); + if (paymentResponse.IsSuccessStatusCode) + { + var payments = await paymentResponse.Content.ReadAsAsync(); + profileId = payments.paymentId; + } + } + + if (!string.IsNullOrEmpty(profileId)) + { + parameters.Add(new KeyValuePair("PROFILEID", profileId)); + + var response = await WebApiReq.PostReq("", parameters, "", "", _appSettings.PaypalExpressUrl); + + if (response.IsSuccessStatusCode) + { + try + { + responseData = await response.Content.ReadAsStringAsync(); + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + } + } + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + + return responseData; + + } } } \ No newline at end of file diff --git a/src/Socioboard/appsettings.json b/src/Socioboard/appsettings.json index 443712f81..843997d03 100644 --- a/src/Socioboard/appsettings.json +++ b/src/Socioboard/appsettings.json @@ -60,6 +60,21 @@ "paypalemail": "", "PaypalPdtToken": "", + + "PaypalSuccessUrl": "http://localhost:9821/Payment/PaypalExpressSuccess", + "PaypalApiUsername": "any_merchent_account", + "PaypalApiPassword": "password", + "PaypalApiSignature": "signature", + + // Sandbox: https://api-3t.sandbox.paypal.com/nvp + // Live: https://api-3t.paypal.com/nvp + "PaypalExpressUrl": "https://api-3t.sandbox.paypal.com/nvp", + + + // Sandbox: https://www.sandbox.paypal.com/cgi-bin/webscr + // Live: https://www.paypal.com/cgi-bin/webscr + "PaypalRedirectUrl": "https://www.sandbox.paypal.com/cgi-bin/webscr", + "PayUMoneyURL": "https://secure.payu.in/", "PayuMoneyemail": "", "payurl": "https://www.payumoney.com",