From c88d75e1f3b0fd56d27a39bcef64c69ab4b23ba7 Mon Sep 17 00:00:00 2001 From: O Rabie Date: Thu, 2 Nov 2023 15:00:15 +0200 Subject: [PATCH] Tabby, Paypal & GooglePay --- .../UserInterfaceState.xcuserstate | Bin 11850 -> 38170 bytes Pay-Button-iOS.podspec | 2 +- .../UserInterfaceState.xcuserstate | Bin 154700 -> 144305 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 28 +- .../PayButtonSDK/PayButtonExample.swift | 63 ++--- .../PayButtonSettingsViewController.swift | 30 ++- .../views/RedirectionPayButtonView.swift | 2 +- .../views/private/TapBenefitPayView.swift | 8 +- .../TapGooglePay + SwiftEntry.swift | 54 ++++ .../extensions/TapGooglePay+WebDelegate.swift | 239 ++++++++++++++++++ .../private/GooglPayPopupViewController.swift | 161 ++++++++++++ .../views/private/TapGooglePayView.swift | 178 +++++++++++++ .../Private/enums/CallBackSchemeEnum.swift | 2 + .../Private/enums/PayButtonTypeEnum.swift | 24 ++ .../Private/views/PoweredByTapView.swift | 2 +- .../Logic/Shared/Public/PayButtonView.swift | 8 + 16 files changed, 735 insertions(+), 66 deletions(-) create mode 100644 Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/private/extensions/TapGooglePay + SwiftEntry.swift create mode 100644 Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/private/extensions/TapGooglePay+WebDelegate.swift create mode 100644 Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/views/private/GooglPayPopupViewController.swift create mode 100644 Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/views/private/TapGooglePayView.swift diff --git a/.swiftpm/xcode/package.xcworkspace/xcuserdata/osamarabie.xcuserdatad/UserInterfaceState.xcuserstate b/.swiftpm/xcode/package.xcworkspace/xcuserdata/osamarabie.xcuserdatad/UserInterfaceState.xcuserstate index 63f8a85e5a3d0205ac2050f21ebec8cbd6d658d4..e4057b93c50e0ab355a9c4dda6a6a15355596558 100644 GIT binary patch literal 38170 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 'MIT', :file => 'LICENSE' } diff --git a/PayButtonSDK/PayButtonSDK.xcodeproj/project.xcworkspace/xcuserdata/osamarabie.xcuserdatad/UserInterfaceState.xcuserstate b/PayButtonSDK/PayButtonSDK.xcodeproj/project.xcworkspace/xcuserdata/osamarabie.xcuserdatad/UserInterfaceState.xcuserstate index cfe8a094cf4f3dbc06297541c97206daaa2a767b..936e54c489bf3de6f4e2607c30290bb2aa87efac 100644 GIT binary patch literal 144305 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 hVpD0%cvFSo|Nhr)xBS0f-$R?;|37@v|0Mtb literal 154700 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 M&30$%{U4fsOf z?Z7*LcLMJM-VMA5_#)tU1%5Z+M*=?z_|d@c4*VX#j{$xx@WsH71AaX46M&xx{3PHf z13v}$slZPIemd|ofS(EcEa3M9e9MQQ1N>gV?+yH1;Jv_?0AC7x8Sp;f%YmN<{Cwd3 zz%KxPA@CKzR{~!Jd;s`r;1>a31AGwpTHxz|uLpiH@JoPi0DdX(`vAW$@XLVT5BL!9 z`vczy{Bq!%fNusq4Eze2LU^}ufc{vhBt0>26PgMmK;_(Os31s;Gu4EV!=KLYq8fj(7I0DmU%X90gU@aF)3F7W38e?IUR0DmFy7Xg1U z@O{8<2L2M@F9rTG;4cUM3gE8<{wm=6fxjB~YkW12>6GAe+2kPfqxA6$ANzW_$PsX z3izjie+KwxfqxG8=Yf9#_!oiS0{lzBzYP25JXolUDSg0iW*r!(BOX_L3C%wOvdRCy~x=#C~* zHMN+yy24vq9;m6*OK>6yjLKAQQlP2?gTC5OwYPL(sM1^IFZTs&L%44is;=>s`DE3FNc)K!&L_?YB>wDKu8VQkvutMZmq_(FlIP?-<& zD+|^5f`Pi4QlDPFGf7~go>h{Rm>IS{w!Ob9SnI8*2-SM$>Eh>*_?Q93scOF3()po4 zO_{HT74&=(v}UU74SfZ)X;ZMFGP-XrN|7v3vLHIyW=ghO614f=8tRoAUumGSIv6VR z>jk)sM5bsWfevy|Q2$g^1QufrYvxfmX`LAgR{Kh^1^i3BL_=1ED+yt0BEn*CLolTF zS#Ytxyf%c*R#oP$DGOEjOKQ9|{z&UzO%UVaAxi4}6)bT>2=KG4T@AGyV$1_g9tqmSAHAYJ4G;xJ>X~5_HB3YUIYwt@ryD z>veq~X)apgS{!g#hfvT*!x{%-ZA4i-OoDqPy=JwtMH<1^CXxW_W8sncT7~r9{V&NE$IENIi+R_uY=b!FN&-uw z2>S+!=4Y0LJ6hW}P!I%a8yr>DI!TbB%$6UpOcg;MykwLT@h%g^i|b{DgtUx zvch~tsYj+tT^$J4B2jRH2u8KswsvssGHtEDP{cow$#Weh%l+KY9kD5J1J_y{dAeoUQ%Z}WC^up*2nz~XcO7dLh{tqQcYZeXI5NOaoZqE$gUwH7%!R^HMYW*AcmW6!}c zDuP&Myx>cTmD7CH8|ZW*1DZiV^9Bd1^G5*%@mN{7QoGhEG*5l~8rz3~?wMxeR0Qk% zzE&mNj*0F?qLT(MPerfnpQx?HwCBTUM^>W;hE7 zCyfqAL#DB(t!Y)T3B#7!lJrd_0nHe^Ksu0q?lHQJstINM;3z7Gt6G*vlQ&4hY4lMg zUSro<+SoyhTwfbC3tI*cuP2B!Xi^nS-YpFzU!G3+so=PWq8xoJYhQySvaSmQ8!!a5 zsk22{6tOPamoU@dO_eex!@jksUb<3&g$OJSg;fjD*IRU0I z(4zn`mbRs1Rk*XUHB~9YTMxQ;6*j0J8!?;;bQOWlNvCg08(UFJH+H71^lE}iYxI?( z0_bc^Rirk;nVnXVFoLXe2D=-(dr}U9V+m|-Iz^nfupD=?DdxDV zJ5_~GAhg*lB53UInY` zz{`D87VQi|OJf$s*}Q#C7=z(c)$#1Ki$$Kl)~ay#y7tc1snE_Nw32lCg!vH%o+~aS zysE9o^R_iFUKMT|P`mdLc3^9;Yr|{s3_@e)hWP5!OBQH#;&0d#d?|sarKed##A7m~ zD+tNAHN_mX=KTb@S2~bnYKJR(x>}l274O=#u_{|I@U>%Ads|9U-#}PtXlS(M+Nr%$ zmFZ@}NoR1Bmy(&AdQ!WMfYPF06!ShwPqE7|&1VNRhGa?YGeJ!m325Gye(=J>v+}73Ji7FZw2x}XgHmHwc;7$|M z0MBhbRH}NuNKk34xvGM}md=(`C@&LATGS18gu_j%Xs*TB-+_kgYXq5=^%C6Bg(pkB z&Df)89CRxFgj5B6olw&vu!`zi-;JFyfM$7%02idglX|?NrajoRoEB$zHI28a2^|C} zXW@4VH?4tz%azXBPV_inD0Ql8e?Vwy^>Tf?zd9Al$Apr`EK%pL2_M+g(iv`6Z_L4U za^rG3j)>ugjKZH0RvMlr9jmLnr?pje9Wab931jl$ZC~eCtx&wVXMRgFy3QEDHw2Kz zQauVF*u5d*>iVAKrw?8L96a4EO{>G5WDjCDDK`tTLi|J^Y3OJygnHsJ+^k;#6(E}! zEo>yH-mbtbiFvI;%koZSEH9BHg%#IGxM|rn$&1TyvI!>*bylHQJAlq(WFTus^e0!h;-ZuR4kN&{hGj|z@CYew z3{qV>m!n74h~b2hhWcBq_&J#eTwSI|F8yM)$|JNi6xZT~y1r*ulPDh3DEHzBD`D9( z7ve2q;Z_$0HTSfJH*LZlsXA?InPpl?2@6vs#HfNA7Q-^aIS?dnsk05C5gtnDNC6oe z3@~ChO6$(V!)7!wxQbn>FT8crCN<~;_ZDfFnU!`lB_E$Gd07KSKH&CuCGL~qvl$is z+J?BmgArp$c=rK>>uPFfJ2S3`<49~&QZd{CS9aXh4YBITcIJqQBs4LZ5QRA47BYrg zVC)A*abV2Myb9c;ir()ZF@?mZB@@SOc-(=m_u+;U%bbE|f*}gM!A)d6ENH}Z!Wfqf z10z4w=2AjYl<=L>3O`nz?e>hAMY2hoN|$B(l2mTiJ#$EGOtLK1{Gw$-CAeqL1m}|A zZpj2OKi?9HdU_#7#+UAW#tOjlYC$FZg$k`E5XLrd5~DD-1{^~eDuq&L3t)&$bl}v8 zi%Dc$bWWu;K2lMUJc#BL{D$&sce09ILb3(XvKYaEGY;AeiXF$&T~6sn$D|9O8KV<4 zl2x?gy^5q<(Nex8zS6o{g_C+n9?RnzN^MV(nrNX%7LT}|l8%W^8YuvdPqI@=l;~3o zQ>H*ky;p7`L3gyEUWMv~^9UqnoZXsGq=?RqGvV%_q(w=QBV~(joV!UNrsx5YqxG=_33;N0BE@Io(H;K3giMkRZ7oBV$(tm!TXZH` z0IU`TF69TIUS6G^f*d!G_pk|mDTN*__GU1L%y(O6Wy5Zb7TMEaB@ zVtS#vt^~tzBO$$s4f+Mi#3&h6oogyn%g0xR0m#^$tcAWNsTj4fxCR>*J1arMd`C$~ zWd?CWqG^?@y0Lqe5-YDnx(C%zY9;nI#PAU z7saJ#7Fx0l{vrWqoIs6lX)^TO3`#sZF0pcqUi513)QINMPgDOYk zQ?7|p#*;*$#Q^YT5^`l~_jpinB*x_i{qw5u2tcjBw!)`a{49%HtuX4XAJM7R(OlcW zQd%e_wo{UnRmwVtR=7#?u#u!SnPhYXY_5Zn6-1I@K(8JUUF-8!vVyqdimZjI<3I~( zA?hsUu9VUpLDW*>5f;=`Xrke2pw_Ri=W|C<@?8^>t1deM2d6uFI#*$B?TJQ|K-5d~(ZPYX7oO=+&$g6T`0$Mcl*Q@4bbdsk=I%|R!!v7@`y0`2 zrNbs63=P&Bw1g5&ib_D{W=M(Z$61ybiA!BHA-zHL7NKmp*I!YGt;VYFBl+nlzrMRz zxmC)AhcY&8(k(IULUc0WdXJ3QTGZkSCK>m2`Z7ItK7ou)0I8+(9a;^srIazEj$1wZ zg(SI0f~1~(svN75%lWIQwz^+H*Is&li%70GAwRXG>aiSMI#%ep@aCiaNdLQ0NFOWH(o?u3%6!%2~j8A&TB`RIh? z+FFmus#6VF#G0dpq#OxS3cPY05nZb+Z7Zc6l{{?)I$`VZ7#Y%7Jx9lc+6Tyh39+=D zls2)(N?~w8;xBKYg_~ZU9!kDzW<7523dPx8@j$b|5xb1ZU9T1qEGMH^ zN4Xm*?QSvXF=S+Q4-6*kas_dJrn}{! za3{|B)U_cz6O4)xy&ZUpw${HCjaHn-YH<=HPbQYA9M5sGa-2fIvtxnj@>p#@gSI{y zY?-g5Zl2O%w78>{e+A9!4Cz1VBQ2RR4L2*uNrrGZzv5Y4I=aP>&LpHsgOrI5Xp$w5 zZdvpYd83YG<(@MQwlyT}MI_1`(p{YkXvy zYpXvdeIrRvPD2{|0^RDB$odj=%;_iXb8jJly#@hL$7P@zZB*@`G^+&q#UV@mJ1_X0aC#Ti}1T#Jj zn7XQ(0G?{C2n4EiDm_fXgN;+qPFW>2 z;s=$oX38pej#S~StGJm-)2U6aY+LEeVr^qdujnq6$-HzkQ9amn`9o0IL}C-0rjc36 za|krWAjgWwm0ar(%{#6em<&uNuxaU*Fa}Jo&zsmODzlDueTa zzA83X=j~1)Rk8Jo1EF?CO^tRZ-C#i%=g_9Cy4!{;4ZLe9h{l6*dy;x15Uc7~!mf|S zuEXg575Hie-ijJt)rfaUcP1`F@$w~Q+ZVS@ee=Ebe#|nmA|-bmUYx`77*BaD-OhPb z)m2n@)sQ-t&m_txj!KIgJIRaTQqBP=F%HyJH2ASK=3`7AtuQN;FHpnlqi-rf#p%HT zpsIakc*G(ka!${l8e_Wo={C0;i?Xutu-}KT76GKitBp~sSEWI9*l9dY8Ioe zSC!f+3mFWCsIEmvYKZg#MlPXU5t+yG_9E>0vHg-7TW`10`98eG3u77RZY!FPVzw&s zyo6ejE~+{Xl@gP&gN7gZ9_Hf|OgAH;hZu>=`nQabjs%L1iJWR~hNp(P}RX|eJyAlT%59Jud%mDLz1S`sK@yE=K5 zTUA26tIF}tGiAx(#Z3{#Q$()BNC~S6HcmaIuDA}1W@wr2Wy%W@NXa&IcnOC1k@qUr ziOw{JhO(c7)k}ieu&rez12PHTzJwQNgQQhPKXTk(idv@})ef%L19kJ* zIzKN&przZ;kjla%Nhy~TV4Q`SUMZ6{Vwm8zMHi8Yhq2FiEm%c}^mdY>t|IKT$97bw z>kX>xohGtrH39p!p;0kngl145x|WpvZvFndyf%WYP8U)iHOhQU0dF`GX-Y1~mcUV7 zgLfkOP%Sa7aUh|mJ)CrORm;`*P~BHWhu-CN6JFU?mzHhLsXL?dF%Cx8YwHMc(N-g> zC1kj`^@#C`QEj5bA4KqJYvZ^EVDM-O)dt9kpu-+auxYE66tGpk#k6O3%H78HpC;cP;TTUn+> zTC#6g09@XAgp#%rh%Og;QgH?h)Zr?hO@@hT`$B@>mXTGB7jIVLhBIna*42H4wO_hj zO}(L7<;WuKupvP@MPDu?+Uu86UU6%k)QuaJ7i$V;oT9;sjfUaucuT7pfR z#rlB2OW$Y_t4x{*jEfju5#2zDabAdl8(L|Ax~hd$cvT|SnrNb<-AriPVtV05hY!!f zsK=Ee`{;SMZENwAg*qbvWAL4Xw)Og?u1Z0}&d_&q^X?(2w5OS3tVdBHeM! z%JpIz<2sXmTgCa~m=4_flZH(3ovG~h8O+$F@5g5HXTpkGINjgV5$ zQt?RWCt$NmC5Az;%Dqk~smFC}JE;b$zY1CDFAD|A%keBgpd7bi@n{GGe2V~6tDX2_ zd20i-*RM}>LEoZKsU8=X_b#Eu?IaAq3EWPYup|c zvUdK7P*bmZ2X1EyrY!g3CB1lVF|xn(D?z57I8s5f7N`pNa3il;ADMq_TdPL7@pMus z{zuhNV)g%<&{NwRF@@DzRkN5e7*!2lie_$pCLyL?mM2FfFF9FpXcaM3t%Ugo!b`14 zV(_BOETz(PIdcfV)R$%XMnX%yV2VO>HMTXoaASw<_b8e`LB-%Z)itGDB^{iP_b*57 z!slmG7Bwj?&a|@7^&t8wFl3Dyg;}2Y!?puH?tsuawldo8Km{I(+KS1S2tO^=leCGH z&9IUhe;H0#r4*rqvnn(1eX9y1}UTZS%-i)>lZg7GNDF8#3uZOcd7K1BCtbRc$q z9zn%0Z2%}Wyd@4P=15n*mGIQdNj2~G0C@38krzG^qCwd7lV3;~#H>aBRR%h)lW+sd z3nKI&Ut??g%1C%mRC6lVuxrOY(Y2_(st~!o9)sC&#aCCjH8>92cf{ujLg?eCLpc~78uQXg{usiVoi-NEDmAJ` zMf(*m(DqlbStWlQAyo~Il)OXqfK27ralx4R6A632e~qmkv5n3l(O$}*LU}Fu*LlU{ zqWhV2`c9`@s<%0pia-gjAiSlexTS=wuD~7EXr|2~^qOr&XAUyj`((pIsg7RyIfTFX z-{MD(T}B`F)-#z)nQZe2XO%#Xq6=LOgpQoz$uA}FvTdzFboe1t^5y>uk+pMlFZu~_ z+E$hkHxKX$1-%g~2xIzIV$if7wc(u~Adp2{38L#-<*^3k%n)re(_X9g3I}Vs8iL>E zu|S)aWq7C`56viwoP``P^g2SX-{!(=^idwCiX4umc#25;fBuqx)j-k)YtiY&_7Q7g;E$kYJ ze`#z+1108#81*8CU}y;ilc*a3>cce3dlVsmwU=#K38^uq@`|AxdyF9efNjB57cUG} z%_R;>ArEz)+?^qzK7gdR}0>A^|=Au#d2gZz^Sbo>CI`T@Tv zST>+eCEhxT$#Tfje}50LkOFY`GfN>C$N&O2CMW{2Jng`yk-wqkQ6k=>UtI7m8OeV>o3Cy zlDc`wc(RRH#0ojo8Q?VpI3r!aNaF>nC{l-^Tu&(T(?y9b7OgAjraWprUwJwD))?wd zgt{;hRqaq5SgN-PkJcvkZXk$LC}M@^q#!=fr8s36@T~+~wvE8#4zCK9B5N=ZlOf(g zh>Nxjku80+3n0;Pqa0Ni zgM>MA+c4*q>c-0dS+#AD81GktYe`0~_~^v^rwDt&wqfIm zAUYq3E*i!AS&Ejr-b2s+i)N_w(;J%@M~N}Wk;5GMFA!wq07Z@3t%@D8w1r0YF3!eu zaSj$ZPKUlk&`GqrK60a=b)7;^S#LQ7qDF1e<-bZ$Ni?Vq73En@(D4d4y|sAGO!vh8 zkMNRc(Dd=}5>q^xq65B3fJvsw^a0h48Wt!N9hH{<4uKD(sRpgR;#P|s^~`^t5R<6t z^oy&74Mgw$xY(g(v$J)JGx8xpvLSKigt z&<(vxI4#Yg$^ebnOJ5VTavyrE<)ydm;Lvyq6N5!?=Oc1mME-XKyJUc2Iyfwz&#;quPbS~&_s9ub>`9;=TzfcC%+bx62g>M);ql=G$2l@o`7eNm+zPGOZaTl?)xt zqPn)8E_C(Kl@AGQr<vOoFS-AGp^`C-KYB0Yzc>xS>c_ zRp6AwT0#~QF#odJmv(~wXEol_9Z0Td!hPV*s(x5G>=1H z89I7Hmqbj1NzY1< z)^8?PMU?qaxeZC#z}M~{i}E;IEQB+8FdVuXg7yX!yqLgQi;V!rr3(<_O|dvgcFJI~ zN~X$IE7=~gxw{Er>|hAw%8lEav+PQegEk-?5>i*~7@3b=)x;8vBAl6nl>jX!&0eNy z-%D3V#@wi4*@IvvCBU#_hIsj_@}O{}Lor4Q8yDMNhP*n>}`!|JF>l^=vx;pvq^r>gk1FqtjM836@=VE%H=z8UMkDp1XPkf&>*M& zEG2|ztHUQAip$ian0PmHZAJ9eAUPQ(OIhZui+h`2${3bG|C(o+pE360i+hXN7Yi*F zv0nr%i!#RcS*n5mxX)4p{HK_9$fp^mA)gI-dB_)*#l0E5p8@|#NLsZ5uh5t^e*AbU zLf82AuEsTuo%jw-czm<^eC7D+#tp?KJ>A{yZN)8t;P_yBPbZ#ejsLnP+!gtSn!GaH z+|oF1eN$ssSGc>26?LhlDP!!FmVI`~v@EmiX9-#Mw=`Oo1OFLhEdu^?;J*O=OW?l( z{%hdBxzf^X30qd|GSsrl(qcKlvKshrf&UKp?;&d+;C}%AN8o=3{+HfjeE7aA+=?%W z;L9)g(oy7ni>{C)HRDUPEv=>PZQY&it$1e$-fP;?8D0_Y#OHU^8qt%9i(8tzS1s#m z!uOW(Bxx}|aoC8mYQ>7_(P`}~Q)^>axAJgfxY>(|mbI@9cdl&-uTy@%Md_oS%!wEG zHmZMLulyZvBE?gvrCNMLKog0SiM7xs%fYdo*=sqBIun5Zsc)A(AS*!Vv78G0UtqMya^y^vBfp2F z=B?!jQbwgfuxud_CGrot(r;WV9*RByow6-$3N=-^`Gg`v$nA# zo{KR##{6S|?6skFq2%hi@^GG4b_XSv>TL&j(@8o_{{Bfyy3TL#8FFy@2N(z`_IIega( zAJM5tzTmTn-CawUwzsdrH&3xC@Ip3qb>%OsZLdI*Eo^IF*H+rtwzjdWy1h$z3aqlR zBP7W|h3a^%7kk1x5d4u8k8X zO_?xm>R8vriIXNAd@vJvN)_2f5pk#@lnRB$O(n5u6KBTDJg3SG(`9B%nmU-w7FEWi z$P{2clP6Ce>zXnlRUWUZ>1Dkt(dm;{<#knLctm6pW-)onj3l+!sQ9+!9d+o2q&$C# zN&+HHL}L`~{X&NF-+mh>Pnv86R9~`PlM_#7sd8fR`X$9Z&7Dib6B>$_G!!4Wc+t|5(iO!kmK1k42ALxH z*77?IjPESpTYj+oX!*(Vv*j1dua@7y=m4V=j4m*`!RP^F5g2y`<8ELad6nf492kFD z{d>Ys9dQw2m5trV1UcV=_MIvtkoWM*elL z4;MFe6?d&$rBfJZw2hM|Pne{Tc;bX9lT;R4Cs9LAwob85wN3-$bTG~U<4iElO3C5~ zb)yK)3OmOd${2gSk?~&bt!kRbzkc;>wb`VH5g}uaW62=?fn#tC16BFUk=9kU|ay1 zychxI^fr?t!4ZSAqHwXUi0eQ+0mO?yycNVJKztL#Z(_^_>ygUb zZJZO54&GX`K{dn@Ov{S)l`T!B*P zF^j{?*~@8(g*{m`v{p&D4Oc$h zXsBtu%32PaEAl()8O zEUA+6KHS!`Mj0V0*J?L(gnjr`V#{2jmd78GF4(T+*#^!>i408rE7dYD3`zTMZJ8te z6~E-rf8$%k^kuB&P)pGglG?Vm6az9Uh4G$z=>Dn}Vs%J5aEBBkabZ)An+S=+>o2t&YeG`* z|4Ze-`AzS#F?If=%~LQ$EmnI-+PEW&)zjV58fB?h<8FfL^wk;z*M7`wsP1ID#rTnEPWVB7%4gZc~PjM4O`AeY<7 zZNmSzW}x3~BYM*C4;T-I%m*OzLHg@qy~D`wT%a zRkpOXtRa81JL#_ps+9IVP`l!zMM=~6+t#WcWAq{?qO>+{Xvb&Y^(8Vsb(VL@6T;-|zYKtXlE zqJo-&U_os`T|s@p;sWH;kzhOuj7Nj<7%(0S#^b5fd+AOuS5IV*gGi?f@p@=<5Q#?uSDHg@NCBGV7#igERlwJ zH!x1URPd@w!&ejZv)~h=;adf77rayOZozv6?-zVf@L|D61s{X) zS}P8h%SOyq(eTPMwDL?xf)kpyA&{ zLsU?AXf(79Q50hKg*nTNUn#n9GJOtd*EOO|wC#dawBbJXU46EpV7xm$D%vF5aAcKD zCMw>8RLp5dDjFJ+P*Ee5&1x%DcxbaJJiHHinA46tM4|YJor!pC#mGZjk!@GoZnlxO zQMS>x-EDi=#@NP!@c}SC2*!uNh@4-C^3XOZ%aFxojJ8c9 z9zMl*_zYxbLgo;fnP1pR#O+T+TNx73<^$u?jEM7*h*1)@EzBb=VHH;ezEQFun}NSHSox7+(Y9f5G@aFrrd^1B`F>+qyLxuFoV-{;n3Sjg=TF@ zN!%Z8{}2m*vi)rP#rCW1H{0*FKWu;6{<8fI#^1pBI~e}}EJ_rVlg@pyk!t4u&&BCAAkTn^y zeo{Vv*0o`wyRZnESm*(P?<>T|Sr!3@H15JrHI+h16&@o+)m!tA3mMi*8Q5AzrgEg%#^)-0Ts1^Z4S?f@e0 zOGI1-LOvtn{zSy{41Z;xmwh2*O@hpm=raqW=QKT4xU#T?h`0&_YhU33AQYrY#J0i% ziB@9@J8)VSY{;tY>xfk|5?ECaV zau3GHv1lmvzCnbXu#=EGfRL9EAuk1C3?t+fNJ!yt;UD^eA@{+M`_<0~A+IaEfe3j$ z2*rJcH-a!OO+wyUc!x^J+li3lkyN6Y?8HYB2+2rwU*Ur)4{?jb0K&vHL>@2PLOgt; z@X5lb3ZE`~rtsOq=L(-Me4+3~5GI2#1%#;}Oaoy$2s1#K3BoK8_5@*ef8k3S4`0i= ziX7U7Zx9dXFdps=nNt;qwotm0hdY3WpAio~2VpP9!>^EshQEf~OFyU;d*4t#A}su| z@MmJ-Paw?gEBplnZ<;LpqwsH)g?|wXOK6h>x8QJ-1RdgWn=Bd)?FPG1p`o2uXjqnx z%rLtJd1%kEo9vQZwwvw4?IY~D_B=aUA>|;<17SW0eh?Obun>d_5Gp~a0wK_Ex2im} z+lQKm4$l~EcM}h*84qh9>srXVjuc}3P9ko9BHG6z5$zK|SfmlrJ{gHPbo9{O=?Ahd z$4wRWQ>UVRmL2!)`s}Dif_?TmAk?NuMZ4EthP<+ukf~Tli5Po}59emL>)Fc4Pu*^dBWRhm3J#(q5U@L1wu3-Zu@0`gEeAPEoUiQO!- z)9h!cR6JdwVk=V7egaYvKAoPL&q!V|>K(LsP?YP@) z$Mb)E_WMBCz_|Dzaq%JKBL0AI5OEPdkc&Nx9#7hzCN4e&!lpj^GawwCCKq3@zeHSo zk+^sWaq(qzG|Rb9DA2eORcw7;YB@@<8e6a`^NH#HzgN@9Lw|CWgP zvHcVKr}oe6pWDB%e`){9{raljtAic5KaW)q<;H%8Zm#e z|7`ySiTN85lSM%Y{{i7_5Y8cDp1V^?Zhs}|Fd{J>0thS&!m$ey(=l|&y^b7V90;eP z)hL_>Lk>k|wn~R+6mg7j~MRU>TNB>D7mhULX9tt%byDQW@4^^haNhE(GBs5H1Fx4}{GiTmr(SAfPtAyx%cfWu{}U>TqbRVUh$`g1KF1XxVB}z0s_|;ab)?$HIIg8t^#i2Y zZXnI}U;?3J-p%yktq#Q@G~IE#!o!CLkYXbDIi4gM-tTz8@u1@&$HR_C9FIC4b3E>N z0)$6FcnpNcLBPL12?ClPPlJG_$Fm?j*Y9{rqv3PvYR0jJX!ty%;fwle=9Qf^+yOLv zmuUDN2rn=ieuy;8xwOP}Lw5MD}?ir+haBAxgH z>BN^&CuVJ-DB3B>bRuKb9}dMQG~Mx+Lc~{5Au4-^D3-uqO~z?(nvjW3&dEECPQfWU zvz@y*hdPHjb3phn2>$~CZ38qv-UQ(-5Z(si9T46H;k|yRq%zStg4^iK%NXsn5EI{L zO#Fxfx`oflX8d9&6}LYXogMJAbgS@8J#no6w;kF#ksbZ5Cj z$S((wVhs?_@mExFbIF9$wqJCTIYk!Lv1be`or+j)-jT<3Yt^PLwsF9dN2h*=;a5C@C0`7n|3ArMV{&PPC$(j?;(PV^9Mc0P&ov?$ZsAhacZBd8pLU7^03ym zm{>K&RgY7%I2~6YhIVqvWHzN_)iT%qDiK2p5oe|&v%+;CF>$49m8->dfNQm@)wRae z=4y9!fVd}!vq78#;$9%`4dPr7y&#r=i1jb)cXet^Ts5C5Tm| z5Cc1zxC5AY3^DOo5X%`8Pe3NRPBeZ=KOoM7A#Lg>u3DCBv!Cm9*O^4dGeGqBxy}M{ zL7HSd&vhXw#q&uiE<~m1BBdx|Okx5T&Bb4MtC?hL7l<$HyzUuEW13Nx!wMY>2u zB19?`d4ub2BIb>*n_M@$ZgJh}y3KXF>kikQuDd|20Wk<-Er@j>)`PehM5I{*h)Y4- zr{8stM$8AY4C3cV%twfr`!ZtUD9wbdVMNU3JBhgih`EJ``4WiB7%^W(Vv7H8r_m2& z8R?XP@)^;QZ@F-buFv&0h@n2$yCCkLCM`d7eWL2fk4Z;1BCE1xns|q%WYt%$Z&f0G zqY$wv4UwPSnMA~2T)(=0bN%l6!}X`@FW29$f7}@$hCy5b;z|%#f!G4#0U)jhu@%HM zAhz|php0q!^XjU_olQh+XGA3nnFYO zRE36X(~+6&o`*bi&vEbN-rGIb?RA&9OWkE|pSv8y^&oBl@gNX4g18C9gF!q5#6v;s z1rhq)^EDn;sGe?jHSzE;#=|3-r&~O3Cl7Z35BDP;hCn==@o+ivFw5p{rXREy#Us=Y zpOmXjm+k}Ht;9ssB}etSQI{N@CKC^IcO$Lboit4!gVVIThoQDgr-O(#$C>@^Q#2}`u2J!9qT*SMis$H5ykI94cK{VHCn{b6;@OOf{Yb^3 zmkd>YAnO^(dRG0^r)Kw!?wg5!8yB}6~cwrhMPq|+q9zN}U#{I1OIrsDK7u+wpx42(&zYOBVAohW{8N^FK zycERCK)f78toxN9Ue)h@Rpa678V}zl9`-XHUZ?Z$=AAs;0X+PYc=#2FS2G@dODd6b ze~&*u(sqk@jq-Udu3d&pE~cq|bN@kHM3s4cpZiY`Z%B`eo(xZx!bQ&z;^K`+EDuKt z?xq9F62Z$@S!U@;w%h)l=ZHc?vz~K)ek^ z^q}4W;+-Jg1>)Tx-UH&jAl?V!{rw)NN=HwTN=MHqqT>UMjt}W{d~7Ejw?7>{Q<09I zX&^qR(a|$gnW6cqSvGzud33%|KbWQHnd>P*B6`pp@^GIAy&-sDC7qxM&pgipkBk>T;_m>$D4@DlPj1lu3e9n;YGQ~!=e!&{?%8M2jbu9@vx|% z$gc3PsE~O050NU9c-WJQhebt2BNZMN?M6Jz&P+pOY|(^_yi1CTi^dg=hwLoKMmg@1 zqKQS5iY7xg582s}J&X$Mz(>?;dfJrh(${yZPeyeGn^uL_gu51oH-x0A$r8{rPk2Fj zGfI|)yYS%xW6G`O9o^dR#aBxtFH={;r*SPi^?*NWXSW1 z{DeFovUlk#S^(KYB=8INZ?Q4~<#?wjG8R#H+rp|rScV(En9DJA7Iic6-HOf8;V zUOr{Yw3$<X<&KzlYf4#xKU)vGv-SfBjmUNmaT zvwrcP0S}ChPk-_TrA6gl9z8fMDo^SI9c^0^pTyr{NP>@5{coG|&sQZyr-oeXqlZQh ziyj_5B6?)>sOaSAl<3jXW74AXrA6gWi@G~4sz6%QJ!w$|)1nHcMctbgbzfRk^!iXZ zdTb~h9*mw4Ju!Mx^b^rfM*ByXX;Fo}6Sqx^x<4)IfwZV1X;BZRMLm=j^>FF~?fWLy z8PK(eu|mq300S|Hlv7_~w@ZJ{;e7 zquqFgXQ6f1guY$Vzew%B-Mdlzjc-BdoIS^lD{Cfn@8f&cx(`W8=-KXHFaFn$Z&Xyb z>%hJPJmz=(dp(VPLalEx?4g`&|GDe`!>?5Pua*3dt1JD#Y+LIak5A|9IsfC;rOFpC z+4{zYx4-e1Qss)4`sX~CM6XPL%$7zki(VeRA}y+DT2!&LsN!i+C00eRie4SPCVFjJ zRLQicQfX18)1u0xKW4dXNlo9QGt{?rH}9GLt#~c_4oM$Up8w+qt$j`9-=A3gfBvZH z;Ph|eF_Du0$E#|^r+@WF`j1;A4fG9{BW~ zUm3kCdUy1yw5SScQ57|r-dpznvYM&^JE)OUgTEf8>9^Fs5tw{w;bA_U)X1 ze^KB=|NGT9&S>3rKvGZ7_Kp8*_RoKU68&cM+y6uHS(iq?8+|DK``Mx@r$tpsE!I60 zx<5lGbS(O)xAu1>$bA-smWfr$d3%|Xje{trGi;musrDZ~V{E*bhmh5?N zy)EaRcNci*;gXdqSBb7#vwnkyjT*OT(>AVitHOhl1`If!_4aJp@5s@%iLWdNeoO71 z(08!>-Q}^aiGP1zsO!?-;G%0ha3keAp2(hh^DU{FQ*+zv;_2Ul((}ewleDUzenyPn z4UXUbNYP@&OZdXY8|VJlegCz>`Tp}K|JGox9H|laza_o1Qjg|eS-MQw)GVn{skg2y zSH42(ZQlLvO3mr1y>W~5CjRx}&e;n!X;G_XdLeatc1?c+YVnUxw*R+F^8E9XR`pvY z`e^Te{peV(+pE=BUOn~p)H~D9j;WJ>MXlPY*;2Ews9P`fj?^6Kr{;I}f8II$+gRiO z?TaWi{I8#;e{<1)eMM#VkUjIUCQW0TwZAdZK@x3yLzWD;X2_Z$dxjht?#z%YL)i>XGQ?(Ro}o>KZW;P#7@lENhVdDm%rHO0q717t zypUmMhQk?-X86h%1^<@eT!u>-vu4bGW3Mwr{_!@_{U3k*$6qq~eYWb2Kj@u^{-EQ( zrs2)1n?rEq3F|zao`xT-oFAzb_pA z{&wga|2|{*a((8GnRaJ-!1oz8^xcKEGd9eyDx3eE!}atp7xb-#>EBHl`}emG`d@e# z^4*0uy_Q->!RbZk3O@eJiDKtb*$8nxt6OCGi4DMtn5l&1>Ss6h<1>CFUWljkMgM$dV!8d+w{E^idK zaXYy&%e?tn=HY4}EuOj2TGR%9HKe)i3T*3MI z^5EY2)SOSv`PBSKJGwE2S-4lxLg=+>Emnz!w4w|B8Av>4SS*oL#O)19O4-ID*h?XEB*z)Viv_Oq2J_(3z-r*xoath~{aDEBrm#`Bh&T@|PT;xx#aFy#Jlq`rdOPY1bL8LIB z1*~Bk+mUI>7kQbTyou+x z?c)INa~eIA(nBdTDMZTKDV>|Vv_<4m^v_;(&>{$iZR!C(rOOZ)M_pIo; zirp~FioNN_0NlT#S}HDNJsa7~R-R)AFYpqtaMo{E599nwqp(Yr&V^9<0ZLGX>eR&U zRIbZo^dgbrj3k*f#xa3OsJHSy4)ZnNBLB)iVwROXi#DM@ zYG10lN7aeg$*Pl?%?8}B>Z=^$13uy;&Zzn+daSC)s(P%d$Etd)s>f>CC`wcM;Jj+G zt0uc@DU3mW)#jq^YAadITGrv*YMz5?dy#3i*La(Ek#Dv4IELq>nsbdTRL_DOs~6+} z9z3RA=BD+ug-1cB|im_W1XT@L?3mk zQk_P$qbKpmwT{`Um8)yH(Fj>#3t&P29X*98=L>z0J5sz314$3%rEgsb@Cz^jlBA^<-P`Lq5iN z^-gn!&yjb%Z~2~|_=Vp>cq}XGcq|qvyCx zUFnX@>i5RX>f8PL!x=>isf=Yj%h6MPyH)>rUc{O8_p%SWR{t2EqW1bfpyv92axH`g z5pE(2@@#NB*)fj>_fv^lv`2jnhGI7xJi{WEvVzq-%LX>_CU5aBhj|ZmG%Wb{cEJwMh$oyJJrZN8-0R%Hu^CHEriAy$&5KPzKv|;;4a*|v3obZhcdW#;|f%w z3e}0hUNv@JC|?bL?af`*@uLyu~{l;v{C- z#C|vV68SWdPgC=2s`jS2$;aK8Thqckz=M=W{Y_=m)brBR{F=6<16?r7re@jHESnBx z21|LB*LZ`2sHLg>YI+pA)zr+I{>tx|Q`3w5$rY}K5G&(Y{l}^))|_JR<9^f>`v}GH zz8PBf`>+WYSC~ z%|7B2zQetnyLWT?ObznYkn7b$WKY!zq$K2H?!sysX}#}*WAuEcV2Vn zHMeuk`!Ih-^K7a9mNjUM09v-f&b91FXS&e?b8R^pHMIPK z^fSKY2Y$wUTAt$qmqKWD2hMJ#&sNTECAU`Q)XJP%JxEoY+o~3JsgS)ygwY2KTK;n6vIV@)tYj~FJyvl35!2ynNiZgtUd|G|SdD82=%wPVIm5f@;rS$`- zul2*2b8B_BR%h!N%(Zn3y3n0o^kFb5q%xNA%tVc?pJqO*QDf`%*!woI=&Oy4+jK?7 zZS>VC9p-?$Kr;OVD>4eYde2ZR|!HyU|A9ZT6$@HV1i|chP^Fqa4SK+Ge8+ z@@+eUrO2zTnYN2yN7@xZ|LuxVf(q0`|Ly8xR_*L{J3G^^DRJndT{n6nlXm@>gbdm( zU=eC>w~{r;qMa<->7kt-+P%eL)Y|TSKIRiXq5;ls@9g$=rM+I-x5cis z?}YiZA3-u>NMjrmP*eLE$gsT(+pk3(?KiQN?Yw}x+V4b`?cd=LNBElGInPD@48gIX zLsqh*#twIqp9gt_VwB)fVyHts7ALPbvx_skxMy*G+yTA`p<@(9iDf9yAis_uA*YVl{G;FqH<6ia+~>s=%j~Ep1)2tsD<1*>7!FT>h9#MP9qpiDrVeCW}VdEX&%d1fs8us;6+|x zFZ+0%H#xzNA#_$>=lfAZXEk&-x6UPzYv*!Qq%tjOLwn@gxf5MbTW8sJR!e8Kbe@RW zb@nWGmThO*cAkq|J1=AjYV2%|o$X%d=TK*7^>qG%ulbhm`IW!89zqvccFD-C$gxX) z3Q!O^b}24&9MVr)Yqj4y%>P(x+EjNE^6+g#x9Fkirl)aVk2hRWfyyRl|#J8 zG2Z8MzTz9c3!$qSbk%FuIXuk**02-z=qmfJuVa6@zK#2JbwB^LPw4sqAM*=mIfotU zdXdXqMF!nu(CsENa|`Cytu}p_%x2Wq?NSKcb0drHEr>%F-DT0e2Ll<(a7K}WEV_?n zJTuWp_jx?SV&v0Z9^K!)c3 z{`RyFJ=4#VMNe7u{DX@j^tz2~+<_W;$)T4TdgZ481-TE|^m>3=bVDY+p5@CCIW0``?dOwXl?7a}R_f~uF6>Q--7$lDdw7-o$hglTzCgBpWZOr!ebm=SeSKuxN49+~qrSd@45+bh4(>!=ebv{uDm93q zHjQXU9G&PwFA^EbaAez8{eA6W-?_{~&3!kZ-oEPXE4#jXd4pq|;6pw}y?xJf2{rcp zD};VGVF&uDt)JTZ<-rd2D~tU4RirY_=}b4|*iUW!E^s}B{@x4vyHEcXsJp*w`n#ro zZ`9a-6)&?3we{bR`uZQ_9S(Dp_fczqGw=T^GVOm3HTPF@e{=7DErbDb9gvYs+)QEY z=K$vo@VpN2d=5Cy#SjMSY2c%%e_#h>JFqL=aif7r3}+OhNn;#x9w_I5bD7UVmaq&N z4}6;=sC%Hg2g-NgCw$6hsDI$^{1L(+`3%ZT7H&h{gL0y_LGm6X??E+b%3u;v*C2Hb zQr94L4N}*j@k~MugI2PJb(sGkJrCN#OUQJPOb4lLklF^xbkIpoqqad`@(uQ3(0MLl z9|qZnc=g2J&x1TdG0ISbTGXK)YK^z6@pdA!ZbW*@$!sc&Sti; zo#(L+@o#W|xA*{g#>+Ea&GA3*Gct`o8^Yjt+<&n94^Cwq?mu`n&mxb(&KT^B!8>@7 zS1`B1ukson;r@f&fAAST=PSPDdw%2>e#0Ce&qi^YGlco<;foLwA{3%3b*WDyn$U(W z$S0u}eX(~5gD~ra1l%tn4f9Pf--O9L#dJ2}*-3C#g4z?*o^X)2Im8h@Mg0ltO*qE| z{^VK+iGhq{;!a9Z4RcHMoF?|5H)fYO5H%%wQQ}aXpJ--@o`FRDCO*R=marC?CdxEX zU5V;Sd=v9ad>3^k9^(Y|FHyFMvQ0G0#GgVKatl%9CLecm4-Zj}id06XLmJSSrZl4y zU6JXKp2%=W62ln56R3HJnun-)h?IXoP%*$!AzgTGN*HnC~!s3^U(h<~z)Mhb1wKrL4j{ zhpBy-e1>gfJI|wsVR{%Qn_(ZL)?uEPVPEkL-{V;sb~%LMxhO#_Eog-rhRbrenGH9y z;XP2#@KnYzktdnLQ%q+*>KeWR&-CzTk;Cv8d4*lJ&(Vkr{K;Qj4`E~m+;gORj=YuIxq~}#&yhtb zPD#vWq}hzDfZ2?!LUn3lP9x2AIgc|9`!(tr)Hq6wqhv73Tt@9c z4x{8S$_|g(%RXM?J&t3CN14^AQ`oCf_9|KJ$ysq$at?AMm*l&-2bm8mQD3t9k{6-AWV1?MjXIMzV2_gRP4e3uLT$;%ka4p5lF#r57rD&U5K;me z$xIf^E=9d5>P@+mdnt@rraVY}TGI|YmeLV>o-&YlWSKIWG{!N3$*4U=?I~(cS;9-0 zMan_coANI5OOaoS{8B#SSN`I92%{sYb98ocau@O(t+vrcuoI*0*=Rd3x-v2yU7e5k z8v8oh+(-Y!pCOE~Ph;%U7(I@0pE3C;Kp~>h?-=(SW6#Faq&9UipD_(EqcO2~=EivD z#Q8G%C%V&%z6@e8i6k+e^}NGj)RU&3 zH1(u?j9Sv{Q`#5U^|WgtjI~Q+&1h^UZYGMH$aJi_#@>%vjeVV?xZl_l=x?kUjlIm( z5XQOBIQJQsnJnCfog8N;$K6F9^fs;}`Wsi4a_Dbd70i8{nT<2Eab`A7&*OTcr*Y3B z<8ksEZ}#IW(1xMRW)VyAY>i*VCSKrWcCnZJ=wbYu=wZA}#>-^9OvcM({O8DH!mVUS z1{2gh!H!L^V-pH;FY2FAhDV8^9t~(rb6TRd3GL{^WM0Bq6Pz`{E=+LNgs=FPANZNy zLYOGGiE^7Lw~2C_sMm?PkljRQPb^18s!$#0PppHiCN`uA_GF?OCbp(Kc4eYECideg zo?$UdS^qS_~Z!fEX7q?@=I^-hx4B=t?okDMmSX;N`K&y%WA z19eVnihL%iZIaq1scn+lCaGpdXz@PlZ zwGbxDVsduu%;a3;nYDyD2 z(21_}K&?~EYsx^>J0+Phq%n@gtY;JIniZRoFo0*3+TgTVVYj1nfmE2PpeNOn$jF+OtaV1?C`V%60rx>U^5|qYnPFLr2HBOhqbU92{bnnZwh}=OffL{ae20rx0e`i5bi&hdgG;Vn%ghuyZpWqan_m(TtWjcZPFkICq9~ zXUJzp62louGIE-ch8>(Crx|DW<`+|SELqOVgUn{BeU`jt)kj{l)IF;Ot!Ybd`r-Up@|rb)Cz!$v)HG`@ z^RUmec5nju%~Ibi_09SW{ml9XSY`x9Cg7?_0CrB>@WC= z3n9$ONM_VKN0xJPlaIT(hhkKsD%DZv96K;amUCn|rxj|O(-V2l>B~??Fp88A<`$$V z#VJV{YT&hV&0%f_I?)w9&UK%;<}!C6gE61E<}%k@=03%AW-)jV0ulf}FO=waTyM5Bj!dYD%Z&&oW{ z$~-fir;mAkQ1?7%%}ZbyvY6*tm^T{r&zphS%`>}s&$5ZFZ099jVK;j@%-Im;XW?Or zQ35+O-ww^UL-Q-+{P|`xzdar4LU+t%zC7of%Y60BSId00%pb#8#v{x5vYcX9CWA<|b}NCeL`ro_UaZ^yewI@gY}2SeTEBw5Bt5b)ifa z%4FeSDp*sVpLjYYLl*CP9~$nGy1i24>KG8A<#Qs*MsE;6G<3t7T4)U{|8 zn=rdYukj{t@h(R&$3-Vl>ms!-I?WIK%&*9Nu^JbvYq7c(t7~yV?x!@5Ql5&`r9KU5 zOnW*a-^E=S#N()aaT4R1i5*+~H0ob0$HjJk@p?A$GP|%Ri}kSh5O!m+x)`!t0l5p zauhqcgg6DHtFZwb7 zxhI_HKD1X1Cn?*K&O?AB)Cdc`JkFjsd zf96;I;(7=xWVa$C*~!UWtK4tZRAja485Xk}8Lc{uoL1>&)t7t|!s?s36Ira*-|EVk(`s{C z-30Zo9?mF6W4~9+eYI>>Z{sK@`Ihhao*zS4a}#!9&E4EjaY`ZQHTqd2!!`C}O+Dnb zrX%uNqy9B^aLsDgVh`7t@fvejV-9Ox;AQOLniJT=HS$_>nlpUP4_x6|2x}v#WvxEf zMxmy)c3^Ez?7-UlP~X}jJVY&Gk@Z?LT-%0D$YJdu1|#dWX1CUkt{u-rX7e=jk^9

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 diff --git a/PayButtonSDK/PayButtonSDK.xcodeproj/xcuserdata/osamarabie.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/PayButtonSDK/PayButtonSDK.xcodeproj/xcuserdata/osamarabie.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index cd30f1e..03bac34 100644 --- a/PayButtonSDK/PayButtonSDK.xcodeproj/xcuserdata/osamarabie.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/PayButtonSDK/PayButtonSDK.xcodeproj/xcuserdata/osamarabie.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -7,32 +7,16 @@ - - - - diff --git a/PayButtonSDK/PayButtonSDK/PayButtonExample.swift b/PayButtonSDK/PayButtonSDK/PayButtonExample.swift index 325c96b..05b3a5a 100644 --- a/PayButtonSDK/PayButtonSDK/PayButtonExample.swift +++ b/PayButtonSDK/PayButtonSDK/PayButtonExample.swift @@ -15,68 +15,54 @@ class PayButtonExample: UIViewController { @IBOutlet weak var refreshButton: UIButton! - var selectedButtonType:PayButtonTypeEnum = .BenefitPay + var selectedButtonType:PayButtonTypeEnum = .GooglePay var dictConfig:[String:Any] = [ - "operator": ["publicKey": "pk_test_YhUjg9PNT8oDlKJ1aE2fMRz7"], - "scope": "AuthenticatedToken", - "purpose": "Transaction", + "operator": ["publicKey": "pk_test_6jdl4Qo0FYOSXmrZTR1U5EHp", "hashString": ""], + "scope": "charge", "transaction": [ + "authentication": true, + "authorize": [ + "type": "VOID", + "time": 12, + ], "paymentAgreement": [ "id": "", "contract": ["id": ""], - ] + ], + "reference": "trx", + "metadata": [:], ], "order": [ "id": "", - "amount": 1, - "currency": "SAR", + "amount": 0.1, + "currency": "KWD", "description": "Authentication description", - "reference": "", - "metadata": ["key": "value"], + "reference": "ordRef", + "metadata": [:], ], "invoice": ["id": ""], "merchant": ["id": ""], "customer": [ "id": "", "name": [["lang": "en", "first": "TAP", "middle": "", "last": "PAYMENTS"]], - "nameOnCard": "TAP PAYMENTS", - "editable": true, "contact": [ "email": "tap@tap.company", "phone": ["countryCode": "+965", "number": "88888888"], ], ], - "features": [ - "alternativeCardInputs": [ - "cardScanner": true, - "cardNFC": false, - ], - "acceptanceBadge": true, - "customerCards": [ - "saveCard": false, - "autoSaveCard": false, - ], - - ], "acceptance": [ - "supportedSchemes": ["AMERICAN_EXPRESS", "VISA", "MASTERCARD", "OMANNET", "MADA"], - "supportedFundSource": ["CREDIT", "DEBIT"], - "supportedPaymentAuthentications": ["3DS"], - ], - "fieldVisibility": [ - "card": [ - "cvv": true, - "cardHolder": true, - ] - ], + "supportedSchemes": ["AMERICAN_EXPRESS", "VISA", "MASTERCARD", "OMANNET", "MADA"], + "supportedFundSource": ["CREDIT", "DEBIT"], + "supportedPaymentAuthentications": ["3DS"], + ], "interface": [ "locale": "en", "theme": UIView().traitCollection.userInterfaceStyle == .dark ? "dark" : "light", "edges": "curved", - "cardDirection": "dynamic", - "powered": true, + "colorStyle": UIView().traitCollection.userInterfaceStyle == .dark + ? "monochrome" : "colored", "loader": true, - "colorStyle": UIView().traitCollection.userInterfaceStyle == .dark ? "monochrome" : "colored", + "powered":true ], "post": ["url": ""], ] @@ -84,6 +70,9 @@ class PayButtonExample: UIViewController { override func viewDidLoad() { super.viewDidLoad() setupPayButton() + if let jsonData = try? JSONSerialization.data(withJSONObject: dictConfig, options: .prettyPrinted) { + print(String(decoding: jsonData, as: UTF8.self)) + } } @IBAction func refreshButtonClicked(_ sender: Any) { @@ -149,6 +138,8 @@ class PayButtonExample: UIViewController { let signature = HMAC.authenticationCode(for: Data(toBeHashed.utf8), using: key) let hashedString = Data(signature).map { String(format: "%02hhx", $0) }.joined() return hashedString + + } /*func setConfig(config: CardWebSDKConfig) { diff --git a/PayButtonSDK/PayButtonSDK/PayButtonSettingsViewController.swift b/PayButtonSDK/PayButtonSDK/PayButtonSettingsViewController.swift index 9ec0f34..d8e4122 100644 --- a/PayButtonSDK/PayButtonSDK/PayButtonSettingsViewController.swift +++ b/PayButtonSDK/PayButtonSDK/PayButtonSettingsViewController.swift @@ -56,7 +56,7 @@ class PayButtonSettingsViewController: FormViewController { form +++ Section("scope") <<< AlertRow("scope"){ row in row.title = "Scope" - row.options = ["charge","authorize"] + row.options = ["charge","authorize","taptoken","googlepaytoken"] row.value = (config! as NSDictionary).value(forKeyPath: "scope") as? String ?? "charge" row.onChange { row in self.update(dictionary: &self.config!, at: ["scope"], with: row.value ?? "charge") @@ -187,6 +187,34 @@ class PayButtonSettingsViewController: FormViewController { }*/ + form +++ Section("acceptance") + <<< MultipleSelectorRow("acceptance.supportedSchemes"){ row in + row.title = "supportedSchemes" + row.options = ["AMERICAN_EXPRESS","MADA","MASTERCARD","VISA","OMANNET","MEEZA"] + row.value = Set((config! as NSDictionary).value(forKeyPath: "acceptance.supportedSchemes") as? [String] ?? ["AMERICAN_EXPRESS","MADA","MASTERCARD","VISA","OMANNET","MEEZA"]) + row.onChange { row in + self.update(dictionary: &self.config!, at: ["acceptance","supportedSchemes"], with: Array(row.value ?? ["AMERICAN_EXPRESS","MADA","MASTERCARD","VISA","OMANNET","MEEZA"])) + } + } + + <<< MultipleSelectorRow("acceptance.supportedFundSource"){ row in + row.title = "supportedFundSource" + row.options = ["CREDIT","DEBIT"] + row.value = Set((config! as NSDictionary).value(forKeyPath: "acceptance.supportedFundSource") as? [String] ?? ["DEBIT","CREDIT"]) + row.onChange { row in + self.update(dictionary: &self.config!, at: ["acceptance","supportedFundSource"], with: Array(row.value ?? ["DEBIT","CREDIT"])) + } + } + + <<< MultipleSelectorRow("acceptance.supportedPaymentAuthentications"){ row in + row.title = "supportedPaymentAuthentications" + row.options = ["3DS"] + row.value = Set((config! as NSDictionary).value(forKeyPath: "acceptance.supportedPaymentAuthentications") as? [String] ?? ["3DS"]) + row.onChange { row in + self.update(dictionary: &self.config!, at: ["acceptance","supportedPaymentAuthentications"], with: Array(row.value ?? ["3DS"])) + } + } + form +++ Section("interface") <<< AlertRow("interface.locale"){ row in row.title = "locale" diff --git a/Sources/Pay-Button-iOS/Logic/RedirectionBasedButtons/KNET/private/views/RedirectionPayButtonView.swift b/Sources/Pay-Button-iOS/Logic/RedirectionBasedButtons/KNET/private/views/RedirectionPayButtonView.swift index 4403509..1258499 100644 --- a/Sources/Pay-Button-iOS/Logic/RedirectionBasedButtons/KNET/private/views/RedirectionPayButtonView.swift +++ b/Sources/Pay-Button-iOS/Logic/RedirectionBasedButtons/KNET/private/views/RedirectionPayButtonView.swift @@ -9,7 +9,7 @@ internal class RedirectionPayButton: PayButtonBaseView { internal var webView: WKWebView = .init() /// keeps a hold of the loaded web sdk configurations url internal var currentlyLoadedConfigurations:URL? - // This means we are ok to start the authentication process + /// The view that will present full screen 3ds flow internal var threeDsView:ThreeDSView? //MARK: - Init methods diff --git a/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/BenefitPay/views/private/TapBenefitPayView.swift b/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/BenefitPay/views/private/TapBenefitPayView.swift index 81eaac2..240721f 100644 --- a/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/BenefitPay/views/private/TapBenefitPayView.swift +++ b/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/BenefitPay/views/private/TapBenefitPayView.swift @@ -68,7 +68,7 @@ internal class BenefitPayButton: PayButtonBaseView { */ } - /// Used to open a url inside the Tap card web sdk. + /// Used to open a url inside the Tap button web sdk. /// - Parameter url: The url needed to load. internal func openUrl(url: URL?) { // Store it for further usages @@ -83,7 +83,7 @@ internal class BenefitPayButton: PayButtonBaseView { webView.load(request) } - /// used to setup the constraint of the Tap card sdk view + /// used to setup the constraint of the Tap button sdk view private func setupWebView() { // Creates needed configuration for the web view let preferences = WKPreferences() @@ -157,8 +157,8 @@ internal class BenefitPayButton: PayButtonBaseView { /// Call it when you want to remove the benefitpay entry and get back to the merchant app - /// - Parameter shouldStopOnCancel: Whether or not, we should listen to the onCancel coming after this event or not. - /// - Parameter onDosmiss: a callback if needed to do some logic post closeing + /// - Parameter handleOnCancel: Whether or not, we should listen to the onCancel coming after this event or not. + /// - Parameter onDismiss: a callback if needed to do some logic post closeing internal func removeBenefitPayPopupEntry(handleOnCancel:Bool = false, onDismiss:@escaping()->()) -> Bool { guard let viewController:UIViewController = UIApplication.shared.topViewController(), viewController.restorationIdentifier == "BenefitQRVC" else { return false } diff --git a/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/private/extensions/TapGooglePay + SwiftEntry.swift b/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/private/extensions/TapGooglePay + SwiftEntry.swift new file mode 100644 index 0000000..14ca2e8 --- /dev/null +++ b/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/private/extensions/TapGooglePay + SwiftEntry.swift @@ -0,0 +1,54 @@ +// +// File.swift +// +// +// Created by Osama Rabie on 02/11/2023. +// + +import Foundation +import WebKit + +internal extension GooglePayButton { + + + /// Will create a view that contains a full screen web view to display within the google pay modal popup + func createGooglePayPopUpView() -> UIViewController { + // The container iew + let view:UIView = .init() + view.backgroundColor = .clear + + //webView.isHidden = true + webView.removeFromSuperview() + view.addSubview(webView) + + // Define the constrains of the web view to be full screen + let top = webView.topAnchor.constraint(equalTo: view.topAnchor) + let left = webView.leftAnchor.constraint(equalTo: view.leftAnchor) + let right = webView.rightAnchor.constraint(equalTo: view.rightAnchor) + let bottom = webView.bottomAnchor.constraint(equalTo: view.bottomAnchor) + + // Activate the constraints + NSLayoutConstraint.activate([left, right, top, bottom]) + + self.webView.translatesAutoresizingMaskIntoConstraints = false + + + let ctr:UIViewController = .init() + ctr.view.backgroundColor = .clear + ctr.modalPresentationStyle = .overCurrentContext + ctr.view.addSubview(view) + ctr.restorationIdentifier = "GooglePayVC" + view.translatesAutoresizingMaskIntoConstraints = false + + let vtop = view.topAnchor.constraint(equalTo: ctr.view.topAnchor) + let vleft = view.leftAnchor.constraint(equalTo: ctr.view.leftAnchor) + let vright = view.rightAnchor.constraint(equalTo: ctr.view.rightAnchor) + let vbottom = view.bottomAnchor.constraint(equalTo: ctr.view.bottomAnchor,constant: 60) + + // Activate the constraints + NSLayoutConstraint.activate([left, right, top, bottom, vtop, vleft, vright, vbottom]) + + return ctr + } + +} diff --git a/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/private/extensions/TapGooglePay+WebDelegate.swift b/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/private/extensions/TapGooglePay+WebDelegate.swift new file mode 100644 index 0000000..118bfca --- /dev/null +++ b/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/private/extensions/TapGooglePay+WebDelegate.swift @@ -0,0 +1,239 @@ +// +// File.swift +// +// +// Created by Osama Rabie on 02/11/2023. +// + +import Foundation +import UIKit +import WebKit +import SharedDataModels_iOS + + +/// An extension to take care of the notifications being sent from the web view through the url schemes +extension GooglePayButton:WKNavigationDelegate { + + public func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { + var action: WKNavigationActionPolicy? + + defer { + decisionHandler(action ?? .allow) + } + + guard let url = navigationAction.request.url else { return } + + if url.absoluteString.hasPrefix(payButtonType.webSdkScheme()) { + //print("navigationAction", url.absoluteString) + action = .cancel + }else{ + print("navigationAction", url.absoluteString) + } + // Let us see if the web sdk is telling us something + if( url.absoluteString.contains(payButtonType.webSdkScheme())) { + switch url.absoluteString { + case _ where url.absoluteString.contains(CallBackSchemeEnum.onError.rawValue): + self.handleOnError(data: tap_extractDataFromUrl(url, for: "data", shouldBase64Decode: true)) + break + case _ where url.absoluteString.contains(CallBackSchemeEnum.onOrderCreated.rawValue): + delegate?.onOrderCreated?(data: tap_extractDataFromUrl(url, for: "data", shouldBase64Decode: false)) + break + case _ where url.absoluteString.contains(CallBackSchemeEnum.onChargeCreated.rawValue): + self.handleOnChargeCreated(data: tap_extractDataFromUrl(url, for: "data", shouldBase64Decode: true)) + break + case _ where url.absoluteString.contains(CallBackSchemeEnum.onSuccess.rawValue): + let _ = self.handleOnSuccess(url:url) + break + case _ where url.absoluteString.contains(CallBackSchemeEnum.onReady.rawValue): + delegate?.onReady?() + break + case _ where url.absoluteString.contains(CallBackSchemeEnum.onClick.rawValue): + delegate?.onClick?() + break + case _ where url.absoluteString.contains(CallBackSchemeEnum.onCancel.rawValue): + let _ = self.removeGooglePayPopupEntry { + self.delegate?.onCanceled?() + } + break + case _ where url.absoluteString.contains(CallBackSchemeEnum.onClosePopup.rawValue): + let _ = self.removeGooglePayPopupEntry { + self.delegate?.onCanceled?() + } + break + default: + break + } + }else if url.absoluteString.hasPrefix(googlePaySDKUrlScheme) && url.absoluteString.lowercased().contains(googlePaySDKPopupKeyword) { + action = .cancel + // This means, GooglePay popup wil be displayed and we need to make our weview full screen + // Googlepay uses this scheme mu;tuple times during the same payments, so we need to make sure that we are nont already preseting the popup + guard UIApplication.shared.topViewController()?.restorationIdentifier != "GooglePayVC" else { return } + showGooglePay(for: url) + //topController.googlePayUrl = url.absoluteString + //topController.startLoading() + }else if url.absoluteString.contains("__WA_RES__") { + action = .cancel + let _ = self.removeGooglePayPopupEntry { + self.delegate?.onCanceled?() + } + } + } + + /// Will handle & starte the redirection process when called + /// - Parameter data: The data string fetched from the url parameter + internal func handleOnChargeCreated(data:String) { + // let us make sure we have the data we need to start such a process + guard let redirection:Redirection = try? Redirection(data), + let _:String = redirection.url, + let chargeID:String = redirection.id else { + // This means, there is such an error from the integration with web sdk + delegate?.onError?(data: "Failed to start authentication process") + return + } + // Let us pass the charge created id for the delegae + self.delegate?.onChargeCreated?(data: chargeID) + // Let us see if we have to redirect or now + if !(redirection.stopRedirection ?? false) { + showRedirectionView(for: redirection) + } + } + + /// Handles the case and the post logic needed after getting onSuccess from the web sdk + /// - Parameter url: The url passed from web sdk to indicae it is an onSuccess with needed data + func handleOnSuccess(url:URL) { + self.webView.isHidden = false + let _ = self.removeGooglePayPopupEntry { + self.delegate?.onSuccess?(data: tap_extractDataFromUrl(url, for: "data", shouldBase64Decode: true)) + } + } + + /// Handles the case and the post logic needed after getting onError from the web sdk + /// - Parameter url: The url passed from web sdk to indicae it is an onError with needed data + func handleOnError(data:String) { + self.webView.isHidden = false + + let _ = self.removeGooglePayPopupEntry { + self.delegate?.onError?(data:data) + self.webView.isUserInteractionEnabled = true + } + } + + + /// Will create a full screen modal to show the google pay flow + /// - Parameter for url: The URL generated by the google pay sdk to complete this payment + func showGooglePay(for url:URL) { + // Let us init a modal view controller + googlePayController = .init() + googlePayController?.isModalInPresentation = true + googlePayController?.restorationIdentifier = "GooglePayVC" + googlePayController?.selectedLocale = currentlyLoadedConfigurations?.getButtonLocale() ?? "en" + googlePayController?.googlePayCanceled = { + self.googlePayController?.dismiss(animated: true) { + self.openUrl(url: self.currentlyLoadedConfigurations) + } + } + // Set to web view the needed urls + /// The redirect url scheme + googlePayController?.googlePayUrl = url.absoluteString + // Set to web view what should it when the process is completed by the user + googlePayController?.redirectionReached = { redirectionUrl in + self.googlePayController?.dismiss(animated: true) { + DispatchQueue.main.async { + // The decoded token if any + let token:String = self.fetchGooglePayToken(from: redirectionUrl) + // pass to the sdk + self.passToSDK(googlePayToken: token, fullUrl: redirectionUrl) + } + } + } + googlePayController?.startLoading() + DispatchQueue.main.async { + UIApplication.shared.topViewController()!.present(self.googlePayController!, animated: true) + } + } + + /// Gets the json part of the google pay token after redirecting from google pay sdk itself + /// - Parameter url: The url google pay redirected the user to after finishing the payment flow + func fetchGooglePayToken(from url:String) -> String { + // Remove non needed parts + let filtered:String = url.replacingOccurrences(of: "\(self.currentlyLoadedConfigurations?.absoluteString ?? "")#__WA_RES__=", with: "") + // Turn it into pretty json string + let decoded:String = filtered.removingPercentEncoding ?? "" + if let json = try? JSONSerialization.jsonObject(with: Data(decoded.utf8), options: .mutableContainers), + let jsonData = try? JSONSerialization.data(withJSONObject: json, options: .fragmentsAllowed) { + // If parsable, let us send this object + return String(decoding: jsonData, as: UTF8.self) + + } + return "" + } + + /// Will create a redirection UIView and display it alert level on top of the current screen + /// - Parameter for redirection: The redirection model that contains the redirection URL + the redirection finished keyword + func showRedirectionView(for redirection:Redirection) { + // This means we are ok to start the authentication process + threeDsView = .init() + threeDsView?.isModalInPresentation = true + // Set to web view the needed urls + /// The redirect url scheme + threeDsView?.redirectUrl = payButtonType.tapRedirectionSchemeUrl() + threeDsView?.redirectionData = redirection + // Set the selected card locale for correct semantic rendering + threeDsView?.selectedLocale = currentlyLoadedConfigurations?.getButtonLocale() ?? "en" + // Set to web view what should it when the process is canceled by the user + threeDsView?.threeDSCanceled = { + // dismiss the threeds page + self.threeDsView?.dismiss(animated: true,completion: { + self.handleOnCancel() + }) + } + // Hide or show the powered by tap based on coming parameter + threeDsView?.poweredByTapView.isHidden = !(redirection.powered ?? true) + // Set to web view what should it when the process is completed by the user + threeDsView?.redirectionReached = { redirectionUrl in + self.threeDsView?.dismiss(animated: true) { + DispatchQueue.main.async { + self.passRedirectionDataToSDK(rediectionUrl: redirectionUrl) + } + } + } + // Set to web view what should it do when the content is loaded in the background + threeDsView?.idleForWhile = { + self.threeDsView?.idleForWhile = {} + DispatchQueue.main.async { + UIApplication.shared.topViewController()!.present(self.threeDsView!, animated: true) + } + } + // Tell it to start rendering 3ds content in background + //SwiftEntryKit.display(entry: threeDsView, using: threeDsView.swiftEntryAttributes()) + threeDsView?.startLoading() + } + + /// Handles the onCancel when the user is 3ds page on google pay card and wants to go back :) + func handleOnCancel() { + self.delegate?.onCanceled?() + self.webView.evaluateJavaScript("window.cancel()") + } + +} + + + +extension GooglePayButton:WKUIDelegate { + + public func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? { + //let (viewController,web,_) = createBenefitPayWithAppPopupView() + + if let url = navigationAction.request.url { + //print("POPUP : \(url.absoluteString)") + /*web.load(navigationAction.request) + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(500)) { + //self.updateLoadingView(with: false) + if let topMost:UIViewController = UIApplication.shared.topViewController() { + topMost.present(viewController, animated: true) + } + }*/ + } + return nil + } +} diff --git a/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/views/private/GooglPayPopupViewController.swift b/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/views/private/GooglPayPopupViewController.swift new file mode 100644 index 0000000..ae3f518 --- /dev/null +++ b/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/views/private/GooglPayPopupViewController.swift @@ -0,0 +1,161 @@ +// +// GooglPayPopupViewController.swift +// +// +// Created by Osama Rabie on 02/11/2023. +// + +import UIKit +import WebKit +import SharedDataModels_iOS + + +class GooglPayPopupViewController: UIViewController { + /// The web view used to render the google pay page + var webView: WKWebView? + /// A custom action block to execute when nothing else being loaded for a while + var redirectionReached:(String)->() = { _ in } + /// The google pay url + var googlePayUrl:String = "" + /// A custom action block to execute when the user cancels the payment (back button) + var googlePayCanceled:()->() = {} + /// The powered by tap view + var poweredByTapView:PoweredByTapView = .init(frame: .zero) + /// Represents the locale needed to render the powered by tap view with + var selectedLocale:String = "en" { + didSet{ + self.poweredByTapView.selectedLocale = selectedLocale + } + } + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + //MARK: - Private methods + /// Used as a consolidated method to do all the needed steps upon creating the view + private func commonInit() { + themeController() + themeWebView() + webViewConstraints() + poweredByTapViewConstraints() + poweredByTapView.backButtonClicked = { + self.googlePayCanceled() + } + } + + + /// Starts loading the urls + func startLoading() { + commonInit() + self.webView?.load(URLRequest(url: URL(string: self.googlePayUrl)!)) + } + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} + + + +// MARK: - UI & Constraints +extension GooglPayPopupViewController { + /// Applies theme on controller level + func themeController() { + view.backgroundColor = .clear + } + + /// Applies theme on web view level + func themeWebView() { + // Set the needed preferences + let preferences = WKPreferences() + preferences.javaScriptEnabled = true + preferences.javaScriptCanOpenWindowsAutomatically = true + let configuration = WKWebViewConfiguration() + configuration.preferences = preferences + + // Let us theme the web view + webView = .init(frame: .zero, configuration: configuration) + webView?.isOpaque = false + webView?.backgroundColor = UIColor.white + webView?.scrollView.backgroundColor = UIColor.clear + webView?.scrollView.bounces = false + webView?.layer.cornerRadius = 0 + webView?.clipsToBounds = true + + // Let set the delegates + webView?.navigationDelegate = self + + } + /// Applies constrains to correctly size and position the web view + func webViewConstraints() { + view.addSubview(webView!) + webView?.translatesAutoresizingMaskIntoConstraints = false + + let constraints = [ + webView!.leadingAnchor.constraint(equalTo: self.view.leadingAnchor), + webView!.trailingAnchor.constraint(equalTo: self.view.trailingAnchor), + webView!.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 100), + webView!.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: 40) + ] + + NSLayoutConstraint.activate(constraints) + + DispatchQueue.main.async { + self.webView?.setNeedsLayout() + self.webView?.updateConstraints() + self.view.setNeedsLayout() + } + } + + /// Applies constrains to correctly size and position the web view + func poweredByTapViewConstraints() { + view.addSubview(poweredByTapView) + view.sendSubviewToBack(poweredByTapView) + poweredByTapView.translatesAutoresizingMaskIntoConstraints = false + + let constraints = [ + poweredByTapView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor), + poweredByTapView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor), + poweredByTapView.heightAnchor.constraint(equalToConstant: 56), + poweredByTapView.bottomAnchor.constraint(equalTo: self.webView!.topAnchor, constant: 12) + ] + + NSLayoutConstraint.activate(constraints) + + DispatchQueue.main.async { + self.poweredByTapView.setNeedsLayout() + self.poweredByTapView.updateConstraints() + self.view.setNeedsLayout() + } + } +} + +// MARK: - WebView delegate +extension GooglPayPopupViewController: WKNavigationDelegate { + func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { + // Check if it is the return url + print("3ds:\(navigationAction.request.url?.absoluteString ?? "")") + if let requestURL:URL = navigationAction.request.url, + requestURL.absoluteString.lowercased().hasPrefix(PayButtonTypeEnum.GooglePay.baseUrl().lowercased()) { + // The web sdk only needs the query string + self.redirectionReached(requestURL.absoluteString) + decisionHandler(.cancel) + return + } + decisionHandler(.allow) + } + + func triggeringValue(from url:URL, with triggeringKeyword:String) -> String? { + return tap_extractDataFromUrl(url,for:triggeringKeyword, shouldBase64Decode: false) + } +} + diff --git a/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/views/private/TapGooglePayView.swift b/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/views/private/TapGooglePayView.swift new file mode 100644 index 0000000..9cdb9bf --- /dev/null +++ b/Sources/Pay-Button-iOS/Logic/SdkBasedButtons/GooglePay/views/private/TapGooglePayView.swift @@ -0,0 +1,178 @@ +// +// TapGooglePayView.swift +// +// +// Created by Osama Rabie on 02/11/2023. +// + +import UIKit +import WebKit +import SharedDataModels_iOS + + +class GooglePayButton: PayButtonBaseView { + /// The scheme prefix used by google pay sdk to show the google pay popup + let googlePaySDKUrlScheme:String = "https://pay.google.com" + /// The scheme prefix used by gppge pay sdk to show the google pay popup + let googlePaySDKPopupKeyword:String = "pay?ng=true" + /// The web view used to render the google pay button + internal var webView: WKWebView = .init() + /// keeps a hold of the loaded web sdk configurations url + internal var currentlyLoadedConfigurations:URL? + /// The view that will present full screen Google Pay flow + internal var googlePayController:GooglPayPopupViewController? + /// The view that will present full screen 3ds flow + internal var threeDsView:ThreeDSView? + + //MARK: - Init methods + override public init(frame: CGRect) { + super.init(frame: frame) + commonInit() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + commonInit() + } + + + + //MARK: - Private methods + /// Used as a consolidated method to do all the needed steps upon creating the view + private func commonInit() { + // Set the button type + payButtonType = .GooglePay + // Setuo the web view contais the web sdk + setupWebView() + // setup the constraint to put each view in its correct positiob + setupConstraints() + } + + /// Used to open a url inside the Tap button web sdk. + /// - Parameter url: The url needed to load. + internal func openUrl(url: URL?) { + // Store it for further usages + currentlyLoadedConfigurations = url + // instruct the web view to load the needed url + let request = URLRequest(url: url!) + + + webView.navigationDelegate = self + webView.uiDelegate = self + webView.load(request) + } + + + /// used to setup the constraint of the Tap button sdk view + private func setupWebView() { + // Creates needed configuration for the web view + let preferences = WKPreferences() + preferences.javaScriptEnabled = true + preferences.javaScriptCanOpenWindowsAutomatically = true + let configuration = WKWebViewConfiguration() + configuration.preferences = preferences + + webView = WKWebView(frame: .zero, configuration: configuration) + // Let us make sure it is of a clear background and opaque, not to interfer with the merchant's app background + webView.isOpaque = false + webView.backgroundColor = UIColor.clear + webView.scrollView.backgroundColor = UIColor.clear + webView.scrollView.bounces = false + webView.isHidden = false + // Let us add it to the view + self.backgroundColor = .clear + self.addSubview(webView) + } + + + + /// Setup Constaraints for the sub views. + private func setupConstraints() { + // Preprocessing needed setup + webView.translatesAutoresizingMaskIntoConstraints = false + + // Define the web view constraints + let top = webView.topAnchor.constraint(equalTo: self.topAnchor) + let left = webView.leftAnchor.constraint(equalTo: self.leftAnchor) + let right = webView.rightAnchor.constraint(equalTo: self.rightAnchor) + let bottom = webView.bottomAnchor.constraint(equalTo: self.bottomAnchor) + let buttonHeight = self.heightAnchor.constraint(greaterThanOrEqualToConstant: 48) + // SWIPE let buttonHeight = self.heightAnchor.constraint(greaterThanOrEqualToConstant: 48) + + // Activate the constraints + NSLayoutConstraint.activate([left, right, top, bottom, buttonHeight]) + webView.layoutIfNeeded() + webView.updateConstraints() + self.layoutIfNeeded() + } + + /// Will add the web view again to the normal view after removing it from the popup screen we presented to show the benefitpay popup + internal func addWebViewToContainerView() { + DispatchQueue.main.async { + self.webView.removeFromSuperview() + self.webView.frame = .zero + self.addSubview(self.webView) + self.setupConstraints() + } + } + + /// Call it when you want to remove the googlepay popyp and get back to the merchant app + /// - Parameter onDismiss: a callback if needed to do some logic post closeing + internal func removeGooglePayPopupEntry(onDismiss:@escaping()->()) -> Bool { + guard let viewController:UIViewController = UIApplication.shared.topViewController(), + viewController.restorationIdentifier == "GooglePayVC" else { + onDismiss() + return false + } + self.addWebViewToContainerView() + viewController.dismiss(animated: true) { + onDismiss() + } + return true + } + + + /// Tells the web sdk the process is finished with google ay and here is the oogle pay's response + /// - Parameter googlePayToken: The parsed json of the google pay token part if any + /// - Parameter fullUrl: The full redirection url from google just in case we have to fetch something + internal func passToSDK(googlePayToken:String, fullUrl:String) { + // The web sdk wants the query parameters only + // BASE 64 + let base64Token:String = Data(googlePayToken.utf8).base64EncodedString() + print("window.sendPaymentRequest('\(base64Token)');"); + + webView.evaluateJavaScript("window.sendPaymentRequest('\(base64Token)');") + //generateTapToken() + } + + + /// Tells the web sdk the process is finished with the data from backend + /// - Parameter rediectionUrl: The url with the needed data coming from back end at the end of the currently running process + internal func passRedirectionDataToSDK(rediectionUrl:String) { + // The web sdk wants the query parameters only + webView.evaluateJavaScript("window.retrieve('\(rediectionUrl)')") + //generateTapToken() + } + + //MARK: - Public init methods + /// configures the google pay button with the needed configurations for it to work + /// - Parameter config: The configurations dctionary. Recommended, as it will make you able to customly add models without updating + /// - Parameter delegate:A protocol that allows integrators to get notified from events fired from google pay button + override internal func initPayButton(configDict: [String : Any], delegate: PayButtonDelegate? = nil) { + self.delegate = delegate + //let operatorModel:Operator = .init(publicKey: configDict["publicKey"] as? String ?? "", metadata: generateApplicationHeader()) + var updatedConfigurations:[String:Any] = configDict + + + do { + currentlyLoadedConfigurations = try URL(string:UrlBasedUtils.generatePayButtonSdkURL(from: updatedConfigurations, payButtonType: payButtonType)) ?? nil + updatedConfigurations["headers"] = UrlBasedUtils.generateApplicationHeader(headersEncryptionPublicKey: currentlyLoadedConfigurations?.headersEncryptionPublicKey() ?? "") + updatedConfigurations["redirect"] = ["url":payButtonType.tapRedirectionSchemeUrl()] + try openUrl(url: URL(string: UrlBasedUtils.generatePayButtonSdkURL(from: updatedConfigurations, payButtonType: payButtonType))) + } + catch { + self.delegate?.onError?(data: "{error:\(error.localizedDescription)}") + } + } + +} diff --git a/Sources/Pay-Button-iOS/Logic/Shared/Private/enums/CallBackSchemeEnum.swift b/Sources/Pay-Button-iOS/Logic/Shared/Private/enums/CallBackSchemeEnum.swift index a5b8063..f89a3c1 100644 --- a/Sources/Pay-Button-iOS/Logic/Shared/Private/enums/CallBackSchemeEnum.swift +++ b/Sources/Pay-Button-iOS/Logic/Shared/Private/enums/CallBackSchemeEnum.swift @@ -23,5 +23,7 @@ internal enum CallBackSchemeEnum:String { case onOrderCreated /// The charge has been created case onChargeCreated + /// We need to close Google pay popup + case onClosePopup } diff --git a/Sources/Pay-Button-iOS/Logic/Shared/Private/enums/PayButtonTypeEnum.swift b/Sources/Pay-Button-iOS/Logic/Shared/Private/enums/PayButtonTypeEnum.swift index bf3cd9a..bb206f5 100644 --- a/Sources/Pay-Button-iOS/Logic/Shared/Private/enums/PayButtonTypeEnum.swift +++ b/Sources/Pay-Button-iOS/Logic/Shared/Private/enums/PayButtonTypeEnum.swift @@ -17,6 +17,12 @@ import Foundation case Benefit /// The button will work to show payment in form of Fawry case Fawry + /// The button will work to show payment in form of paypal + case Paypal + /// The button will work to show payment in form of tabby + case Tabby + /// The button will work to show payment in form of google pay + case GooglePay /// A string representation of the payment type public func toString() -> String { @@ -29,6 +35,12 @@ import Foundation return "BENEFIT" case .Fawry: return "FAWRY" + case .Paypal: + return "PAYPAL" + case .Tabby: + return "TABBY" + case .GooglePay: + return "GOOGLEPAY" } } @@ -43,6 +55,12 @@ import Foundation return "https://button.dev.tap.company/wrapper/benefit?configurations=" case .Fawry: return "https://button.dev.tap.company/wrapper/fawry?configurations=" + case .Paypal: + return "https://button.dev.tap.company/wrapper/paypal?configurations=" + case .Tabby: + return "https://button.dev.tap.company/wrapper/tabby?configurations=" + case .GooglePay: + return "https://button.dev.tap.company/wrapper/googlepay?configurations=" } } @@ -57,6 +75,12 @@ import Foundation return "tapbenefitwebsdk://" case .Fawry: return "tapfawrywebsdk://" + case .Paypal: + return "tappaypalwebsdk://" + case .Tabby: + return "taptabbywebsdk://" + case .GooglePay: + return "tapgooglepaywebsdk://" } } diff --git a/Sources/Pay-Button-iOS/Logic/Shared/Private/views/PoweredByTapView.swift b/Sources/Pay-Button-iOS/Logic/Shared/Private/views/PoweredByTapView.swift index b0cd7e9..df6c866 100644 --- a/Sources/Pay-Button-iOS/Logic/Shared/Private/views/PoweredByTapView.swift +++ b/Sources/Pay-Button-iOS/Logic/Shared/Private/views/PoweredByTapView.swift @@ -158,7 +158,7 @@ extension PoweredByTapView { let constraintsBackLabel = [ - backLabel.leadingAnchor.constraint(equalTo: backIconImageView.leadingAnchor, constant: 8), + backLabel.leadingAnchor.constraint(equalTo: backIconImageView.trailingAnchor, constant: 8), backLabel.centerYAnchor.constraint(equalTo: backIconImageView.centerYAnchor), backLabel.trailingAnchor.constraint(equalTo: backView.trailingAnchor) ] diff --git a/Sources/Pay-Button-iOS/Logic/Shared/Public/PayButtonView.swift b/Sources/Pay-Button-iOS/Logic/Shared/Public/PayButtonView.swift index 5e81fcd..8f1be3e 100644 --- a/Sources/Pay-Button-iOS/Logic/Shared/Public/PayButtonView.swift +++ b/Sources/Pay-Button-iOS/Logic/Shared/Public/PayButtonView.swift @@ -43,6 +43,14 @@ import UIKit case .Benefit: buttonView = RedirectionPayButton() (buttonView as? RedirectionPayButton)?.updateType(to: .Benefit) + case .Paypal: + buttonView = RedirectionPayButton() + (buttonView as? RedirectionPayButton)?.updateType(to: .Paypal) + case .Tabby: + buttonView = RedirectionPayButton() + (buttonView as? RedirectionPayButton)?.updateType(to: .Tabby) + case .GooglePay: + buttonView = GooglePayButton() } addSubview(buttonView) buttonView.translatesAutoresizingMaskIntoConstraints = false