赞
踩
小程序实现微信支付主要涉及到以下几个步骤:
以下是一个简化的示例代码:
后端服务器代码(Node.js):
const axios = require('axios'); const crypto = require('crypto'); // 调用微信支付API获取预支付交易会话标识 async function getPrepayId(orderInfo) { const apiUrl = 'https://api.mch.weixin.qq.com/pay/unifiedorder'; const config = { method: 'post', url: apiUrl, data: orderInfo, headers: { 'Content-Type': 'application/json', }, }; const response = await axios(config); const result = response.data; if (result.return_code === 'SUCCESS' && result.result_code === 'SUCCESS') { return result.prepay_id; } else { throw new Error('获取预支付交易会话标识失败'); } } // 生成签名 function generateSignature(params) { const keys = Object.keys(params).sort(); let stringA = keys.join('='); const stringSignTemp = stringA + '&key=' + 'YOUR_API_KEY'; // YOUR_API_KEY 是你在微信支付商户平台设置的API密钥 const sign = crypto.createHash('md5').update(stringSignTemp).digest('hex').toUpperCase(); return sign; } // 处理支付请求 async function handlePayment(orderInfo) { const prepayId = await getPrepayId(orderInfo); const timestamp = Math.floor(Date.now() / 1000).toString(); const nonceStr = Math.random().toString(36).substring(7); const packageValue = 'prepay_id=' + prepayId; const params = { appId: 'YOUR_APP_ID', // YOUR_APP_ID 是你在微信小程序平台注册的AppID timeStamp: timestamp, nonceStr: nonceStr, package: packageValue, signType: 'MD5', }; params.sign = generateSignature(params); return params; } module.exports = { handlePayment, };
小程序前端代码:
wx.request({ url: 'YOUR_SERVER_URL/payment', // YOUR_SERVER_URL 是你的后端服务器地址 method: 'POST', data: { // 订单信息,如商品描述、订单号等 }, success(res) { const paymentParams = res.data; wx.requestPayment({ ...paymentParams, success(res) { console.log('支付成功', res); // 处理支付成功后的逻辑,如更新订单状态等 }, fail(err) { console.log('支付失败', err); // 处理支付失败后的逻辑 }, }); }, fail(err) { console.log('请求支付接口失败', err); }, });
请注意,以上代码仅作为示例,实际使用时你需要根据自己的业务逻辑和微信支付的相关规则进行适当的调整。同时,为了保障支付的安全性,务必妥善保管你的API密钥,并确保在传输和存储敏感信息时采取适当的安全措施。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。