新零售支付全家桶


编写小程序付款代码

<h3><a href="https://uniapp.dcloud.io/api/plugins/payment?id=requestpayment">uni.requestPayment(OBJECT)</a></h3> <p>uni.requestPayment是一个统一各平台的客户端支付API,不管是在某家小程序还是在App中,客户端均使用本API调用支付。</p> <p>本API运行在各端时,会自动转换为各端的原生支付调用API。</p> <p>注意支付不仅仅需要客户端的开发,还需要服务端开发。虽然客户端API统一了,但各平台的支付申请开通、配置回填仍然需要看各个平台本身的支付文档。</p> <p>比如微信有App支付、小程序支付、H5支付等不同的申请入口和使用流程,对应到uni-app,在App端要申请微信的App支付,而小程序端则申请微信的小程序支付。</p> <p>如果服务端使用<a href="https://uniapp.dcloud.io/uniCloud/README">uniCloud</a>,那么官方提供了<a href="https://uniapp.dcloud.io/uniCloud/unipay">uniPay</a>云端统一支付服务,把App、微信小程序、支付宝小程序里的服务端支付开发进行了统一的封装。</p> <p>前端统一的<code>uni.requestPayment</code>和云端统一的<code>uniPay</code>搭配,可以极大提升支付业务的开发效率,强烈推荐给开发者使用。<code>uniPay</code>的文档另见:<a href="https://uniapp.dcloud.io/uniCloud/unipay">https://uniapp.dcloud.io/uniCloud/unipay</a></p> <p><strong>平台差异说明</strong></p> <table> <thead> <tr> <th style="text-align: center;">App</th> <th style="text-align: center;">H5</th> <th style="text-align: center;">微信小程序</th> <th style="text-align: center;">支付宝小程序</th> <th style="text-align: center;">百度小程序</th> <th style="text-align: center;">字节跳动小程序</th> <th style="text-align: center;">QQ小程序</th> </tr> </thead> <tbody> <tr> <td style="text-align: center;">√</td> <td style="text-align: center;"><a href="https://uniapp.dcloud.io/api/plugins/payment?id=h5-payment">说明</a></td> <td style="text-align: center;">√</td> <td style="text-align: center;">√</td> <td style="text-align: center;">√</td> <td style="text-align: center;">√</td> <td style="text-align: center;">√</td> </tr> </tbody> </table> <p><strong>OBJECT 参数说明</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">必填</th> <th style="text-align: left;">说明</th> <th>平台差异说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">provider</td> <td style="text-align: left;">String</td> <td style="text-align: left;">是</td> <td style="text-align: left;">服务提供商,通过 <a href="https://uniapp.dcloud.io/api/plugins/provider">uni.getProvider</a> 获取。</td> <td></td> </tr> <tr> <td style="text-align: left;">orderInfo</td> <td style="text-align: left;">String/Object</td> <td style="text-align: left;">是</td> <td style="text-align: left;">订单数据,<a href="https://uniapp.dcloud.io/api/plugins/payment?id=orderinfo">注意事项</a></td> <td>App、支付宝小程序、百度小程序、字节跳动小程序</td> </tr> <tr> <td style="text-align: left;">timeStamp</td> <td style="text-align: left;">String</td> <td style="text-align: left;">微信小程序必填</td> <td style="text-align: left;">时间戳从1970年1月1日至今的秒数,即当前的时间。</td> <td>微信小程序</td> </tr> <tr> <td style="text-align: left;">nonceStr</td> <td style="text-align: left;">String</td> <td style="text-align: left;">微信小程序必填</td> <td style="text-align: left;">随机字符串,长度为32个字符以下。</td> <td>微信小程序</td> </tr> <tr> <td style="text-align: left;">package</td> <td style="text-align: left;">String</td> <td style="text-align: left;">微信小程序必填</td> <td style="text-align: left;">统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=xx。</td> <td>微信小程序</td> </tr> <tr> <td style="text-align: left;">signType</td> <td style="text-align: left;">String</td> <td style="text-align: left;">微信小程序必填</td> <td style="text-align: left;">签名算法,暂支持 MD5。</td> <td>微信小程序</td> </tr> <tr> <td style="text-align: left;">paySign</td> <td style="text-align: left;">String</td> <td style="text-align: left;">微信小程序必填</td> <td style="text-align: left;">签名,具体签名方案参见 <a href="https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&amp;index=3">微信小程序支付文档</a></td> <td>微信小程序</td> </tr> <tr> <td style="text-align: left;">bannedChannels</td> <td style="text-align: left;">Array<String></td> <td style="text-align: left;">否</td> <td style="text-align: left;">需要隐藏的支付方式,详见 <a href="https://smartprogram.baidu.com/docs/develop/api/open_payment/#requestPolymerPayment/">百度小程序支付文档</a></td> <td>百度小程序</td> </tr> <tr> <td style="text-align: left;">service</td> <td style="text-align: left;">Number</td> <td style="text-align: left;">字节跳动小程序必填</td> <td style="text-align: left;">固定值:1(拉起小程序收银台)开发者如果不希望使用字节跳动小程序收银台,service设置为3/4时,可以直接拉起微信/支付宝进行支付:service=3: 微信API支付,不拉起小程序收银台;service=4: 支付宝API支付,不拉起小程序收银台。其中service=3、4,仅在1.35.0.1+基础库(头条743+)支持</td> <td>字节跳动小程序</td> </tr> <tr> <td style="text-align: left;">_debug</td> <td style="text-align: left;">Number</td> <td style="text-align: left;">否</td> <td style="text-align: left;">仅限调试用,上线前去掉该参数。_debug=1时,微信支付期间可以看到中间报错信息,方便调试</td> <td>字节跳动小程序</td> </tr> <tr> <td style="text-align: left;">getOrderStatus</td> <td style="text-align: left;">Function</td> <td style="text-align: left;">字节跳动小程序必填</td> <td style="text-align: left;">商户前端实现的查询支付订单状态方法(该方法需要返回个Promise对象)。 service=3、4时不需要传。</td> <td>字节跳动小程序</td> </tr> <tr> <td style="text-align: left;">success</td> <td style="text-align: left;">Function</td> <td style="text-align: left;">否</td> <td style="text-align: left;">接口调用成功的回调</td> <td></td> </tr> <tr> <td style="text-align: left;">fail</td> <td style="text-align: left;">Function</td> <td style="text-align: left;">否</td> <td style="text-align: left;">接口调用失败的回调函数</td> <td></td> </tr> <tr> <td style="text-align: left;">complete</td> <td style="text-align: left;">Function</td> <td style="text-align: left;">否</td> <td style="text-align: left;">接口调用结束的回调函数(调用成功、失败都会执行)</td> <td></td> </tr> </tbody> </table> <h3>编写order.vue页面代码</h3> <pre><code>uni.requestPayment({ provider: "alipay", orderInfo: prepayId, success: function(resp) { if (resp.resultCode == 9000) { uni.showToast({ title: "支付成功" }) } } })</code></pre>

页面列表

ITEM_HTML