From 0da77fa1db5b3cf98426365ace6e35b6203beadf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8A=80=E6=9C=AF=E8=80=81=E8=83=A1?= <1094551889@qq.com> Date: Thu, 28 Nov 2024 17:16:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=E7=BB=93=E6=9E=84=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 20 +-- .../20241122_113208_gitee.png | Bin .../20241122_113331_github.png | Bin .../20241128_164241_image.png | Bin .../20241128_164817_image.png | Bin .../20241128_164952_image.png | Bin .../20241128_165320_image.png | Bin assets/20241128_171356_image.png | Bin 0 -> 44324 bytes public/doc/mpay.md | 152 ------------------ 9 files changed, 10 insertions(+), 162 deletions(-) rename {public/doc/assets => assets}/20241122_113208_gitee.png (100%) rename {public/doc/assets => assets}/20241122_113331_github.png (100%) rename {public/doc/assets => assets}/20241128_164241_image.png (100%) rename {public/doc/assets => assets}/20241128_164817_image.png (100%) rename {public/doc/assets => assets}/20241128_164952_image.png (100%) rename {public/doc/assets => assets}/20241128_165320_image.png (100%) create mode 100644 assets/20241128_171356_image.png delete mode 100644 public/doc/mpay.md diff --git a/README.md b/README.md index 9314986..1e9f42e 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ ## 项目地址 | gitee | github | -| ---------- | ------------ | -|[![](public/doc/assets/20241122_113208_gitee.png)](https://gitee.com/technical-laohu/mpay)|[![](public/doc/assets/20241122_113331_github.png)](https://github.com/techhaha/mpay)| +| :----------: | :------------: | +|[![](assets/20241122_113208_gitee.png)](https://gitee.com/technical-laohu/mpay)|[![](assets/20241122_113331_github.png)](https://github.com/techhaha/mpay)| 点以上图标进入项目页面,可查看最新发行版 @@ -59,21 +59,23 @@ 码支付说到底就是通过二维码来进行收款,日常使用的除了微信支付宝生成的二维码外,还有一类二维码是由收款服务商提供的,它能通过一张收款二维码,同时支持**微信**、**支付宝**、**云闪付**等多渠道付款,一般称为**聚合收款码**。 -![聚合收款码](public/doc/assets/20241128_164241_image.png) +![聚合收款码](assets/20241128_164241_image.png) -这类收款码扫码之后需要用户自己输入指定金额来过行付款,然后查看收款通知,确认是否到账,最后确认订单支付成功。 +这类收款码扫码之后需要用户自己输入指定金额来进行付款,然后查看收款通知,确认是否到账,最后确认订单支付成功。 就像你去店子里买一瓶水,你扫二维码进去付款界面,就生成了一个订单,你付款成功之后,商店老板会去查看一下商户后台流水,确认订单是否支付成功,这是一个人工审核的过程。 -![商户后台订单流水](public/doc/assets/20241128_164817_image.png) +![商户后台订单流水](assets/20241128_164817_image.png) -那么码支付的作用,就是让人工审核变成自动审核的,当用户通过网站购买商品的时候,码支付会生成一个订单并展示收钱台界面,用户再扫码进入聚合码付款页面。 +那么码支付的作用,就是让人工审核变成自动审核的,当用户通过网站购买商品的时候,码支付会生成一个订单并展示收银台界面,用户再扫码进入聚合码付款页面。 -![码支付收银台](public/doc/assets/20241128_164952_image.png) +![码支付收银台](assets/20241128_164952_image.png) + +![用户付款](assets/20241128_171356_image.png) 同一时间,码支付后台会自动通过账号密码登陆聚合码服务平台的管理后台,并通过API接口,循环查询最近的收款明细,通过比对金额和时间,确认是否付款到账,最后确认成功收款。 -![收款成功](public/doc/assets/20241128_165320_image.png) +![收款成功](assets/20241128_165320_image.png) 当用户付款成功,并且后台检测到收款成功消息后,收钱台就会提示收款成功,并最终确认收款。 @@ -148,5 +150,3 @@ ### 页面展示 - - diff --git a/public/doc/assets/20241122_113208_gitee.png b/assets/20241122_113208_gitee.png similarity index 100% rename from public/doc/assets/20241122_113208_gitee.png rename to assets/20241122_113208_gitee.png diff --git a/public/doc/assets/20241122_113331_github.png b/assets/20241122_113331_github.png similarity index 100% rename from public/doc/assets/20241122_113331_github.png rename to assets/20241122_113331_github.png diff --git a/public/doc/assets/20241128_164241_image.png b/assets/20241128_164241_image.png similarity index 100% rename from public/doc/assets/20241128_164241_image.png rename to assets/20241128_164241_image.png diff --git a/public/doc/assets/20241128_164817_image.png b/assets/20241128_164817_image.png similarity index 100% rename from public/doc/assets/20241128_164817_image.png rename to assets/20241128_164817_image.png diff --git a/public/doc/assets/20241128_164952_image.png b/assets/20241128_164952_image.png similarity index 100% rename from public/doc/assets/20241128_164952_image.png rename to assets/20241128_164952_image.png diff --git a/public/doc/assets/20241128_165320_image.png b/assets/20241128_165320_image.png similarity index 100% rename from public/doc/assets/20241128_165320_image.png rename to assets/20241128_165320_image.png diff --git a/assets/20241128_171356_image.png b/assets/20241128_171356_image.png new file mode 100644 index 0000000000000000000000000000000000000000..88de492c128fb98790269a141c9fd90a2f21b850 GIT binary patch literal 44324 zcmdqJ^;;ZG&^C%oaCeK~5G24Niv|b|2?PiZfyG(e-Ge3s3yUWK65QQcf-M?c7G2z3 zza`K6p6ff;`47%d?9B9Z*Hl+mS5@CP(VFUt1W#z6prD`-D7|_876kGx^gY5bV@)4ZnA{a*+BO*<)5o-sSWe)ImW zOwrNYbuem*qTr(Z^b`l@&1}mSE{`-jD%$hlL|Gpf-@b!~hs+Ez*3_@Q?@W0mPOc!T z;;tKmt^p^&VgHT6HG@PYZe~hiyeLdnP_R>aslr>9iXc5{jm z+S=K5Jb%}Ywr7SHTvhluvULsSZGe=YB-6ZOoicAK9>_J1L4q-%Qt5Zx2hW`Lh7!uJ zt37C-Xw29}=2W3XTx-_!oB$xTcyaBtJe>OzDN=CRN|a!GjD)Ej9ljM0izh|pf_!8S zU9SzmD*`Rn9_G-!T;s-eQEe3^$%=M;dsG5?v>6<_XJ3b*mif;^%1qGHT_b#`?{Pt- zfJh6TJ}ydt3Xk;R2%devfpEwcw~$t-2~jmRTSz+DlzYKX;jlwRIDN?H=P`P4`?{d> zG#hMG=bZ^@O*$q@+aM90Z|w~n1AorTdEj6`=lvGtxzaa4knEJP5t;r+S1umuLO>=A zOLH>F(eg8ci=LXAT2rd;?lk}Id;^)1lG1duw;&;tWU)QTe)Ov-p&U6;V>tb%co(?2@I)iK94&m%O~t?E6zT``PNE ziUnH(K21V;K+xIF)bH$!4(#OA)YZF-B}I98`NPudGa{*5;=aDVvmHZI?4G^w@Nj}! z#p5S|@m2nAzFQ5B;(~^BJ7dP+jkCSEI-fn1r1hma&bAIZjNF_=VS^y(B5B9wXOX5 z{EXn7|0Qbv&aa)5vcNmMR3i@>dtrmnofYNx?DTop&AXks|_rucqD>jm@MT9{)ms3CsQP{#dBIeYVCf zx!}52>YhYZ5CrS?Y&~JP-S=$k%6_;7)g)wbk3ZZkJ(zVx5S;Z2K8)nb@qhe7jL#@h zFG;fhaAxxGgIUUYgqeE$MXF(5&VcNuSpvN%X;=>bQN-0UQD7m8)4cjYWTMa_ei*k? zy~v_hzD#c}mlELOVCmsG;Nc|uLE9a4x21NrIVxv_U1oW8yk7pHgc|5meT}R7GRx-S z{w^*{E_-0m75WC3LVY#>+MvG;6RW|7Ecss;VSd~`6luF6Ft@Of=?%){k)t=LwMP|q zw~b5uDX3{=#PEeiPZ7wE(K|8!9P9`at1MH(Yrb5GNt5sv*l*k^wHn{6TZ%s!mSS>h zy|VJxZ;npewAt9$FdzG_bO{e7nh**ywo5NVJsUBqEEG4)TEJvtn8;cy6d_3;rC z^W2YRx`ksak56b>kh#AxD!2G4D4i22U_$_g31Gl-_0*2T9D=Egy<}u6f1rDJsb)(u zIJMn*=X%(Ru+~?{S^`M8P#tfo~&md)W00 zhVe3xzx+NnS}a+3w~#(?uonRZ~S4KgjCwKTBpF9Irz&G@Lu<7Mg|6KNMG?>$QJceBDnRS^=2ZV z^OtU!ahiaovcLIl+R^((K0i$=e8l4_?_ag#PKyr8?^Pwb7*%A_kxTXJ8aY`f7@tV; zk~I8?pBVITH5?e9mzQ@fHtyPT0u%rI<;&Z^)$(U%KpGcQy%4elGs#ssiOC|3Y)MYz zK{_3_ls+x`W=4yZP|XmZ(L8z1a|!otZNHNtku)JYN}L~Hr}^s`KpY-ai*{K%bPuXY zC}&LH(itsn(VR8>qV=rAsi>P6OBx%!0&{UJ z0v_C9Y;vBlJY?;~BB<)7JJCcH4GBJz(o;7dzU@R#sI8L$L@a4$7QbVLEZ-u18OO*G z)|w=%Y;@ME+*xvn=vu546Ryt&=uglU4J#bIok84VBH)X$-rVdAhaclPdP*ibTtI_2oAl7&upJ)etV8S1- z!j=yLAAH^E6JBt4Wq!Z|$tF8MPu`M!=q)NL+NMe=JwH<0y};0CFplLs%R_0$wYtrvvD&ohR?Je#hqS`#cr~=D9~HhvtU|6a9@8fQ<6#m4pLtPn zUXLJ!5fWQ_P|EPhVJbE1OwqdntVNqbgaZ#mUs6tMSG796fk#~2AdXRBGCdz~$)%)0 z3yal#_pq#rh5#48@RqAYary~`7q2FrhR6n=?3A^Yu2kRRsuqsrTjovmVcW%Wv>^?W zts~v(_o%PcpH-xDerGIVrs5PMl`J}#khR+xj+b#;M1v1n)Vrk#IQy&1l_P=)@;UQ) zj+H$r$X`0xoslvH6Fb|Tc^8L<+n2*S)P4T(iKjVxXq)QgjskkjH!}m$<}ikiK}~Yh zLblH2MErmX#e@IWW2sT2n^s$Q>`USWpPiC^gUO)Q(=nC5F9nUL?rm3Vz=ML~X<*i1 zSHR?#W)}S%e!vL}Balh*&q5pdrGEU0Zy|7Out;R@PR z(U@56WeO~w{YHo@=S15{kJYc9#^`BoZm!qHCtFd{4RPoCBk>VWQ%_+yJ)epCBUPomJ21 z+<~{|v1r(lC0Hl8Rm1_uk_(yE}~(xXo)*o4ERR9eQrJ-&h2cZ2lM^8HiIrX3-#FqSB^}0gJ1tw6~i? zBTprPsYRy|uMq>#Dl0~5{cyUX`PaBg>t%bgXacQPLM2*bWpP|4!uU4^=|WkE2z6KE zWT;)GhI=Cu3=yyOTyFVWcGJ?RYt*J{H~_9vWRdTjF+O354_F~5xo#r#%?1mEMsj)J z$&^W8iw{k(T=!Cq z-fGn{c8ruXJ3eBm-VCRQ)}giPjSh1k)Zg{iQNXxU+vcg?<|_`uykQVgt)*ZIsoJ5Q(hXI;y%A?VAE^`L~_V+HGf0lKZQSBctr2X^Vuvo><(e zjC{jNhn4#hFYD;Y%zE}>%T5$5*~6!x8L7tZhrmYoa*zb#fF>-9e>+mo_8BpvmFFx2lGkvg6M9O zp^5vVyaNFTF(WXckv@;kn~}(*<-vY z_i=u|l)1M?n6Lslc^CBx=`g(@l+kEL69f3fXe#}aL$O9ewPX#tZ4>6%ET6>*exzc# zpUw54nFssu*(Gjb>zjW&1o&PZhCE%9M;agN5sm4gf!p{1^6~-?| zlM79cvmyo1m9Pw$qgF`AP%?kLBFh{ZbzZEZnP~Q~c$%0#9Zh2~$U`g49@;MYhq;my znf``3qVCbqvV325V;!2I;Xk4Z<#*0F5{t{EtaDvy7RpR*7jB{=t zAJ}mMx5Hapf}S~v8Zo{hrHjIPjh=_N(yu{QDzb)X0VQD8D4|%~&7ZWLKg`w%*D9LitJP+dYh#38qk|%_)VUxW zPYFOI6X`7MHi|ZiqtZ9l@aoQ)<>PA3@5{u)4SgmwE*90paV#F>;#rOakoN%WNTFTA z)R40+;ZG0~N7d0FYq*;o{A*`=R^?F$gQEyNBNb=nU-sJMr)`bIqP2z}|I%yPm<*wQ z6enbva>c-0d^+Lf0Ot=DIGqoLyTl<9*CT|fe4~J`(Ld(~$49!}$w@HTN=Qxvd8hr< zzxr}j^wv_@9qX>HhrV3xDE6**MeNmk55(06jAw)IeoFmzTdi#~KQEm-Y;SGQ`+CQi zr?Q%e7?h7IAXSefgNZpA#9e|L;BHNDw+5{T;?ebzIZ7IWry}vyN!HS@qzT*r5TWOy zWzJK~Q|>6Ey;G}4MhS4DjEAV-?;hx+lv?pqUl@hx_X#>H^{X0odTV}5cEjaWX~frc zx)*hvy#h6VIeGe)Gs$^g2S2q7H#08a-V+2F(KZ?j_OrAE zah3Atp16(+0eGdeZkSd-)p}#AZPGq_@bjuSVNm^mb<0Bvj6!I(s?@)$rJ7n@a}TOE zky8~Ie@ZV(UHMY2U(dbAcA3pHwbF4%)bZ9zCcWwviX{jI7UuR`BzD56{V6S=Noa%@ zEQxAK1aTDEb)?#5WTSVaQl{65;)&_?PbY#S`gE7`PPgjW9cX!#Gh=CN-tj+k|6ug( zQ_R}}c-}-&J;0yV>bpjl{FY%B<5%8aCfT1Q83f-JtmV`G(JoQ{8A8Qs9HY>-PmKl507{pmd*AOq;?79iO<=v}u&pLKf z)yRt2;=nl4#sm?3EEP%pS%BHTz(+LjEhOgcPmA}nFY2A=)b#WZDU>B%oPi0wM%Wk` zzg3V7Y8S-riIYGEwWW$;f==y6rJLH*p}(-J2Vywuh-l)CylfGIoLPR(+it2V86g}T z@AzMMbN>9H-ZL>#l$J%Sw;`5_Zu5j!IfM4Fbjys66zEWj-N_Q%Kr$)#_UG#MknZZ8 z#XP<1HX~{6u-)=dOW*W|(cPIQq6}fD@S%WhS$;JmMZUBQ1E;;SerGhjQRx9% zYZ1Wsv|mZ%>`r%SzfoG=(WltG&KM{ zvmB6A)T!b5UVl+iH-t(tir=11M4aTwNCiRbo|)a|APIVFRW zW@*p2pc{l_(9J=1WP>Y{b>g>BXN#LPR=X=!GP>xv5Bb3!;jRQ7_5+=v;v42x$3N1( zh$+eFql&rPqDxPO*1yoKD>sod7<$JRdT3R+%C?od+%kWmxyJnq+szLDdqQr(RVtm6 zLIKQ(KcMruYN3iDq4B{|V9qQPzP!=&2$C(>BQM{>KI@2~tTEEKImS5vu-;sxjF2?YKuAe?rHlTewg4V z!*xBd7mL-4d+K-NtY!+wjj(sL>LkwCOFc*iZLX;E3mNbKW*=lq1a~Dr2E;2wAdovEq|y((#~=A zv@q_wcRz(zWHdTYyNl`_Zg{5mW-YwV#N9~3(5*HIum=a}2-DK*o^=dX%Ar>BCupfw z(l?fNzc>G#@@hmF&}0a1pa-l0Lc~3mqGP_i?D(!7A;4<>M2?n&jGrgnhLlzChjE0I zV;c?8t~c?;K~|)%=R&0K_E<~Pes6Q;3BM=8Z@zAaWxh^4k#YKrIBmnlVBy@`eQskf zE5XF^iih1zl9x3!HQBL@&c84RAHX`w0=_b_AF=pvO>iT^_cQlq9!D0sJAY! z(*R4Ogig4Pz(7TS*nm8;8;$FjUJ)L~@cUD1=U;<>2xkKYjPT+qnapW7@%jht{1dOkrXfT`6YxP7pBIVjz`3svw$n3Z#ewVZ^Y+6dhtM9^gP z{`%7A7I5Z*%x@y2i&l5KXvB*7Ssb`oSrfX>Yy#!qT0SwXq4;yg&;!ZzG^?}}Qh zo>P>3T{Dc^wnSvNrEn{8|5i1Y>C@74<8V10{lc@Uyg`FczIC@`WTa42jxAj*M~iQV6g^y}r0Q_7qo?pV zwIkfNxNIisD8*(IGC}w3Udn!o@!<*V1J&)Jh0UlkejG#mel)@qawfaWwNwH(+^bto zhk!=8&LvKxcEY&EOS=Png>Q|eIDyGtR#Sm|91irX-(!0(zvEJ8OE8js=`}MSdz}nr zP3Vp7jyZCMMS| ze3IVWtS{nvyBlAzc;h?H3DMmc&VakZl}&INVOa?>bl3TI=2U~K_x$I7cV!%S;HZZk zqeT280@T0~;K<8!zmH!n+Yc^^Mxeir%lO%?aD2KUk;^G~<=;(l=>xEB{TX+;=YoIN z-O;bUg__xq0b-SCV=DSq`FPXI852g4Dwnho*q;et`(&ty2~+FNdr{0XvSq#b<|@~w zm;$^JIOx&7;bGBNk>DJC)=QoF3M>DMf|>m>b*u($B<|^lq|Ju-Udz6!L-{`CX}i5c zv}uznY~ANWvIq5!n-qbJ_mx{dUwwaR;=PVW;%;R#M8=KVa8` zzJ0J-f0K3!uf^PFl}Y?Sy5gWPuW{&Icp#IH@!w!m#!LxHi?`6C?sdE*Hg;)~x~&f% z|LzJ%P}?tRu877UxcO}E8A)#3V*Nj$f`|aM4Y9dlp$TTPov&k+Y2&n_^U1&WzKHL+ z?5==AwwUJjUzc9+&4WAN?eu=ReL+n&#{}eA;N$ZF7>gY;)dL+bmxHTnDa$Ndq9pl& z+sn;A!3=%@OtyEDU#~fxcY@pUbqz(_;tpc9CZpdJ$A%6gak>xU z0;Ym}w8vf>CJGRyvKdEIAHS}jFHKr(v{U_vOk!Lu8WSBD(4SZA;5J2Ig3cOi2hbA+ z;-4b;=NoPakya6kN2bUDNKm2=tx(0a;Ab_%hdz&m_TRdLZ{~vvD0}_G(^@WAPowuk z_oFkBGtT!uH2~A81Y7b_3zIHu`r)~cL1VtFEF1o(?J$jmlCXhQR0+w;TaRY&Chlq6 zUYvR~(7AQpuNiV725}U(1xnUu@=CZI@*5_)vG8gyN&v5=Y4bOp@e4VlwF0hbAdF2R zf)9Q6t|7z#JV?fPS%v(~Y@QCd)^``M`=^UZ#H6g*sxzG*gt>M(O6|a)lTFEF zM3^xg@u7{WVbT89^}vXlbb-#Fdx5V{jNpg@_wZ`r@b6?^r%9Y{rAgPHO%}k?7#&#& zdPS)hx`c7UF~q3Gu{q<0g*TQVENe20`ZFJKjLVWtcpF;Q2XRi|kF+KbBX2BII3B6O za%cDGnGJqwl7hMHn052FJBi&^+jDSONT z>Bn}lZ)l@GD^bBayYcuqmt_s916g>>jdRA{?7X>sx}16m|8sMBJuTK;e<1ItcPP2B zdreoW(M0%itvNXMm+Dus0nPnl88bDK$<&_ZtihYZ$hDoL(_F>!5_2-n%;dsDZRREY zp!(z266F`hx2)?^X>A9Neqb*W%7YvH$xim>iUWDW%A=?FRrp;|m!CP~RO?Yx^H&v3 zwO25yGrd?g4!*_MI$_T91c{R8AFs+LNS>0L%^7440KGnW*{Xfx-ipGS?`=@)EI-QU7S;;fLkUjzWE}ky_S3c}eXlzexS;6Wj zf+^--?6e#&IHGuFqRztY%72;?Op=%MPKEDOl$tWMavR5-z1SgscT6yuT-qHG;#6M2 zPD>Z>)IIyfUGH5b*3J_PGmh$~CETb^^nU2?rUu)KYXtdNY)KVf6Lgi=cTiJGk$0^` z7QK39M$P+%I$rDO8O8U5C2x^m&9@%MxIs046J46;W0AE3Y2U|hz`mcuZIL5DWWTth zmrIH;wI1Wc*T|_8qko2+fckKoG-Ww+EDJakmAX0rhj-EI1u34nbNO?krLO^@4>h+$ z0rr`}Dyty#_qVEsUjSsfFYYj661Zg*`h+D~_fQQPZ{8W2HIPbG+>@uW8h_G{PF>lL z^{r?zry@+I?=--sS`HzgGVc~a=jXO%S9nd-fisXO1|S;=epN{b!#KSYM+18_0M8aJ zeQ9<2zhr153nJFPu{x2fP?7n;=6A%2PMPS3-opz1Bbs+gcST=N-yG)hVK z2Qv9)MuJ_TOQT%BxL^tUjBogZ*W2t{347@=0UKfw2?^Xi({Zc(uRKr`poBetrdg;v z)N^4LldiHpZ_wmk<{u4av1zUrY4fi@S4y5%o>QbxzuV=Y#W6uQ>zLX12=0T9(!%Hs z>sH0^mFQ!A4z#_CyZ8si$mL4pwvmPr%@C4X5z5cC44O8o!u#upJ!U6t;j)Y2mH@;C z=8Na*x*?S+j{R%}3qHQm1K0(I%rx!4KG@{lWEiiJx!$Rj${#cc7BCT&e0lq1HLur# zZ*|aFj$dLwtas37>-8HVHR||LT(U!-bF>MsU)qEEugO}iyRFOxN2Po1awxzaom;iJ z(>h_|=Zn!SlV;SUQW$b8*cRYhO?-9g5E)!KzOX1yeiG4H}p5~ zbMK0UlwhSvrA;$Ysupwcd{0ANw>po`H#^MSTvr%9t!VQN2wt~@tq8`71�Zj`hyH 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

