扫码关注公众号
常用的支付方式有哪些?他们的支付流程是什么?
常用的支付方式有:支付宝支付、微信支付、银联、内购1、支付宝支付支付流程:(1)先与支付宝签约,获取商户id(partner)和账号id(seller)(2)下载相应的公私钥文件(加密签名使用),在客户端我们可能只需要私钥(3)下载支付宝sdk(4)生成订单信息,可以直接客户端或者自己服务端生存都可以,但是大多是服务端生存的。(5)调用支付宝客户端,有支付宝客户端跟支付宝打交道(6)支付完毕之后返回结果给客户端和服务端。2、微信支付支付流程:(1)注册微信开放平台,创建应用获取appid,appSecret,申请支付功能,申请成功之后会返回一些参数详情见图(2)下载微信支付sdk(3)客户端请求订单,后台与微信后台交互,返回给客户端支付参数;(4)调用微信客户端,由微信客户端和微信服务器打交道;(5)客户端和服务端都会收到支付结果;(前台消息不可靠,我们需要去后台验证,如果后台没有收到支付通知,后台去微信服务器验证然后将结果返回给客户端)3、银联支付流程:(1)注册申请就不是前端的事了,直接介入sdk(2)从自己的服务端获取流水号(3)然后调用银联sdk,不用跳转,银联sdk直接是内嵌的(4)支付完成之后会回调代理方法4、内购支付流程:(1)请求有效的产品代号集合(2)购买指定产品(3)验证购买(4)恢复购买
为了避免出现订单重复支付的现象,产品的支付逻辑该怎么设计?
1.避免重复支付肯定是要先找到源头,重复支付的主要原因是跳转到第三方支付,支付后没有及时收到支付成功的返回参数,订单一直卡在待支付状态。所以应该设置同一个订单,x秒内不能再次发起支付,大部分订单可以在这个x秒内获取到返回的支付参数。一些极个别的情况可能无法完美避免,比如极端情况x秒内还是没有返回参数,进行了二次支付。但是这样大大减少了重复支付的概率,再配和第一个问题所说,进行重复支付退款,就能完美解决题主的问题。2.重复支付最根本的原因是接口回调结果引起的,先重视这个问题。另外,避免方案,当用户发起一次支付后,是会返回结果页的,如果没有返回,当发起第二次支付时做出是否已支付的判断或做一个预警机制,多少时间内不允许重复支付。3.一般重复支付发生在用户支付成功,卡余额已扣除,系统未收到银行通知,用户再次发生支付。(1)系统未收到银行通知,可以是由于网络问题,或者其他异常调单,一般系统这里会做一个自动补单机制,就是根据订单号到银行查询该订单的状态,考虑到系统性能等情况3-5分钟查询一次就可以,查询半个小时的订单,通过这种机制可以90%的订单状态能够正常(2)订单未查询回来或者期间用户又发生支付,一般系统设计一笔订单号有一个交易状态,重复支付更新交易状态时可增加判断,如果订单已成功,系统自动发起退款交易即可4.订单支付这些接口都会做幂等处理,避免重复重复支付。成功调用下单接口后,此时会锁单,包括用户积分,优惠券...这些都会做相应的扣减。成功调用支付接口,订单状态会变成"支付中",后台会等待银行支付结果的回调通知,当然,可能会出现后台或者银行的原因,导致没收到银行回调通知(这种情况比较少发生,银行的回调一般都会回调好几次,直到收到后台确认),所以后台还需要在某个阈值时间后,如果还没收到银行回调通知的话,定时去拉几遍支付结果,然后更新订单状态,再通知其他业务服务。
支付流程怎么设计?
从流程可知,我们的支付流程设计本质是对【支付触发页面】【选择支付方式】【支付成功】三个部分进行设计。如果是调用第三方支付,【支付中】流程不是我们可以干涉和设计的,直接调用就好;若产品中有”钱包支付”的选择项,就需要考虑【支付中】流程的设计;之后我们就对这三个部分进行设计分析:1.支付触发页面优质的支付触发页面,需要由支付内容+支付金额+支付入口三个部分组成:1)支付内容合理的展示内容的名称、数量、单价等信息,有助于付款用户进行内容的核对和确认,一定程度上增加用户使用体验感;2)支付金额明确的向用户展示待支付的金额,且需要清晰的展示出该金额的由来;3)支付入口也就是支付按钮。该按钮的设计集中在视觉和文案上;2.选择支付方式现存在的支付方式的选择看似很多,但是要用起来后就会发现效果最好就是那么两个,即支付宝支付、微信支付。支付宝和财付通这两大巨头占据了中国第三方移动支付交易规模市场份额的90%,其他的如云闪付、NFC支付等方式只占了一小部分。所以对于APP的支付选择来说,毫无疑问首选是这两者,将二者都集成是最好的方式。3.支付成功此环节为一个反馈环节,其设计要点是:用户支付成功后给出正确的提示反馈和跳转反馈。1)提示反馈可以采用类似“支付成功,正跳转回xxAPP”的提示语;2)跳转反馈我们可采用两种设计逻辑