uniapp 接入微信支付过程

uniapp 接入微信支付过程

1.申请微信支付

首先,你需要在微信支付商户平台(pay.weixin.qq.com)上注册一个商户账号,并完成相关的身份验证和资料填写。

2.获取商户号和API密钥

在微信支付商户平台获取你的商户号(mch_id)和API密钥(api_key)。这些信息将用于后续的支付请求和回调验证。

3.创建后端接口

由于微信支付需要进行后端交互,你需要创建一个后端接口来处理支付请求和回调。这个接口可以使用任何你熟悉的后端语言来实现,比如Node.js、PHP等。

3.1.处理预支付请求

在后端接口中,你需要实现一个用于处理预支付请求的方法。该方法需要包含以下几个步骤:

  • 构建预支付参数:根据微信支付文档,构建一个包含商户号、appid、订单信息等必要参数的XML格式的数据。
  • 生成签名:使用API密钥对预支付参数进行签名。
  • 发送请求:使用HTTP POST请求将预支付参数发送到微信支付统一下单接口(api.mch.weixin.qq.com/pay/unifiedorder)。
  • 解析结果:解析微信支付统一下单接口返回的XML数据,获取预支付的相关信息。

3.2.处理支付结果回调

当支付完成后,微信会将支付结果异步发送到你预先设定的回调地址。你需要在后端接口中实现一个用于处理支付结果回调的方法。该方法需要包含以下几个步骤:

  • 接收回调数据:从POST请求中获取回调数据。
  • 验证签名:使用API密钥验证回调数据的签名是否正确。
  • 解析数据:解析回调数据,获取支付结果相关信息。
  • 处理业务逻辑:根据支付结果,执行你需要的业务逻辑(比如更新订单状态等)。
  • 返回响应:返回一个表示回调接收成功的响应给微信支付服务器。

4.前端调用支付接口

在Uni-app的前端代码中,你可以调用微信小程序提供的uni.requestPayment方法来发起支付请求。在发起支付请求之前,你需要先通过后端接口获取预支付信息。
以下是一个示例代码:

// 构建支付参数
const paymentParams = {
  timeStamp: '预支付时间戳',
  nonceStr: '随机字符串',
  package: '预支付包 package',
  signType: '签名类型',
  paySign: '预支付签名'
}

// 调用微信支付
uni.requestPayment({
  provider: 'wxpay',
  timeStamp: paymentParams.timeStamp,
  nonceStr: paymentParams.nonceStr,
  package: paymentParams.package,
  signType: paymentParams.signType,
  paySign: paymentParams.paySign,
  success(res) {
    // 支付成功回调
    console.log(res)
  },
  fail(err) {
    // 支付失败回调
    console.log(err)
  }
})

这段代码中,paymentParams包含了从后端接口获取的预支付信息,用于调用微信支付。调用uni.requestPayment方法时,会打开微信支付界面供用户进行支付。

以上就是使用Uni-app接入微信支付的基本教程。希望对你有帮助!如有任何问题,请随时咨询。

//微信充值 //支付接口测试 function balance(url, data) { uni.request({ url: cfg.originUrl + '/wx/mp/js_sig.do', data: { route: url }, method: 'GET', success: (res) => { jweixin.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来 appId: res.data.appId, // 必填,公众号的唯一标识 timestamp: res.data.timestamp, // 必填,生成签名的时间戳 nonceStr: res.data.nonceStr, // 必填,生成签名的随机串 signature: res.data.signature, // 必填,签名 jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表 }); jweixin.ready(function() { uni.request({ url: cfg.originUrl + '/wx/recharge/pay.do', method: 'POST', header: { 'Content-type': "application/x-www-form-urlencoded", }, data: JSON.stringify(data), success: function(res) { alert("下单成功"); alert(JSON.stringify(res)); alert(res.data.order_id); all.globalData.orderId = res.data.order_id; uni.setStorageSync('orderId', res.data.order_id); jweixin.chooseWXPay({ timestamp: res.data.payParams.timeStamp, // 支付签名时间戳 nonceStr: res.data.payParams.nonceStr, // 支付签名随机串 package: res.data.payParams.package, // 接口返回的prepay_id参数 signType: res.data.payParams.signType, // 签名方式 paySign: res.data.payParams.paySign, // 支付签名 success: function(e) { alert("支付成功"); alert(JSON.stringify(e)); // 支付成功后的回调函数 } }); } }) }); jweixin.error(function(res) { // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 console.log("验证失败!") }); } }) }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值