云开发小程序 之 企业付款

最近公司小程序项目都转到 云开发了,现在需要 做给用户发红包功能, 不说废话直接上代码

需要配置 node 环境,   需要 安装 ip 和 tenpay 模块

############ envName 根据自己的开发环境 配置

############  fileID  根据自己的存储位置配置

const cloud = require('wx-server-sdk') 

const config = {

  appid: '小程序appid',               //小程序Appid

  envName: '云开发环境ID',       // 小程序云开发环境ID 根据自己的环境配置

  mch_appid: '商户appid',

  mchid: '商户号', 

  partnerKey: '商户支付密钥', 

  pfx: '', //证书初始化

  fileID: '云存储文件ID'

};

cloud.init({

  env: config.envName

})

const ip = require('ip');

const tenpay = require('tenpay'); //支付核心模块

const db = cloud.database()

const _ = db.command

// 云函数入口函数

exports.main = async (event, context) => {

  const wxContext = cloud.getWXContext()

  var openid = wxContext.OPENID

  ############金额是分########

 var cash_money = 100   //提现金额


 #############支付之前验证操作 忽略 可以根据自己需要进行验证 #############

 #############下面首先获取证书文件########

 const res = await cloud.downloadFile({

      fileID: config.fileID,

    })

    config.pfx = res.fileContent

    let pay = new tenpay(config, true)

    var nonce_str = ''

    arr = ['0','1','2','3', '4', '5', '6', '7', '8', '9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];

     #############产生随机字符串 #############

    for (var i = 0; i < 32; i++) {

      pos = Math.round(Math.random() * (arr.length - 1));

      nonce_str += arr[pos];

    }

     #############产生商户单号 #############

    var time = new Date()

    var timestamp = 'TX' + time.getTime()

    var partner_trade_no = timestamp + '' + Math.floor((Math.random() * 1000) + 1);

 #############调用支付 #############

    let result = await pay.transfers({

          mch_appid: config.mch_appid,

          mchid: config.mchid,

          nonce_str: nonce_str,//唯一字符串

          partner_trade_no: partner_trade_no,

          openid: openid,

          spbill_create_ip: ip.address(),//客户端ip

          check_name: 'NO_CHECK',

          amount: parseInt(cash_money),

          desc: '提现红包',

    });

 #############对结果进行分析 #############

  if (result.result_code == 'SUCCESS' && result.return_code =='SUCCESS') {

       #############执行成功之后  减掉提现的金额  #############

      let re = await db.collection('user').where({

            _openid:openid

      }).update({

            data: {

                  money:_.inc(-cash_money)

                }

      });

 #############添加提现  记录操作忽略 #############

      return {

            status:1,

            msg:'提现成功'

      }

    }else{

         return {

                status:0,

                msg:'提现失败'

      }

    }

}


温馨提示:企业付款功能, 需要小程序 进行认证之后 ,才可以操作,商户后台和小程序进行关联操作 

                        

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。