mVabiDFb>_{q5#Nu=)>@J@W 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 VRu!%y;Aw`Wte_!ZBWoJ+e*k_v(Ch#J literal 0 HcmV?d00001 diff --git a/public/doc/mpay.md b/public/doc/mpay.md deleted file mode 100644 index 95b3bb1..0000000 --- a/public/doc/mpay.md +++ /dev/null @@ -1,152 +0,0 @@ -# 码支付 - -**码支付[mpay]是一款便捷收款工具,专注于个人免签收款,通过普通收款码即可实现收款通知自动回调,支持绝大多数商城系统** - -## 项目地址 - -| gitee | github | -| ---------- | ------------ | -|[![](assets/20241122_113208_gitee.png)](https://gitee.com/technical-laohu/mpay)|[![](assets/20241122_113331_github.png)](https://github.com/techhaha/mpay)| - -点以上图标进入项目页面,可查看最新发行版 - -## 项目说明 - -### 原因 - -之前在工作之余,尝试过很多副业项目,基本都是跟互联网相关的。例如使用**Wordpress和zibll主题**建资源站点,用**微擎**和**微课堂V2**卖课程,使用**异次元发卡**和**独角数卡**程序卖代理的**微信营销软件**,其中遇到的让我最头痛的问题就是收款问题。 - -正规官方渠道,如微信支付宝申请相关支付接口,必须要签约,且有营业执照等相关资质,这对于只想搞想副业的我实在是没必要,也麻烦,后期的事情也多。于是在网上找到了一些解决方案来解决我的在线收款问题。 - -### 方案 - -市场也有很多针对此类需求的平台,也有不少合适的解决方案 - -#### 虎皮椒/迅虎/蓝兔支付 - -这些平台都是微信支付宝等官方平台的支付服务商,能签约个人商户,实现在线收款,一些API支付接口可以直接调用,跟官方自己申请的几乎差不多。 -优点是跟官方申请的支付接口差不多,N+1到账 -缺点就是审核比较严,动不动投诉封商户号,一些羊毛党就爱整你,你是一点办法没有,另外开户基本都要交开户费,50-200不等,且还需要额外收取手续费。 - -#### 彩虹易支付 - -彩虹易支付是一套收款程序,有专门的公司或平台用这套程序搭建一个收款平台,使用自己的微信或支付宝等官方账户来进行收款,你自己注商户号,运营方提供代收款服务,然后给你打款结算。 -优点是审核不严,处理比较灵活,适合个人,技术支持比较好,注册可使用(有些需要注册费) -缺点就是平台容易卷款跑路,也没有什么有效监管,钱收不回来就亏大了(这也是最大的问题) - -#### 源支付 - -源支付也是一套收款程序,有个人版和商户版,市面上能搜到的大部分都是商户版,可以入驻,使用自己的个人微信支付宝二维码收款。 -源支付程序的设计思路主要是通过在手机或电脑上安装消息监听软件,用来监听获取微信和支付宝的收款到账通知来实现的支付成功回调的。**方法很实用,本程序也添加了该功能插件,免费**。 -只是这种思路,有一些小问题: - -* 平台容易因为资质问题导致关站; -* 收取的手续费价格偏高; -* 个人码在微信H5环境无法长按识别付款,能只技术PC端相机扫码付款。 - -#### 码支付(mpay) - -**本程序暂只提供个人版,开源免费使用。** -码支付是在源支付的设计思路基础上进行的改进,利用第四方**聚合收款码**来进行收款,保证收款稳定和便捷。聚合收款码个人可以申请,不需求相关资质,不用申请API接口,收银服务平台众多且实力雄厚(如拉卡拉、收钱吧等),不怕跑路。 -特点如下: - -* 免监听,不需要手机或电脑挂机监听消息,即可实现支付回调,只需要设置一个定时任务就行 -* 支持微信、支付宝、云闪付的H5环境,能正常长按识别扫码支付,域名防红 -* 个人搭建的收款系统,收款稳定,安全可控,不需要额外手续费 -* 支持多平台(聚合码服务商),多账号(聚合码商户),多渠道(门店码/店员码/桌号码等),降低异地线上收款风控风险 - -### 思路 - -码支付说到底就是通过二维码来进行收款,日常使用的除了微信支付宝生成的二维码外,还有一类二维码是由收款服务商提供的,它能通过一张收款二维码,同时支持**微信**、**支付宝**、**云闪付**等多渠道付款,一般称为**聚合收款码**。 - -![聚合收款码](assets/20241128_164241_image.png) - -这类收款码扫码之后需要用户自己输入指定金额来过行付款,然后查看收款通知,确认是否到账,最后确认订单支付成功。 - -就像你去店子里买一瓶水,你扫二维码进去付款界面,就生成了一个订单,你付款成功之后,商店老板会去查看一下商户后台流水,确认订单是否支付成功,这是一个人工审核的过程。 - -![商户后台订单流水](assets/20241128_164817_image.png) - -那么码支付的作用,就是让人工审核变成自动审核的,当用户通过网站购买商品的时候,码支付会生成一个订单并展示收钱台界面,用户再扫码进入聚合码付款页面。 - -![码支付收银台](assets/20241128_164952_image.png) - -同一时间,码支付后台会自动通过账号密码登陆聚合码服务平台的管理后台,并通过API接口,循环查询最近的收款明细,通过比对金额和时间,确认是否付款到账,最后确认成功收款。 - -![收款成功](assets/20241128_165320_image.png) - -当用户付款成功,并且后台检测到收款成功消息后,收钱台就会提示收款成功,并最终确认收款。 - -> 只有存在新订单时,且该订单与当前收款账号一致时,码支付后台才会主动登陆该账号,查询收款流水,减少频繁查询导致的可能风险 -> 另外,在账号设置里也有两个模式可选,`单次监听`和`连续监听`,根据业务场景可以自行选择,具体使用,下面有介绍 - -## 开源声明 - -### 内置插件 - -码支付收款管理系统开源免费使用,支付插件有免费和付费版本,按需使用购买 - -1. **微信**插件`wxpay`默认安装,支持`赞赏码`、`个人码|经营码|商家码`,2个通道,需挂机监听 -2. **支付宝**插件`alipay`默认安装,支持`收钱码`、`经营码`,2个通道,需挂机监听 -3. **收钱吧**聚合码插件`sqbpay`默认安装,无需挂机,设置定时任务即可 - -### 技术架构 - -须用`Thinkphp8`框架,前端UI使用`Layui 2.9`+`PearAdmin`后台 - -## 安装和使用 - -### 全新安装 - -#### 源码下载 - -#### 安装配置 - -以**宝塔面板**示例,其他服务器管理面板可以参考 - -##### 新建站点与数据库 - -#### 仿静态配置 - -#### 安装步骤 - -### 聚合码使用 - -#### 申请收款码 - -#### 安装插件 - -#### 添加账号 - -#### 添加收款码 - -#### 设置监听 - -##### 订单监听 - -##### 账号收款监听 - -#### 支付测试 - -#### 服务商支持 - -### 微信/支付宝使用 - -#### 添加账号 - -#### 添加收钱码 - -#### 挂机监听收款通知 - -##### 软件下软(安卓) - -##### 功能配置 - -##### 收款通知测试 - -### 补充说明 - -### 页面展示 - - -