云开发可以做 企业付款可以到零钱吗?

小程序 文章 2020-08-07 12:01 610 0 全屏看文

AI助手支持GPT4.0

云开发可以做 企业付款可以到零钱吗?Cloud development can be done, can corporate payments come to change?

云开发可以做 企业付款可以到零钱吗?

https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1


云开发可以做 企业付款可以到零钱吗?

https://pay.weixin.qq.com/wiki/doc/api/tools/mch_ pay.php?chapter=14_ Can cloud development do enterprise payment to change?

回答:

承之:

云函数,付款是V2版本接口

common.jsconst rp = require('request-promise')const fs = require('fs')const md5=require('md5')const _xml=require('xml')const xml2js=require('xml2js')const parser=new xml2js.Parser()const config = {  appid'xxxxxxxxxxxxxxx',  //小程序wxid  mchid'xxxxxxxxxxxx',  //商户号  partnerKey'xxxxxxxxxxxxxxxxxxxx'//商户api密钥  serial_no"xxxxxxxxxxxxxxxxxxxxxx",  //商户证书序列号}var globalData={}/*v2版接口的统一请求方法 *@method *@param {Object} options 请求选项和参数 *  options={ *    uri:{String} 请求地址, *    type:{String} 请求方式 GET POST..., *    body:{Object} (可选)请求参数集,POST请求需要同时传递本项, *    cert:{Boolean} (可选)是否需要证书,不填或false为不需要 *  } */async function _request(options)//调用接口  var datas=[]  for(let d in options.body){    datas.push(      {[d]:options.body[d]}    )  }  datas.push({sign:_sign(options.body)})  var cert=options.cert ? {    pfx:fs.readFileSync(__dirname+'/apiclient_cert.p12'),    passphrase:config.mchid  } : {}  var call = await rp({    uri'https://api.mch.weixin.qq.com/'+options.uri,    method: options.method,    body: _xml({xml:datas}),    ...cert  })  parser.parseString(call,function(err,res){    result=res.xml    for(let r in result){      result[r]=result[r][0]    }  })  return result}/*获取随机字符串 *@method *@return {String} 随机字符串 */function _randomStr(){  return (new Date().getTime() + '_' + Math.random()).toString().slice(0,30)}/*获取签名 *@method *@param {Object} body 包含接口请求参数的对象  *@return {String} 签名计算结果*/function _sign(body{  let body_arr = []  for (let b in body){    if(body[b].toString().length > 0){      body_arr.push(b + '=' + body[b])    }  }  body_arr.push('key=' + config.partnerKey)  return md5(body_arr.join('&')).toUpperCase()}module.exports = {  config,  globalData,  _request,  _randomStr}


CompanyPay.jsconst common=require('./common.js')/*企业付款接口 * *@Object CompanyPay*/const CompanyPay={    /*企业付款到零钱接口   *@method   *@param {Object} option   *  {   *    amount:{Number}, 付款金额,单位(分)   *    desc:{String}, 付款备注   *    openid:{String}, 接收方openid   *  }   *@return {Object} 接口返回参数   */  tochange:async function(option){    return await common._request({      uri:'mmpaymkttransfers/promotion/transfers',      method:'POST',      body:{        amount:option.amount,        check_name:'NO_CHECK',//或动态传入        desc:option.desc,        mch_appid:common.config.appid,        mchid:common.config.mchid,        nonce_str:common._randomStr(),        openid:option.openid,        partner_trade_no:new Date().getTime()      },      cert:true //企业付款需要证书  }  }  module.exports ={    ...CompanyPay  }


//调用// 云函数入口文件const cloud = require('wx-server-sdk')cloud.init({  env: cloud.DYNAMIC_CURRENT_ENV})// 云函数入口函数exports.main = async (event, context) => {  switch(event.action){    case 'companypay_tochange'//企业付款到零钱      const CompanyPay=require('./ApiV2/CompanyPay')      let companypay_action=event.action.replace('companypay_','')      return CompanyPay[companypay_action](event.data)    break    default:      return  }}


实现功能是没问题的,至于安全性、性能效率语法什么的,还需要自己完善,仅供参考

技术支持小易:可以的。调用api就行了,云开发不要局限于别人封装好了哪些接口和能力。
搞文艺的猿:

可以啊

-EOF-

AI助手支持GPT4.0