赞
踩
- uni.login({
- success: loginRes => {
- uni.request({
- url: "http://127.0.0.1:3003/wxpay/pay",
- data: {
- code: loginRes.code
- },
- method: "get",
- success: res => {
-
- },
- fail: err => {
-
- }
- })
- }
- })
- let express = require("express");
- let router = express.Router();
- const WxPay = require('wechatpay-node-v3');
- const fs = require('fs');
- let api = require("../api/index");
- var path = require('path');
- let weixinData = require('../utils/weixinData');
- const qs = require('querystring')
-
- //根据code查找openid
- function getOpenid(code){
- return new Promise((resolve, reject) => {
- let appid = weixinData.Appid
- let secret = weixinData.AppSecret
- let params = {
- appid,
- secret,
- js_code:code
- }
- let formData = qs.stringify(params)
- let openIdUrl = "https://api.weixin.qq.com/sns/jscode2session?" + formData + "&grant_type=authorization_code"
- api.get(openIdUrl).then( res => {
- resolve(res.data.openid)
- })
- })
- }
-
- // 创建支付实例
- const pay = new WxPay({
- appid: 'wx9fc72986dc9287b6',
- mchid: '1674432158',
- publicKey: fs.readFileSync(path.resolve(__dirname, 'apiclient_cert.pem')), // 公钥
- privateKey: fs.readFileSync(path.resolve(__dirname, 'apiclient_key.pem')), // 秘钥
- key: 'zlc010903zlc010903zlc010903wcpwc'
- });
-
- // 订单号生成函数
- function randomNumber() {
- const now = new Date()
- let month = now.getMonth() + 1
- let day = now.getDate()
- let hour = now.getHours()
- let minutes = now.getMinutes()
- let seconds = now.getSeconds()
- month = month < 10 ? "0" + month : month;
- day = day < 10 ? "0" + day : day;
- hour = hour < 10 ? "0" + hour : hour;
- minutes = minutes < 10 ? "0" + minutes : minutes;
- seconds = seconds < 10 ? "0" + seconds : seconds;
- let orderCode = now.getFullYear().toString() + month.toString() + day + hour + minutes + seconds + (Math.round(Math.random() * 1000000)).toString();
- return orderCode;
- }
-
- let notify = async (req, res) => {
- // 申请的APIv3
- let key = 'zlc010903zlc010903zlc010903wcpwc';
- let { ciphertext, associated_data, nonce } = req.body.resource;
- // 解密回调信息
- const result = pay.decipher_gcm(ciphertext, associated_data, nonce, key);
- // 拿到订单号
- let { out_trade_no } = result;
- if (result.trade_state == 'SUCCESS') {
- // 支付成功之后需要进行的业务逻辑
- console.log('支付成功')
-
-
-
- }
- }
-
- // 拿到支付所需参数
- let payInfo = (req, res) => {
- let { code } = req.query
- //获取openid
- getOpenid(code).then(async resolve => {
- const params = {
- mchid: '1674432158',
- description: '支付测试', // 订单描述
- out_trade_no: randomNumber(), // 订单号,一般每次发起支付都要不一样,可使用随机数生成
- notify_url: 'http://127.0.0.1:3003/wxpay/notify_url',
- amount: {
- total: 1, // 支付金额,单位为分
- currency: 'CNY'
- },
- payer: {
- openid: resolve, // 微信小程序用户的openid,一般需要前端发送过来
- },
- scene_info: {
- payer_client_ip: 'ip', // 支付者ip,这个不用理会也没有问题
- },
- };
- const result = await pay.transactions_jsapi(params);
- // 将结果响应给微信小程序前端
- res.send(result);
- })
-
- }
-
- // 回调路由
- router.post('/notify_url', notify)
- router.get('/pay', payInfo);
- module.exports = router
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。