基于VUE、HTML5+ API Reference微信支付(APP)

基于VUE、HTML5+ API Reference微信支付(APP)

1.在src目录下创建pay.js,用作公共支付js

2.定义全局支付方法

全局定义支付方式Vue.prototype.plusReady,

import axios from 'axios'
import router from './router'
export function install(Vue, option) {
  // 支付
  Vue.prototype.plusReady = function (data) {
    if (window.plus) {
      wxpay(data)
    } else {
    // 扩展API加载完毕,现在可以正常调用扩展API
      document.addEventListener(
        'plusready',
        function () {
          wxpay(data)
        },
        false
      )
    }
  }
}

*使用window.plus判断是为了要兼容老版本的plusready事件
*判断当前环境中是否有plus对象,如果有,直接调用wxpay(),没有的话,扩展API加载完毕就可正常调用(plus是5+Runtime的内部对象)

3.获取支付通道并设置为‘微信支付’

function zhifu(data) {
    var channel = null
    try {
      plus.payment.getChannels(
        function (channels) {
          channel = channels.find(i => {
            return i.id == 'wxpay'
          })
          ......
        },
        function (e) {
          plus.nativeUI.alert('获取支付通道失败:' + e.message)
        }
      )
    } catch (e) {
    }
  }

plus.payment.getChannels(successCB, errorCB);支付成功回调函数中会返回支持的支付方式,遍历选择‘wxpay’,存为变量

4.调起微信支付

将金额,订单id,type传给后端(具体看后端需要什么|data),后端需要返回调起支付需要的appid、noncestr、package、partnerid、prepayid、sign、timestamp,拿到信息之后调起微信支付

plus.payment.request(channel, statement, successCB, errorCB);

		axios
            .get(`接口地址`, {params: data})
            .then(val => {
              plus.payment.request(
                channel,
                val.data.data,
                function (result) {
                  plus.nativeUI.alert('支付成功', function () {
                  	...
                    支付成功后的操作
                    ...
                  })
                },
                function (error) {
                  plus.nativeUI.alert('支付失败', function () {
                  ...
                  支付失败后的操作
                  ...
                  })
                }
              )
            })
            .catch(err => {
              plus.nativeUI.alert('网络不佳')
            })

调用指定的支付通道进行支付操作,其中statement包含支付操作的相关信息,支付模块将弹出支付界面供用户进行支付信息的输入确认操作。.
channel: ( PaymentChannel ) 必选 支付通道
指定支付操作的通道,通过getChannels接口获取。
statement: ( String | JSON | OrderStatementIAP ) 必选 支付订单信息
支付订单信息,由支付通道定义的数据格式,通常是由业务服务器生成或向支付服务器获取,是经过加密的字符串信息。

5.使用

在点击支付的地方调用plusReady ,传入data(后端需要的参数)

this.plusReady(data)

6.打包时配置

使用HBuilder打包,manifest.json文件中SDK配置
在这里插入图片描述
模块权限配置,勾选
在这里插入图片描述

微信小程序uni-app是一个使用Vue.js开发的框架,可以将开发者编写的一套代码发布到iOS、Android、Web以及各种小程序平台,如微信、支付宝、百度等。uni-app支持跨平台开发,开发者可以使用uni-app开发微信小程序,并将其发布到微信平台上。uni-app提供了丰富的生命周期函数,包括app、page和component三个构造器的声明周期函数。具体的生命周期函数包括:\[2\] - app生命周期函数:onLaunch、onShow、onHide、onError等。 - page生命周期函数:onLoad、onShow、onHide、onUnload等。 - component生命周期函数:created、attached、ready、detached等。 通过使用这些生命周期函数,开发者可以在不同的阶段执行相应的操作,实现更加灵活和高效的开发。 #### 引用[.reference_title] - *1* [uniapp微信小程序系列(1)基础与入门](https://blog.csdn.net/zeping891103/article/details/126952270)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [微信小程序+uni-app知识点总结](https://blog.csdn.net/liuliuhhxxttxs/article/details/128028711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [uniapp开发微信小程序,从构建到上线](https://edu.csdn.net/skill/mini_programs/mini_programs-31ee2719d0214d4a875a82607d1071e5)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值