'use strict'; const Controller = require('egg').Controller; const wxPayUtil = require('../util/wxPayUtil'); const xml2js = require('xml2js'); // 引入xml解析模块 const appId = 'wx1c015df104db7030'; // 小程序的appid const mchId = '1226156302'; // 商户号 // const mchKey = 'zaq12wsxcde34rfvbgt56yhnmjuioplk'; // 商户秘钥 class WxPayController extends Controller { // 小程序提现 async promotion() { const { ctx } = this; const query = ctx.request.body; const { openid, money, desc } = query; let responseData = {};// 请求返回结果 // const openId = 'oqqAL4xGxKX1U81gwK3SCqleaE7k'; // 提现用户openid 7771920101001 用户的小程序openid // const money = 1; // 企业付款金额,单位为分 // const desc = '积分核销'; // 企业付款备注,必填 const amount = Number(money) * 100;// 提现的金额(单位:分) const orderId = wxPayUtil.getOrderID(); // 商户订单号 const nonceStr = wxPayUtil.getRandomStr(32);// 生成随机字符串 const signObj = { mch_appid: appId, // 小程序appid mchid: mchId, // 商户号 nonce_str: nonceStr, // 随机字符串 partner_trade_no: orderId, // 商品订单号 openid, // 提现用户openid check_name: 'NO_CHECK', // 是否校验提现人姓名 // re_user_name:'老王',//提现人姓名 amount, // 提现金额 desc, // 商品描述 spbill_create_ip: '39.105.97.139', // 服务器地址 }; signObj.sign = wxPayUtil.getSignParam(signObj);// 将参数拼接,并进行MD5加密,生成sign值 const formData = wxPayUtil.getXmlParam(signObj); try { const payResult = await wxPayUtil.WeApiPromotion(formData); xml2js.parseString(payResult, function(error, result) { const reData = result.xml; ctx.logger.info('返回结果解析====================>' + JSON.stringify(reData)); if (reData.return_code[0] === 'SUCCESS') { responseData = { data: reData, }; } else { responseData = { wxReturnMsg: '微信提现API失败', wxReturnCode: 'FAIL', }; } }); // try { ctx.success(responseData); } catch (err) { ctx.error('微信提现失败', 500); } } } module.exports = WxPayController;