在国内环境,广大的我的站点及应用,由于业务发展需求,每每须要以我的资质申请对接微信和支付宝的支付渠道。然而如今不管是微信仍是支付宝,仅支持具备企业资质的主体申请接口对接,对我的开发者而言,路已经彻底卡死了。然而道高一尺,魔高一丈,聪明勤劳的国人想出了不少方法绕过这些限制。本文主要剖析当前具备可操做性的两种方法,供有缘人参考决策。web
安卓端的支付宝,在收到收款消息时,会弹出收到 XX 元的应用栏通知消息。这个通知栏消息,是能够经过编程手段获取到的。只须要监听用户的通知栏消息,判断是不是支付宝的通知,而后解析里面的金额,就具备了自定义回调接口的基础。编程
想像这样一种场景:用户A在网站发起100元的支付,而后网站后台呈现100元的收款二维码(这个二维码能够事先生成放在后台)出来,用户付款成功后,在商家的移动端,经过程序监控到支付宝收到了100元的订单,而后给网站回调。ok,后续的流程和回调逻辑,能够继续作了。api
场景再复杂一点,那假如同一时间,有另一个用户B也发起了100元的支付,可能尚未付款。同时商家移动端检测到了一个100元的订单,进行回调。因为只有金额信息,网站后台没法区分这个100元的订单,到底属于用户A,仍是属于用户B,一会儿就乱套了。涉及到钱的事都是大事,估计用户得炸了。安全
这种并发场景,能够经过一个很简单的技巧解决,即当多个用户发起同一金额的支付时,给不一样的用户,呈现不一样的金额二维码。好比上面的场景,用户A,呈现100元的二维码,同一时间用户B发起100元的订单支付请求,那就呈现99.99元的支付二维码,用户C再来,就呈现99.98元的支付二维码,依次类推。这样,移动端监测到的是不一样的金额,所以也就具有了经过金额,区分订单和用户的能力。服务器
上面这种经过不一样的金额实现回调的方式,缺点是很是明显的,随便列几点:微信
经过金额区分订单和用户的方式实现支付接口回调,因为原理简单,实现成本并不高,所以如今市面上有大量基于该原理实现的支付接口平台。列举以下:并发
1.paysapi框架
点评:paysapi 官网提到支持微信。实际上是经过上传一张任意金额的微信二维码实现的。也就是用户发起支付后,须要人肉的输入支付金额,这在体验上是比较差的。
2.goddpay高并发
点评:和 paysapi 的网站仍是一毛同样。
3.支付吧性能
点评:无
移动端安卓平台,是一个比较开放的平台。咱们运行的几乎全部软件,都是能够经过必定的手段,进行底层编程 hook,自定义其行为的。好比微信消息防撤回,摇骰子划拳做弊,自动抢红包,还有支付宝的余额 & 等级自定义装逼等功能,都是经过诸如 xposed, virtualxposed 等 hook 框架技术编程实现的。
一样,微信和支付宝的收款二维码自动生成,包括支付成功的消息检测,也是能够经过 hook 的手段,进行编程做业的。大体流程以下:
用户发起订单支付请求,而后移动端 hook 软件,监测到这个支付请求,获取到金额和平台(微信仍是支付宝)信息。调用相关的软件,注入相关的二维码生成行为,ok,相关金额的二维码生成成功,再显示给用户。
用户支付成功后,一样的,不管是微信,仍是支付宝,都会检测到相关的支付成功信息。移动端 hook 软件,一样也能够检测到。而后进行回调。再后续,就是业务系统处理流程逻辑了。
基于 hook 方式实现支付接口回调,对软件开发者的要求较高。所以相关的解决方案并很少见,现简单列举以下:
点评:基于 virtualxposed。虽然网站几乎和 paysapi 一毛同样,但接口回调实现的原理,却截然不同。另外,微米富还有一个特殊的地方,就是其在移动端 hook 软件里面,内置了一个微型的 web 服务器,直接接收并处理用户的支付请求。这也致使了几个问题,一是限于移动端 web 服务器的性能,并发的处理,有必定的限制。二是支付页面的调整和定义,须要修改移动端代码。三是软件配置流程复杂(web 服务器代理相关的配置)。
点评:基于 virtualxposed。greenyep 和 微米富有一些细微的区别。它并未在移动端 hook 软件里面内置 web 服务器,而是采用定时检测的方式,去后台服务检测订单信息。这样作的好处是能够有一个中心化的平台作订单的调度和统计,同时性能也较内置 web 服务器的方式,有必定的提升。缺点也是明显的,并不方便软件的分发,作一些私有化的部署。
正规渠道类
那到底有没有一款产品能同时知足我的支付收款需求呢?
又能够支持相对的高并发,低延迟,资金安全无风险,同时还不须要企业资质,用极低的成本获得高效的回报。
答案是有的:https://h5zhifu.com
开户只须要:1身份证 2对应的银行卡(结算用) 3对应的实名认证的微信
十分钟便可开户,拥有正规的我的可用的商户号和密钥。
以上拙见,欢迎拍砖