赵永田 發表於 2019-8-24 17:04:00

uni-app - 支付(app支付、小程序支付、h5(微信端)支付)

<p><strong>App支付、小程序支付、h5(微信端)支付</strong></p>
<p>&nbsp;</p>
<p><strong>APP支付(内置)</strong></p>
<p>appPay.js</p>
<div class="cnblogs_Highlighter sh-gutter">
<div>
<div id="highlighter_426187" class="syntaxhighlighterjavascript">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
<div class="line number8 index7 alt1">8</div>
<div class="line number9 index8 alt2">9</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
<div class="line number19 index18 alt2">19</div>
<div class="line number20 index19 alt1">20</div>
<div class="line number21 index20 alt2">21</div>
<div class="line number22 index21 alt1">22</div>
<div class="line number23 index22 alt2">23</div>
<div class="line number24 index23 alt1">24</div>
<div class="line number25 index24 alt2">25</div>
<div class="line number26 index25 alt1">26</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="javascript comments">/**</code></div>
<div class="line number2 index1 alt1"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* 5+App支付,仅支持支付宝以及微信支付</code></div>
<div class="line number3 index2 alt2"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">*</code></div>
<div class="line number4 index3 alt1"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* 支付宝Sdk集成,微信sdk未集成</code></div>
<div class="line number5 index4 alt2"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">*</code></div>
<div class="line number6 index5 alt1"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* @param : provider(String) -&gt;被支付方</code></div>
<div class="line number7 index6 alt2"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* @param : orderInfo(String) -&gt;订单信息</code></div>
<div class="line number8 index7 alt1"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* @param : success,fail(Json) -&gt;回调后的json信息</code></div>
<div class="line number9 index8 alt2"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">*</code></div>
<div class="line number10 index9 alt1"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">*/</code></div>
<div class="line number11 index10 alt2">&nbsp;</div>
<div class="line number12 index11 alt1">&nbsp;</div>
<div class="line number13 index12 alt2"><code class="javascript plain">const mPay = (provider, orderInfo, success, fail) =&gt; (</code></div>
<div class="line number14 index13 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">uni.requestPayment({</code></div>
<div class="line number15 index14 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">provider,</code></div>
<div class="line number16 index15 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">orderInfo,&nbsp;</code><code class="javascript comments">//订单数据</code></div>
<div class="line number17 index16 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">success(res) {</code></div>
<div class="line number18 index17 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">success(JSON.stringify(res));</code></div>
<div class="line number19 index18 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">},</code></div>
<div class="line number20 index19 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">fail(err) {</code></div>
<div class="line number21 index20 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">fail(JSON.stringify(err));</code></div>
<div class="line number22 index21 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">}</code></div>
<div class="line number23 index22 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">});</code></div>
<div class="line number24 index23 alt1"><code class="javascript plain">)</code></div>
<div class="line number25 index24 alt2">&nbsp;</div>
<div class="line number26 index25 alt1"><code class="javascript keyword">export</code>&nbsp;<code class="javascript keyword">default</code>&nbsp;<code class="javascript plain">mPay;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>&nbsp;</p>
<p><strong>微信小程序支付(内置)</strong></p>
<p>mPay.js</p>
<div class="cnblogs_Highlighter sh-gutter">
<div>
<div id="highlighter_972181" class="syntaxhighlighterjavascript">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
<div class="line number8 index7 alt1">8</div>
<div class="line number9 index8 alt2">9</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
<div class="line number19 index18 alt2">19</div>
<div class="line number20 index19 alt1">20</div>
<div class="line number21 index20 alt2">21</div>
<div class="line number22 index21 alt1">22</div>
<div class="line number23 index22 alt2">23</div>
<div class="line number24 index23 alt1">24</div>
<div class="line number25 index24 alt2">25</div>
<div class="line number26 index25 alt1">26</div>
<div class="line number27 index26 alt2">27</div>
<div class="line number28 index27 alt1">28</div>
<div class="line number29 index28 alt2">29</div>
<div class="line number30 index29 alt1">30</div>
<div class="line number31 index30 alt2">31</div>
<div class="line number32 index31 alt1">32</div>
<div class="line number33 index32 alt2">33</div>
<div class="line number34 index33 alt1">34</div>
<div class="line number35 index34 alt2">35</div>
<div class="line number36 index35 alt1">36</div>
<div class="line number37 index36 alt2">37</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="javascript comments">/**</code></div>
<div class="line number2 index1 alt1"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* 微信小程序支付,仅支持微信支付(后续可能集成网页支付宝支付web-view)</code></div>
<div class="line number3 index2 alt2"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">*</code></div>
<div class="line number4 index3 alt1"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* @param : provider(String) -&gt;付款商家</code></div>
<div class="line number5 index4 alt2"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* @param : timeStamp(String) -&gt;时间戳(当前支付时间)</code></div>
<div class="line number6 index5 alt1"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* @param : nonceStr(String) -&gt;支付密匙</code></div>
<div class="line number7 index6 alt2"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* @param : packages(String) -&gt;支付id</code></div>
<div class="line number8 index7 alt1"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* @param : signType(String) -&gt;加密方式(默认MD5)</code></div>
<div class="line number9 index8 alt2"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* @param : paySign(String)</code></div>
<div class="line number10 index9 alt1"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">*</code></div>
<div class="line number11 index10 alt2"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">*</code></div>
<div class="line number12 index11 alt1"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">*</code></div>
<div class="line number13 index12 alt2"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* 小程序支付调用</code></div>
<div class="line number14 index13 alt1"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">*</code></div>
<div class="line number15 index14 alt2"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">* wePay(provider, timeStamp, nonceStr, packages, signType, paySign,res=&gt;{},fail=&gt;{})</code></div>
<div class="line number16 index15 alt1"><code class="javascript spaces">&nbsp;</code><code class="javascript comments">*/</code></div>
<div class="line number17 index16 alt2">&nbsp;</div>
<div class="line number18 index17 alt1"><code class="javascript plain">const wePay = (provider, timeStamp, nonceStr, packages, signType, paySign,success,fail) =&gt; (</code></div>
<div class="line number19 index18 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">uni.requestPayment({</code></div>
<div class="line number20 index19 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">provider,</code></div>
<div class="line number21 index20 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">timeStamp,</code></div>
<div class="line number22 index21 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">nonceStr,</code></div>
<div class="line number23 index22 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript keyword">package</code><code class="javascript plain">: packages,</code></div>
<div class="line number24 index23 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">signType,</code></div>
<div class="line number25 index24 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">paySign,</code></div>
<div class="line number26 index25 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">success(res) {</code></div>
<div class="line number27 index26 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">success(JSON.stringify(res));</code></div>
<div class="line number28 index27 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">},</code></div>
<div class="line number29 index28 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">fail(err) {</code></div>
<div class="line number30 index29 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">fail(JSON.stringify(err))</code></div>
<div class="line number31 index30 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">}</code></div>
<div class="line number32 index31 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">});</code></div>
<div class="line number33 index32 alt2"><code class="javascript plain">)</code></div>
<div class="line number34 index33 alt1">&nbsp;</div>
<div class="line number35 index34 alt2">&nbsp;</div>
<div class="line number36 index35 alt1">&nbsp;</div>
<div class="line number37 index36 alt2"><code class="javascript keyword">export</code>&nbsp;<code class="javascript keyword">default</code>&nbsp;<code class="javascript plain">wePay;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>公众号支付(如果使用微信官方weixin-js-sdk,请使用跨端兼容方案)</strong></p>
<p>(需要引入模块:jweixin-module),详情见yarn以及npm安装</p>
<p>pPay.js</p>
<div class="cnblogs_Highlighter sh-gutter">
<div>
<div id="highlighter_25786" class="syntaxhighlighterjavascript">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
<div class="line number8 index7 alt1">8</div>
<div class="line number9 index8 alt2">9</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
<div class="line number19 index18 alt2">19</div>
<div class="line number20 index19 alt1">20</div>
<div class="line number21 index20 alt2">21</div>
<div class="line number22 index21 alt1">22</div>
<div class="line number23 index22 alt2">23</div>
<div class="line number24 index23 alt1">24</div>
<div class="line number25 index24 alt2">25</div>
<div class="line number26 index25 alt1">26</div>
<div class="line number27 index26 alt2">27</div>
<div class="line number28 index27 alt1">28</div>
<div class="line number29 index28 alt2">29</div>
<div class="line number30 index29 alt1">30</div>
<div class="line number31 index30 alt2">31</div>
<div class="line number32 index31 alt1">32</div>
<div class="line number33 index32 alt2">33</div>
<div class="line number34 index33 alt1">34</div>
<div class="line number35 index34 alt2">35</div>
<div class="line number36 index35 alt1">36</div>
<div class="line number37 index36 alt2">37</div>
<div class="line number38 index37 alt1">38</div>
<div class="line number39 index38 alt2">39</div>
<div class="line number40 index39 alt1">40</div>
<div class="line number41 index40 alt2">41</div>
<div class="line number42 index41 alt1">42</div>
<div class="line number43 index42 alt2">43</div>
<div class="line number44 index43 alt1">44</div>
<div class="line number45 index44 alt2">45</div>
<div class="line number46 index45 alt1">46</div>
<div class="line number47 index46 alt2">47</div>
<div class="line number48 index47 alt1">48</div>
<div class="line number49 index48 alt2">49</div>
<div class="line number50 index49 alt1">50</div>
<div class="line number51 index50 alt2">51</div>
<div class="line number52 index51 alt1">52</div>
<div class="line number53 index52 alt2">53</div>
<div class="line number54 index53 alt1">54</div>
<div class="line number55 index54 alt2">55</div>
<div class="line number56 index55 alt1">56</div>
<div class="line number57 index56 alt2">57</div>
<div class="line number58 index57 alt1">58</div>
<div class="line number59 index58 alt2">59</div>
<div class="line number60 index59 alt1">60</div>
<div class="line number61 index60 alt2">61</div>
<div class="line number62 index61 alt1">62</div>
<div class="line number63 index62 alt2">63</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="javascript comments">/*</code></div>
<div class="line number2 index1 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">微信支付方法(uni-app h5)适用</code></div>
<div class="line number3 index2 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">获取微信加签信息</code></div>
<div class="line number4 index3 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">@param{data}:获取的微信加签</code></div>
<div class="line number5 index4 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">@param{res}:成功回调</code></div>
<div class="line number6 index5 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">@param{fail}:失败回调</code></div>
<div class="line number7 index6 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>&nbsp;</div>
<div class="line number8 index7 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">@warn:因为package为严格模式下的保留字,不能用作变量.</code></div>
<div class="line number9 index8 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">@use</code></div>
<div class="line number10 index9 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code>&nbsp;</div>
<div class="line number11 index10 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">wPay({</code></div>
<div class="line number12 index11 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">appId,</code></div>
<div class="line number13 index12 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">timeStamp,</code></div>
<div class="line number14 index13 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">nonceStr,</code></div>
<div class="line number15 index14 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">signature,</code></div>
<div class="line number16 index15 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">package,</code></div>
<div class="line number17 index16 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">paySign</code></div>
<div class="line number18 index17 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">},res=&gt;{</code></div>
<div class="line number19 index18 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">console.log('调用成功!');</code></div>
<div class="line number20 index19 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">},fail=&gt;{</code></div>
<div class="line number21 index20 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">console.log('调用失败!');</code></div>
<div class="line number22 index21 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">})</code></div>
<div class="line number23 index22 alt2"><code class="javascript comments">*/</code></div>
<div class="line number24 index23 alt1"><code class="javascript plain">const wx = require(</code><code class="javascript string">'jweixin-module'</code><code class="javascript plain">);</code></div>
<div class="line number25 index24 alt2"><code class="javascript plain">const wexinPay = (data, cb, errorCb) =&gt; {</code></div>
<div class="line number26 index25 alt1">&nbsp;</div>
<div class="line number27 index26 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript keyword">let</code>&nbsp;<code class="javascript plain"> = [data.appId, data.timeStamp, data.nonceStr, data.signature,</code></div>
<div class="line number28 index27 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">data.</code><code class="javascript keyword">package</code><code class="javascript plain">, data.paySign</code></div>
<div class="line number29 index28 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">];</code></div>
<div class="line number30 index29 alt1">&nbsp;</div>
<div class="line number31 index30 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">wx.config({</code></div>
<div class="line number32 index31 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">debug:&nbsp;</code><code class="javascript keyword">false</code><code class="javascript plain">,&nbsp;</code><code class="javascript comments">// 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。</code></div>
<div class="line number33 index32 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">appId,&nbsp;</code><code class="javascript comments">// 必填,公众号的唯一标识</code></div>
<div class="line number34 index33 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">timestamp,&nbsp;</code><code class="javascript comments">// 必填,生成签名的时间戳</code></div>
<div class="line number35 index34 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">nonceStr,&nbsp;</code><code class="javascript comments">// 必填,生成签名的随机串</code></div>
<div class="line number36 index35 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">signature,&nbsp;</code><code class="javascript comments">// 必填,签名,见附录1</code></div>
<div class="line number37 index36 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">jsApiList: [</code><code class="javascript string">'chooseWXPay'</code><code class="javascript plain">]&nbsp;</code><code class="javascript comments">// 必填,需要使用的JS接口列表,所有JS接口列表见附录2</code></div>
<div class="line number38 index37 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">});</code></div>
<div class="line number39 index38 alt2">&nbsp;</div>
<div class="line number40 index39 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">wx.ready(</code><code class="javascript keyword">function</code><code class="javascript plain">() {</code></div>
<div class="line number41 index40 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">wx.chooseWXPay({</code></div>
<div class="line number42 index41 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">timestamp,&nbsp;</code><code class="javascript comments">// 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符</code></div>
<div class="line number43 index42 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">nonceStr,&nbsp;</code><code class="javascript comments">// 支付签名随机串,不长于 32 位</code></div>
<div class="line number44 index43 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript string">'package'</code><code class="javascript plain">: packages,&nbsp;</code><code class="javascript comments">// 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)</code></div>
<div class="line number45 index44 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">signType:&nbsp;</code><code class="javascript string">'MD5'</code><code class="javascript plain">,&nbsp;</code><code class="javascript comments">// 签名方式,默认为'SHA1',使用新版支付需传入'MD5'</code></div>
<div class="line number46 index45 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">paySign,&nbsp;</code><code class="javascript comments">// 支付签名</code></div>
<div class="line number47 index46 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">success(res) {</code></div>
<div class="line number48 index47 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">// 支付成功后的回调函数</code></div>
<div class="line number49 index48 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">cb(res);</code></div>
<div class="line number50 index49 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">},</code></div>
<div class="line number51 index50 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">fail(res) {</code></div>
<div class="line number52 index51 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">errorCb(res);</code></div>
<div class="line number53 index52 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">}</code></div>
<div class="line number54 index53 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">});</code></div>
<div class="line number55 index54 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">});</code></div>
<div class="line number56 index55 alt1">&nbsp;</div>
<div class="line number57 index56 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">wx.error(</code><code class="javascript keyword">function</code><code class="javascript plain">(res) {</code></div>
<div class="line number58 index57 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。</code></div>
<div class="line number59 index58 alt2"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript comments">/*alert("config信息验证失败");*/</code></div>
<div class="line number60 index59 alt1"><code class="javascript spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="javascript plain">});</code></div>
<div class="line number61 index60 alt2"><code class="javascript plain">}</code></div>
<div class="line number62 index61 alt1">&nbsp;</div>
<div class="line number63 index62 alt2"><code class="javascript keyword">export</code>&nbsp;<code class="javascript keyword">default</code>&nbsp;<code class="javascript plain">wexinPay;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/ydam/p/11405271.html
頁: [1]
查看完整版本: uni-app - 支付(app支付、小程序支付、h5(微信端)支付)