从技术层面实现零手续费微信支付收钱

相信有很多的小店,可能是个人,也可能是小本生意,想要集成“微信支付”这个功能,买家用微信扫一扫支付完费用后,就可以在后台看到支付记录,然后就可以发货,完成交易。可是有一件令人头痛的是,集成 “微信支付”这个功能是需要资质的,更重要的是它是要收取手续费的。

那么有没有办法不交这点手续费而实现微信支付呢?你可能一下子就想到了收款码,是的,我们把收款码分享给别人,放在网页中,反正用尽各种办法让别人扫到你的码,现在我们来模拟一个过程。

小明是一个拥有各种VIP帐号的人,他想通过分享自己的VIP帐号给需要的人,当然在分享的同时,他想有点收益,而微信付款现在比较流行,他希望的是别人扫完他的收款码后,别人就能看到正确的VIP帐号,于是,他花几块钱买来一个主机,搭建好网站,做一个简单的网页,网页上放一张自己的收款码,边上用文字描述大概的意思是:只要扫描付款后就可以看到VIP帐号。

首先,小明第一个问题就会遇到,别人付款时,小明虽然能真正地收到钱,并且是立即到帐的,那小明怎么可能知道到底是谁付的款呢?要知道,别人付款时,是没有填入任何信息的,如果您还没有理解,那就再打个比方,比方就在同一个时间,有两个人都付款了,A是真正想买VIP帐号的,而B只是说还你钱的,并且B也并不是从你做的网页上来扫过来的。这时,小明就会犯糊涂了,A到底有没有付款啊,因此,小明就会去微信上查收款记录,对比订单号,这些,哎,反正是要多麻烦会有多麻烦。

于是,小明想到一个办法是,在自己的网站上加上会员登录,要买的人都需要登录帐号,然后,要求他们付款时加一个备注,备注名为自己的会员名,先估且不说,买家仔不仔细,正确地把自己的会员名填入了备注,然后付款成功,可小明还没有对帐呢,小明需要打开微信收款记录,然后查一下是否有备注为用户名的钱进来,注意这一切都是手动的,也就是说,很可能买家付完款后很久时间,他才能在网站上查到自己的VIP帐号。

上面一步,还不能实现自动,因此,我们想要小明少干一点活,不需要打开微信,然后查看记录,检查收款情况(想去掉这个人工审核步骤),小明找来程序员,问他有没有办法自动查询收款记录,然后对比自己网站的会员名,如果有对付的记录就自动给他展示VIP帐号。

程序员第一反应是告诉小明,你还是去开通个微信支付吧,虽然花点钱,但微信支付非常方便,当付款成功后,微信后台会把订单通知给小明的后台,不需要自己去查询。

小明非常淡定地说,可是我没有公司,没有营业执照,并且我不想交这点手续费。

程序员静静地看着小明,然后说,让我想想有什么办法没有。

于是,程序员百度谷歌360搜索查询收款记录的方法,很遗憾地发现,用户只能在手机微信上查询到账单,fuck,这可怎么办?于是,程序想到了抓包,抓手机的网络包,在电脑上安装fidder,然后手机设置代理,打开收款记录界面,看看fidder上能不能显示出来收款记录,哦No,https首先第一步就阻止了他,不过也对,像这么敏感的信息,应该是使用https的吧,要不然也太容易被别人窃取信息了吧,幸好,fidder也是支付https代理的,只是说这个时候,手机需要安装一下fidder的SSL证书,这样,电脑上的抓包工作就完全地窃取到手机上的数据了,很容易地,当程序员打开收款记录的时候,就发现,有一个https请求:

https://wx.tenpay.com/userroll/userrolllist?classify_type=3&count=20&exportkey=A3CDS7yHgNgGBvS5HhpKlyU%3D&sort_type=1

然后这个请求,返回了收款记录,并且是json格式的,于是程序员欣喜若款,马上把这个链接拷贝到电脑浏览器上去,完全不出意外的是,提示会话过期,它这个https请求是要携带cookie的,然后程序员把cookie也拷贝出来,请求一下,真的,收款记录出来了。

程序员想到的是,要是我每隔一两秒就调用一下这个接口查询一下收款记录,并且对比一下备注信息不就可以知道了。

于是,程序员每隔一两秒就调用 一下这个接口,可意外出现了,隔了大概两三个小时后,这个接口返回会话过期了,原来是cookie也是有时间限制的(即使一直在保活 ),啊?!什么,难道我每隔一断时间就要抓一下包,然后拿到最新的cookies吗?

最终,程序员接受了这个事实,想到自己不可能一直盯着电脑,然后抓包吧,我手机还是要用的啊,于是,程序员想到了开小号,然后使用安卓模拟器,在电脑上安装安卓模拟器,然后在模拟器上设置代理,电脑上开发一个抓包软件,并且这个抓包软件还能自动点击模拟器微信上的查询收款记录,当然每隔一段时间就执行一下操作,这样,在抓包上的cookies就是更新的,也就不会过期,这样就能一直查询到账单。

到这里,程序员就实现了微信收款记录的监控,也就是说小明可以解放双手了。不过,我们注意到,前面我们需要用户自己填入用户名作为备注,这一点能否优化呢?当然,我们在生成收钱码的时候,也是可以增加备注的,于是我们可以这样做,比如小明的定位是1元,那么就可以在网站上传100个1块钱的收钱码,每一个收钱码备注不一样的信息,这样二维码也是不一样的。当用户开始下单的时候,后台分配一个带备注的收钱码给用户(后台已经将此二维码和用户名绑定),当然用户使用该收钱码付款成功后,自动监控软件监控到有此备注的收钱记录,然后就自动审核通过,然后告诉后台该用户会款成功,可以把VIP帐号展示给用户了,这样就实现了自动交易,那比如同一时候有100个人都来付款呢,当然,因为备注都是不一样的,所以也是能区分出来的。可是,你又会说,万一是同时1000人,根本没有那么多二维码,怎么办?理论上呢,这样确实就无法正常了,但是你又想下,如果同一个时刻,有这么多交易,你这是有多大的钱入帐啊,那是相当恐怖的呀,不过,话说回来,因为绑定了会员名和二维码,这里在实际中是需要设置一个过期时间的,防止一直绑定,别人无法使用,当时间到了,就让用户重新付款,然后重新绑定信息。

再来说刚才这个超负荷的情况,比如这个时候就有101人来付款,前100个人都拿到了二维码,并且二维码都是不一样的,第101个人没有二维码了,那他要怎么办呢?其实它可以折中一下,比如说少付一个0.01元钱,也就是只要给一个0.99元的收钱码不就可以了,同样监控到了0.99元也是可以知道是该会员的付款。

终上所述,这样就实际了一个无需手续费的微信支付软件系统。

当然了,虽然上面这个方法可行,但我还是不建议您这么做,还是花点钱开通一个微信支付,这样能够得到官方的协助,同时,也看起来更加专业些。当你的生意够大时,这点手续费就不算什么了,是不是?

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180714G1LVYJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券