微信小程序调用第三方api案例(实时汇率计算)


theme: fancy

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情

需求分析:

在微信小程序里通过调用第三方api获得实时汇率,通过实时汇率在页面帮助用户计算不同货币之间的汇率.

源代码:

在data里存放各种货币相对人民币的汇率. image.png 通过用户在页面选择按钮的结果来实现对相应的货币单位的汇率转换. image.png image.png

调用接口获取实时汇率:

在此使用request来对接口发送请求,但发送请求时可能会爆出以下错误: "request:fail url not in domain list" 解决方案: 在编译器右上角点击详情->本地设置->将不校验合法域名的选项勾选. image.png 并且在微信公众平台,开发->开发管理->服务器域名 中添加request合法域名. image.png 配置完以上信息后在js里利用request对接口发送请求就不会报错了.

然后我们利用接口获取接口支持的货币列表.

image.png 代码如下: ``` try {

let that=this
  wx.request({
    url: 'https://www.mxnzp.com/api/exchange_rate/configs',
    method:"GET",
    data: {
      app_id: "**************"
      app_secret: "************"
    },
    success(res){
      that.setData({
        money_items:res.data.data
      })
      console.log(that.data.money_items)

    },
    fail(res){
      console.log(res)
      console.log("request fail")
    }
  })
} catch (error) {
  console.log("getmoney err")
}

```

image.png 然后将这些信息展现在用户页面上:

<view> <view> <button class="hidelist" bindtap="hidelist_len1"> 收起列表</button></view> <radio-group bindchange="getlen_select1"> <label class="radio" wx:for="{{money_items}}"> <view class="tui-menu-list"> <radio color="#007aff" value="{{item.desc}}" />{{index}}: {{item.desc}} <!-- <block wx:if="{{index==0}}"> <view> <button>收起列表</button></view></block> --> </view> </label> </radio-group> </view>

image.png\ 然后通过用户点击相应的选项去触发事件去在js里获取用户选择的单位:

``` /得到两个列表的选择/ getlenselect1: function (e) { // console.log(e.detail.value) this.setData({ lengthunit1: e.detail.value, lengthselect1: true }) // console.log(this.data.lengthunit1) if (this.data.case_money) {

for (let index = 0; index < this.data.money_items.length; index++) {
    if (e.detail.value == this.data.money_items[index].desc) {
      this.setData({
       unit1_id: this.data.money_items[index].name
      }) /*将单位换成货币编号.*/
    }
  }

}

}, getlenselect2: function (e) { this.setData({ lengthunit2: e.detail.value, lengthselect2: true }) if (this.data.casemoney) { for (let index = 0; index < this.data.moneyitems.length; index++) { if (e.detail.value == this.data.moneyitems[index].desc) { this.setData({ unit2id: this.data.moneyitems[index].name }) /将单位换成货币编号/ } }

}

},

```

计算事件(通过接口获取汇率):

通过之前获取到的两个转换单位作为向接口传递的参数,去获取两个单位之间的汇率,然后通过用户输入的数量去计算结果.

image.png ``` moneycalculation: function () { /*计算汇率转换结果*/ var u1 = this.data.unit1id /单位1/ var u2 = this.data.unit2id /*单位2*/ var len = this.data.lengthinput /输入的数量/ var ans = 1.0

try {
  let that=this
  wx.request({
    url: 'https://www.mxnzp.com/api/exchange_rate/aim',
    method:"GET",
    data: {
      app_id: "*********"
      app_secret: "************"
      from:u1,
      to:u2,
    },
    success(res){
      ans=(Number(len) * Number(res.data.data.price)).toFixed(3)  
      that.setData({
        len_ans: ans
      })         
    },
    fail(res){
      console.log(res)
      console.log("request fail")
    }
  })
} catch (error) {
  console.log("getmoney err")
}

}, ``` 将最终结果显示至用户页面:

image.png wxml:

``` 请输入:

<view class="len_input_text">输入的金额为: {{length_input}}{{length_unit1}}</view>
  <view class="length_put_select">
    <!--选择输出单位-->
    <block wx:if="{{!length_select2}}">
      <view>
        <view> <button class="hidelist" bindtap="hidelist_len2"> 收起列表</button></view>
        <radio-group bindchange="getlen_select2">
          <label class="radio" wx:for="{{money_items}}">
            <view class="tui-menu-list">
              <radio color="#007aff" value="{{item.desc}}" />{{index}}:{{item.desc}}
            </view>
          </label>
        </radio-group>
      </view>
    </block>
    <block wx:else="">
      <view> <button class="displaylist" bindtap="displaylist_len2"> 请选择所求单位</button></view>
    </block>
  </view>
  <view class="length_look">
    <!--/*位置信息展示区*/-->
    <view> <button class="len_calculation" bindtap="money_calculation">计算</button></view>
    <view class="ans_text"> 换算结果为:{{len_ans}}{{length_unit2}}</view>

  </view>
</view>

```

上传版本并提交审核:

image.png image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷月半明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值