新零售支付全家桶


小程序支付接口原理说明

<h2>创建支付订单</h2> <p>使用微信支付,那么就要在微信平台生成支付订单,注意这个支付订单微信平台上面的,跟电商平台的购物订单不是一回事儿。微信平台要记录什么时候,哪个用户向哪个商户付款,这些信息必须要记录清楚,所以我们需要向微信平台提交支付订单。这幅时序图,讲的就是怎么生成支付订单的。各位同学一定要记住,这个支付订单不是小程序向微信平台申请创建的,而是又商户系统发出请求,让微信平台创建。为什么不是小程序来创建呢?在微信平台眼中,商户比微信用户更值得信任,这是因为想要开通微信支付,必须要通过企业认证,而微信用户是不需要实名认证的。所以由商户平台发起请求创建支付订单更加值得信任。另外创建支付订单需要提交很多数据,包括AppID、AppSecret、密钥、数字证书,还有商户号。因为小程序是安装在用户手机上面的,所以这些重要的材料不适合保存在小程序上面。既然这些重要的材料应该保存在商户系统上面,那么申请创建支付订单的请求,就应该由商户系统发出了,各位同学,你说是这个道理吧。好了,下面咱们来仔细看一下,创建微信支付订单的流程。</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/c11b88e9c46563da64e5dfa40452e131?showdoc=.jpg" alt="" /></p> <ol> <li> <p>首先用户在小程序上面点击微信支付按钮。</p> </li> <li> <p>小程序发起Ajax请求,告诉商户系统,你应该向微信平台申请创建支付订单了。</p> </li> <li> <p>接下来商户系统先要提取小程序提交过来的数据,比如说OpenID是否有效,OpenId是用户拿微信登陆小程序产生的ID值。商户系统在数据库里面要记录这个OpenID值。发起付款的时候,商户系统必须要验证一下,小程序提交过来OpenId在数据库里面是不是存在。如果有人拿POSTMAN模拟小程序提交支付请求,胡乱编了一个OpenId,商户系统必须要能分辨出来。还有就是小程序提交过来的订单编号,商户系统也要验证订单的有效性。</p> </li> <li> <p>商户系统要向微信平台发送生成支付订单的请求,并且上传跟支付相关的各种信息。比如说,发起付款的用户,微信的OpenID是什么?订单的金额是什么?人民币付款,还是美元付款?收款的商户ID是什么等等。</p> </li> <li> <p>微信平台收到这些信息之后,核实之后没有问题,那么微信平台上面就会生成支付订单,并且把订单的信息返回给商户系统。</p> </li> <li>商户系统得到订单信息之后,还要对这些信息生成MD5数字签名。然后商户系统,会把支付订单的参数,返回给小程序。这幅时序图走下来,意味着微信平台上面生成支付订单。</li> </ol> <h2>用户付款</h2> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/c5b15ee396e937049a4aacb12a233f33?showdoc=.jpg" alt="" /></p> <p>大家请看,这幅时序图讲的是用户怎么付款的。刚才说到了,小程序会拿到商户平台返回的支付参数。但是小程序这边也担心,毕竟订单是商户系统生成的,万一生成的支付金额,跟商品订单的金额对不上怎么办?说的难听一点,用户买了300块钱的商品,但是商户系统在微信平台上面创建了一个3000块钱的支付订单。小程序这边是不是得提防商户系统创建高额支付订单,所以还是得拿着支付订单号,到微信平台上面查询一下,究竟这个支付订单的金额是多少钱?</p> <ol> <li> <p>小程序把商户系统返回的支付参数,提交给微信平台。</p> </li> <li> <p>微信平台确认小程序提交的支付参数没有问题,于是就把商户创建的支付订单信息返回给小程序,让用户确认。</p> </li> <li> <p>这时候小程序就会弹出支付的金额和收款的商户,以及备注信息</p> </li> <li> <p>用户对支付金额没有异议,于是就输入支付密码或者扫脸,接下来小程序想微信平台发送确认支付的请求</p> </li> <li> <p>微信平台验证用户支付密码正确,就可以执行支付订单了。是从用户零钱里扣除,还是从银行卡里扣款,这个就是微信平台的事情了,跟我们没有关系。</p> </li> <li>信平台会把支付结果,分别发送给商户系统和小程序。然后用户和商户就都知道付款到底成功,还是失败了。</li> </ol>

页面列表

ITEM_HTML