这并不是详细的操作教程,只是记录一下实现的方式
公司研发自己产品,用户在自动售货机上选择好商品后结算时会弹出二维码,要做到不管是用支付宝还是微信扫码都能付款。
其实这个不算太难,问题是我对接的商家已经在用了银豹的收银系统,我必须要和他们的会员系统打通,做到在自动售货机上面也能享受会员的折扣,经过对银豹返回数据的研究,发现可以用手机号码进行判断是否为该门店下的会员。
但不管是支付宝还是微信都只有小程序内可以获取手机号码,且支付宝和微信小程序都提供了关联普通二维码的能力。
经过大量踩坑终于完成了,年纪大了爱忘事,写到简书,以后有类似需求再来回顾一下,同时也和大家分享一下自己的经验,希望能帮助到一些人。
重点
支付宝的应用有小程序、网页应用、第三方应用,这里特别的是只有自研小程序可以获取手机号码,而只有第三方应用才能获取商家授权。
于是我同时注册了一个第三方应用和一个自研小程序
自研小程序用于获取用户手机号码
第三方应用与进行商户授权,支付时用第三方应用的信息,这样就可以满足支付到对应的商户了
支付宝没有像微信那么限制严格,在支付宝中同一用户在不同应用中获取的userId都是相同的,而且使用其他应用的信息调用统一下单接口获取到的支付宝交易号,在另外的应用中也能拉起支付。
实现路线
1.申请支付宝第三方应用,填写好一些基本的资料后在应用里面可以看到“商家授权应用”,点击发起授权后会显示授权的二维码和链接,把这个链接给要授权的商户访问授权即可

2.授权之后可以拿到商户的授权token,这个就是app_auth_token,用来把钱直接支付到对应的商家账户上

3.在功能管理里面添加“当面付收单”的能力,当然作为系统服务商是不能直接用这个功能的,要签约,这里有两种方式,如果商户原来就具有这种能力那就可以直接用,如果没有的话就要商家签约,也可以自己代商家签约,这一步我就不过多描述了,就是填写商家的一些资料做申请
4.在自研小程序中拿到授权code,到后端去换取支付宝userId,然后调用支付宝的alipay.trade.create(统一收单交易创建接口),注意,如果是要支付到商户的,那app_auth_token(商户授权token)一定要填

5.调用下单接口后会得到支付宝交易号,然后传给小程序,小程序调起支付组件支付就可以了
网友评论