巴洛特烦恼 發表於 2020-9-29 14:05:00

uni-app支付功能

<p>扫码查看原文</p>
<p><img src="https://mp.weixin.qq.com/mp/qrcode?scene=10000004&amp;size=102&amp;__biz=Mzg3NTAzMzAxNA==&amp;mid=2247483869&amp;idx=1&amp;sn=e5c9575e4b409bb3ce510ca14622ce74&amp;send_time="></p>
<p>前言</p>
<p>近期一直在使用APP开发多端应用,IOS的APP、安卓的APP和H5网页,其中开发的APP使用到了微信和支付宝的支付,在此给大家分享出来,一起使用</p>
<p>前置条件:</p>
<ol class="list-paddingleft-2">
<li>
<p>开发环境:windows</p>
</li>
<li>
<p>开发框架:uni-app , H5+,nativeJS</p>
</li>
<li>
<p>编辑器:HbuilderX 2.8.13</p>
</li>
</ol>
<p>&nbsp;&nbsp; &nbsp;&nbsp;4.兼容版本:安卓,IOS已作测试</p>
<p>此代码可以直接复制到uni-app项目中使用</p>
<p>正文开始:</p>
<p>1. 首先需要做一些相关配置</p>
<p>1.1 打开HbuilderX,配置manifest.json,选择App模块配置,勾选Payment支付;根据业务需要再勾选支付宝和微信支付;</p>
<p>1.2 微信支付需要配置appid、ios通用平台链接;支付宝在HbuilderX内无需任何配置;不过需要在支付宝付宝开放平台,创建应用时做一些配置。</p>
<p>&nbsp;</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/SfwJdTEt5qPTXO4aj7NXayEBtia38bx6pI0biaQ7Vogbw2CPKaRK7DV9X7vOiaP3xM9ib4dmUjLJ9OWkAfl9vYUicpQ/640?wx_fmt=jpeg&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"></p>
<p>2.&nbsp;以下是具体代码页面部分</p>
<p>2.1&nbsp;radio的值等于1,是微信支付,等于2是支付宝支付;通过@change事件获取到radio的值</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="pay_list_box"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">radio-group </span><span style="color: rgba(255, 0, 0, 1)">@change</span><span style="color: rgba(0, 0, 255, 1)">="radioChange"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">label </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="pay_list"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="l_box"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="top"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">image </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="t_img"</span><span style="color: rgba(255, 0, 0, 1)"> src</span><span style="color: rgba(0, 0, 255, 1)">="/static/images/pay_icon2.png"</span><span style="color: rgba(255, 0, 0, 1)"> mode</span><span style="color: rgba(0, 0, 255, 1)">=""</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">image</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>微信<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="r_radio"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">radio </span><span style="color: rgba(255, 0, 0, 1)">value</span><span style="color: rgba(0, 0, 255, 1)">="1"</span><span style="color: rgba(255, 0, 0, 1)"> color</span><span style="color: rgba(0, 0, 255, 1)">="#44bb53"</span><span style="color: rgba(255, 0, 0, 1)"> style</span><span style="color: rgba(0, 0, 255, 1)">="transform:scale(0.8)"</span><span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">label </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="pay_list"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="l_box"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="top"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">image </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="t_img1"</span><span style="color: rgba(255, 0, 0, 1)"> src</span><span style="color: rgba(0, 0, 255, 1)">="/static/images/pay_icon1.png"</span><span style="color: rgba(255, 0, 0, 1)"> mode</span><span style="color: rgba(0, 0, 255, 1)">=""</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">image</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>支付宝<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="r_radio"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">radio </span><span style="color: rgba(255, 0, 0, 1)">value</span><span style="color: rgba(0, 0, 255, 1)">="2"</span><span style="color: rgba(255, 0, 0, 1)"> color</span><span style="color: rgba(0, 0, 255, 1)">="#44bb53"</span><span style="color: rgba(255, 0, 0, 1)"> style</span><span style="color: rgba(0, 0, 255, 1)">="transform:scale(0.8)"</span><span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">radio-group</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="zf_btn"</span><span style="color: rgba(255, 0, 0, 1)"> @click</span><span style="color: rgba(0, 0, 255, 1)">="pay"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>提交<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<p>3.&nbsp;以下是样式部分</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">&lt;style scoped lang="scss"&gt;
.zaixian</span>{<span style="color: rgba(255, 0, 0, 1)">
    padding-bottom</span>:<span style="color: rgba(0, 0, 255, 1)"> 100rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
    border-top</span>:<span style="color: rgba(0, 0, 255, 1)"> 1px solid #ebebeb</span>;<span style="color: rgba(255, 0, 0, 1)">
    .content{
      .money{
      padding-top</span>:<span style="color: rgba(0, 0, 255, 1)"> 50rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      text-align</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;<span style="color: rgba(255, 0, 0, 1)">
      height</span>:<span style="color: rgba(0, 0, 255, 1)"> 200rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      color</span>:<span style="color: rgba(0, 0, 255, 1)"> #F05D31</span>;<span style="color: rgba(255, 0, 0, 1)">
      line-height</span>:<span style="color: rgba(0, 0, 255, 1)"> 200rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      font-size</span>:<span style="color: rgba(0, 0, 255, 1)"> 100rpx</span>;
      }<span style="color: rgba(128, 0, 0, 1)">
      .time</span>{<span style="color: rgba(255, 0, 0, 1)">
      text-align</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;<span style="color: rgba(255, 0, 0, 1)">
      color</span>:<span style="color: rgba(0, 0, 255, 1)"> #a5a5a5</span>;<span style="color: rgba(255, 0, 0, 1)">
      font-size</span>:<span style="color: rgba(0, 0, 255, 1)"> 28rpx</span>;
      }<span style="color: rgba(128, 0, 0, 1)">
    }
    .code</span>{<span style="color: rgba(255, 0, 0, 1)">
      padding</span>:<span style="color: rgba(0, 0, 255, 1)"> 0 20rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      display</span>:<span style="color: rgba(0, 0, 255, 1)"> flex</span>;<span style="color: rgba(255, 0, 0, 1)">
      .shoukuanma{
      text-align</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;<span style="color: rgba(255, 0, 0, 1)">
      width</span>:<span style="color: rgba(0, 0, 255, 1)"> 50%</span>;<span style="color: rgba(255, 0, 0, 1)">
      height</span>:<span style="color: rgba(0, 0, 255, 1)"> 200rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      .type{
          font-size</span>:<span style="color: rgba(0, 0, 255, 1)"> 30rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
          color</span>:<span style="color: rgba(0, 0, 255, 1)"> #3b3b3b</span>;
      }<span style="color: rgba(128, 0, 0, 1)">
      .ty_img</span>{<span style="color: rgba(255, 0, 0, 1)">
          width</span>:<span style="color: rgba(0, 0, 255, 1)"> 200rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
          height</span>:<span style="color: rgba(0, 0, 255, 1)"> 200rpx</span>;
      }<span style="color: rgba(128, 0, 0, 1)">
      }
    }
   
    .pay_list_box</span>{<span style="color: rgba(255, 0, 0, 1)">
      margin-top</span>:<span style="color: rgba(0, 0, 255, 1)"> 100rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      .yinhangka{
      font-size</span>:<span style="color: rgba(0, 0, 255, 1)"> 30rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      color</span>:<span style="color: rgba(0, 0, 255, 1)"> #3b3b3b</span>;<span style="color: rgba(255, 0, 0, 1)">
      padding</span>:<span style="color: rgba(0, 0, 255, 1)"> 0 20rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      display</span>:<span style="color: rgba(0, 0, 255, 1)"> flex</span>;<span style="color: rgba(255, 0, 0, 1)">
      height</span>:<span style="color: rgba(0, 0, 255, 1)"> 100rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      align-items</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;<span style="color: rgba(255, 0, 0, 1)">
      justify-content</span>:<span style="color: rgba(0, 0, 255, 1)"> space-between</span>;<span style="color: rgba(255, 0, 0, 1)">
      border-bottom</span>:<span style="color: rgba(0, 0, 255, 1)"> 1px solid #ebebeb</span>;<span style="color: rgba(255, 0, 0, 1)">
      .y_left{
          display</span>:<span style="color: rgba(0, 0, 255, 1)"> flex</span>;<span style="color: rgba(255, 0, 0, 1)">
          .name{
            padding-right</span>:<span style="color: rgba(0, 0, 255, 1)"> 20rpx</span>;
          }<span style="color: rgba(128, 0, 0, 1)">
      }
      }
      .pay_list</span>{<span style="color: rgba(255, 0, 0, 1)">
      border-bottom</span>:<span style="color: rgba(0, 0, 255, 1)"> 1px solid #ebebeb</span>;<span style="color: rgba(255, 0, 0, 1)">
      padding</span>:<span style="color: rgba(0, 0, 255, 1)"> 0 20rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      height</span>:<span style="color: rgba(0, 0, 255, 1)"> 100rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      align-items</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;<span style="color: rgba(255, 0, 0, 1)">
      display</span>:<span style="color: rgba(0, 0, 255, 1)"> flex</span>;<span style="color: rgba(255, 0, 0, 1)">
      justify-content</span>:<span style="color: rgba(0, 0, 255, 1)"> space-between</span>;<span style="color: rgba(255, 0, 0, 1)">
      .l_box{
          height</span>:<span style="color: rgba(0, 0, 255, 1)"> 100rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
          .top{
            height</span>:<span style="color: rgba(0, 0, 255, 1)"> 100rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
            display</span>:<span style="color: rgba(0, 0, 255, 1)"> flex</span>;<span style="color: rgba(255, 0, 0, 1)">
            height</span>:<span style="color: rgba(0, 0, 255, 1)"> 100rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
            align-items</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;<span style="color: rgba(255, 0, 0, 1)">
            font-size</span>:<span style="color: rgba(0, 0, 255, 1)"> 30rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
            color</span>:<span style="color: rgba(0, 0, 255, 1)"> #3b3b3b</span>;<span style="color: rgba(255, 0, 0, 1)">
            .t_img{
            padding-right</span>:<span style="color: rgba(0, 0, 255, 1)"> 20rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
            width</span>:<span style="color: rgba(0, 0, 255, 1)"> 46rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
            height</span>:<span style="color: rgba(0, 0, 255, 1)"> 38rpx</span>;
            }<span style="color: rgba(128, 0, 0, 1)">
            .t_img1</span>{<span style="color: rgba(255, 0, 0, 1)">
            padding-right</span>:<span style="color: rgba(0, 0, 255, 1)"> 32rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
            width</span>:<span style="color: rgba(0, 0, 255, 1)"> 34rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
            height</span>:<span style="color: rgba(0, 0, 255, 1)"> 33rpx</span>;
            }<span style="color: rgba(128, 0, 0, 1)">
            .t_img2</span>{<span style="color: rgba(255, 0, 0, 1)">
            padding-right</span>:<span style="color: rgba(0, 0, 255, 1)"> 28rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
            width</span>:<span style="color: rgba(0, 0, 255, 1)"> 38rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
            height</span>:<span style="color: rgba(0, 0, 255, 1)"> 33rpx</span>;
            }<span style="color: rgba(128, 0, 0, 1)">
          }
      }
      }
    }
    .pingzheng</span>{<span style="color: rgba(255, 0, 0, 1)">
      margin-top</span>:<span style="color: rgba(0, 0, 255, 1)"> 30rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      .content{
      display</span>:<span style="color: rgba(0, 0, 255, 1)"> flex</span>;<span style="color: rgba(255, 0, 0, 1)">
      align-items</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;<span style="color: rgba(255, 0, 0, 1)">
      padding</span>:<span style="color: rgba(0, 0, 255, 1)"> 0 20rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      height</span>:<span style="color: rgba(0, 0, 255, 1)"> 200rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      .shangchuan{
          color</span>:<span style="color: rgba(0, 0, 255, 1)"> #454545</span>;<span style="color: rgba(255, 0, 0, 1)">
          font-size</span>:<span style="color: rgba(0, 0, 255, 1)"> 30rpx</span>;
      }<span style="color: rgba(128, 0, 0, 1)">
      .sc_img</span>{<span style="color: rgba(255, 0, 0, 1)">
          padding-left</span>:<span style="color: rgba(0, 0, 255, 1)"> 20rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
          width</span>:<span style="color: rgba(0, 0, 255, 1)"> 200rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
          height</span>:<span style="color: rgba(0, 0, 255, 1)"> 200rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
          border-radius</span>:<span style="color: rgba(0, 0, 255, 1)"> 5px</span>;
      }<span style="color: rgba(128, 0, 0, 1)">
      }
      .pz_pic</span>{<span style="color: rgba(255, 0, 0, 1)">
      margin-top</span>:<span style="color: rgba(0, 0, 255, 1)"> 30rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      padding</span>:<span style="color: rgba(0, 0, 255, 1)"> 0 20rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      .pz_img{
          width</span>:<span style="color: rgba(0, 0, 255, 1)"> 100%</span>;<span style="color: rgba(255, 0, 0, 1)">
          height</span>:<span style="color: rgba(0, 0, 255, 1)"> 300rpx</span>;
      }<span style="color: rgba(128, 0, 0, 1)">
      }
    }
    .zf_btn</span>{<span style="color: rgba(255, 0, 0, 1)">
      margin</span>:<span style="color: rgba(0, 0, 255, 1)"> 100rpx auto 0</span>;<span style="color: rgba(255, 0, 0, 1)">
      background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> #44bb57</span>;<span style="color: rgba(255, 0, 0, 1)">
      width</span>:<span style="color: rgba(0, 0, 255, 1)"> 650rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      height</span>:<span style="color: rgba(0, 0, 255, 1)"> 90rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      font-size</span>:<span style="color: rgba(0, 0, 255, 1)"> 36rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      color</span>:<span style="color: rgba(0, 0, 255, 1)"> #FFFFFF</span>;<span style="color: rgba(255, 0, 0, 1)">
      line-height</span>:<span style="color: rgba(0, 0, 255, 1)"> 90rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
      text-align</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;<span style="color: rgba(255, 0, 0, 1)">
      border-radius</span>:<span style="color: rgba(0, 0, 255, 1)"> 45rpx</span>;
    }<span style="color: rgba(128, 0, 0, 1)">
}
&lt;/style&gt;</span></pre>
</div>
<p>4.&nbsp;以下是具体的代码逻辑部分</p>
<p>4.1 通过后端获取到订单信息;再通过订单信息获取到服务商信息和支付配置信息</p>
<p>4.2&nbsp;最后通过&nbsp;uni.requestPayment&nbsp;支付;</p>
<p>5.通过servicesInfo方法获取订单信息,取到订单的基本信息</p>
<p>5.1 向 pay 方法传递订单基本信息,获取到服务商信息和支付配置信息</p>
<p>5.2&nbsp;通过&nbsp;appPay&nbsp;方法调用uni.requestPayment函数发起支付;</p>
<p>5.3&nbsp;uni.requestPayment发起支付时,传递两个重要参数provider、orderInfo</p>
<p>5.3.1 provider:支付类型,支付宝(alipay)或者微信 (wxpay)</p>
<p>5.3.2 orderInfo: 通过 pay 方法请求接口获取到 order_info</p>
<p>6. 支付成功后,通过&nbsp;updateOrder&nbsp;方法改变订单状态</p>
<div class="cnblogs_code">
<pre>&lt;script&gt;<span style="color: rgba(0, 0, 0, 1)">
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)">{
    data(){
      </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">{
      imgs:[],
      pay_type:</span>0<span style="color: rgba(0, 0, 0, 1)">,
      id:</span>0<span style="color: rgba(0, 0, 0, 1)">,
      info:[]
      }
    },
    onLoad(response) {
      </span><span style="color: rgba(0, 0, 255, 1)">this</span>.id =<span style="color: rgba(0, 0, 0, 1)"> response.id
      </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.servicesInfo()
    },
    methods:{
      radioChange(e){
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 获取用选择的支付方式</span>
      <span style="color: rgba(0, 0, 255, 1)">this</span>.pay_type =<span style="color: rgba(0, 0, 0, 1)"> e.detail.value
      },
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">一、获取订单信息</span>
      servicesInfo:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
      </span><span style="color: rgba(0, 0, 255, 1)">var</span> that = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">;
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 请求订单信息接口</span>
      that.$http.post("User/servicesInfo",{'id'<span style="color: rgba(0, 0, 0, 1)">:that.id})
      .then(</span><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> (response) {
          that.info </span>=<span style="color: rgba(0, 0, 0, 1)"> response.data;
          console.log(response);
      });
      },
      
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">二、获取服务信息和支付配置信息</span>
      pay:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
      </span><span style="color: rgba(0, 0, 255, 1)">var</span> that = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">;
      </span><span style="color: rgba(0, 0, 255, 1)">if</span>(that.pay_type == 0<span style="color: rgba(0, 0, 0, 1)">){
          uni.showToast({
            title:</span>"请选择支付方式"<span style="color: rgba(0, 0, 0, 1)">,
            icon:</span>"none"<span style="color: rgba(0, 0, 0, 1)">
          })
          </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
      }
      </span><span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)"> url;
       </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 1 微信支付;2 支付宝支付</span>
      <span style="color: rgba(0, 0, 255, 1)">if</span>(that.pay_type == 1<span style="color: rgba(0, 0, 0, 1)">){
          url </span>= 'Order/wxpay'<span style="color: rgba(0, 0, 0, 1)">;
      }</span><span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span>(that.pay_type == 2<span style="color: rgba(0, 0, 0, 1)">){
          url </span>= 'Order/alipay'<span style="color: rgba(0, 0, 0, 1)">;
      }
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 请求服务信息和支付配置信息</span>
      that.$http.post(url,{'id':that.id,type:that.pay_type,'price':that.info.pay_price,'order_sn':that.info.order_sn}).then(<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(response){
          console.log(response);
          </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 调用支付</span>
<span style="color: rgba(0, 0, 0, 1)">          that.appPay(response.data,that.pay_type);
      });
      },
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 三、支付</span>
      appPay:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(data, type){
      </span><span style="color: rgba(0, 0, 255, 1)">var</span> that =<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">;
      let pay_type </span>= type == 1 ? 'wxpay' : 'alipay'
      <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 发起支付</span>
<span style="color: rgba(0, 0, 0, 1)">      uni.requestPayment({
          provider: pay_type,
          orderInfo: data.order_info, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">微信、支付宝订单数据</span>
          success: (res) =&gt;<span style="color: rgba(0, 0, 0, 1)"> {
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 支付成功,改变订单状态</span>
<span style="color: rgba(0, 0, 0, 1)">            that.updateOrder(data.out_trade_no,type)
          },
          fail: (err) </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> {
            uni.showToast({
            title:</span>'支付失败'<span style="color: rgba(0, 0, 0, 1)">,
            </span>'icon':'none'<span style="color: rgba(0, 0, 0, 1)">
            })
          }
      })
      },
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">四、修改务订单状态</span>
      updateOrder:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(order_no,type){
      </span><span style="color: rgba(0, 0, 255, 1)">var</span> that = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">;
      that.$http.post(</span>'Order/updateOrder'<span style="color: rgba(0, 0, 0, 1)">,{order_no:order_no})
      .then(</span><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(response) {
          uni.showToast({
            title:</span>"支付成功"<span style="color: rgba(0, 0, 0, 1)">,
            icon:</span>'none'<span style="color: rgba(0, 0, 0, 1)">,
            duration:</span>2000<span style="color: rgba(0, 0, 0, 1)">
          })
         
      })
      },
    }
}
</span>&lt;/script&gt;</pre>
</div>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/ts119/p/13749318.html
頁: [1]
查看完整版本: uni-app支付功能