美文网首页
微信小程序云开发微信支付

微信小程序云开发微信支付

作者: zhyzhyzz | 来源:发表于2020-03-04 15:19 被阅读0次

代码前提:只需要替换两个与自己相关的参数key和mch_id

1、小程序开通微信支付成功,去公众平台(https://mp.weixin.qq.com/);
成功后可以知道自己的mch_id,即商户号。
2、去这里:商户平台(https://pay.weixin.qq.com/),获取key = API密钥
图片地址:[https://mmbiz.qlogo.cn/mmbiz_png/UDa9R1yl9UZoyY753HG2kIgkLluHnCVBJLjUAyjbric01Wr142fcGRzUu5yUibyhEgTIZt0wXBtBDVhUQSZYcETw/0?]

小程序端:

 testWxCloudPay: function () {
    wx.cloud.callFunction({
      name: 'getPay',
      // data: {body:"body",attach:"attach",total_fee:1}, // 可传入相关参数。
      success: res => {
        console.log(res.result)
        if (!res.result.appId) return
        wx.requestPayment({
          ...res.result,
          success: res => {
            console.log(res)
          }
        })
      }
    })
  }

云函数getPay:

const key = "ABC...XYZ"//换成你的商户key,32位
const mch_id = "1413092000"//换成你的商户号
//以下全部照抄即可
const cloud = require('wx-server-sdk')
const rp = require('request-promise')
const crypto = require('crypto')
cloud.init()
function getSign(args) {
  let sa = []
  for (let k in args) sa.push(k + '=' + args[k])
  sa.push('key=' + key)
  return crypto.createHash('md5').update(sa.join('&'), 'utf8').digest('hex').toUpperCase()
}
function getXml(args) {
  let sa = []
  for (let k in args) sa.push('<' + k + '>' + args[k] + '')
  sa.push('' + getSign(args) + '')
  return '' + sa.join('') + ''
}
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const appId = appid = wxContext.APPID
  const openid = wxContext.OPENID
  const attach = 'attach' //可从event.attach传入
  const body = 'body' //可从event.body传入
  const total_fee = 1 //可从event.total_fee传入或改成自己的金额。
  const notify_url = "https://mysite.com/notify" //支付成功后的回调地址,没有的话可任意写。
  const spbill_create_ip = "118.89.40.200" //任意写
  const nonceStr = nonce_str = Math.random().toString(36).substr(2, 15)
  const timeStamp = parseInt(Date.now() / 1000) + ''
  const out_trade_no = "otn" + nonce_str + timeStamp //订单号,可用于订单查询,可自己写命名算法。
  const trade_type = "JSAPI"
  const xmlArgs = { appid, attach, body, mch_id, nonce_str, notify_url, openid, out_trade_no, spbill_create_ip, total_fee, trade_type }
  let xml = (await rp({ url: "https://api.mch.weixin.qq.com/pay/unifiedorder", method: 'POST', body: getXml(xmlArgs) })).toString("utf-8")
  if (xml.indexOf('prepay_id') < 0) return xml //如果发生错误,不含prepay_id,传回xml
  let prepay_id = xml.split("")[0]
  let payArgs = { appId, nonceStr, package: ('prepay_id=' + prepay_id), signType: 'MD5', timeStamp }
  return { ...payArgs, paySign: getSign(payArgs) }
}

packge.json:

{
  "name": "getPay",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "zfe",
  "license": "ISC",
  "dependencies": {
    "wx-server-sdk": "latest",
    "crypto": "^1.0.1",
    "request-promise": "^4.2.2"
  }
}

相关文章

  • 微信小程序支付开发具体流程

    申请微信支付小程序认证后进入微信支付申请小程序的微信支付实战:微信小程序支付开发具体流程 填写企业信息对公账户并上...

  • 微信小程序云开发(一)

    什么是微信云开发 微信云开发是微信团队联合腾讯云推出的专业的小程序开发服务。 开发者可以使用云开发快速开发小程序、...

  • 两大巨头引领的微信小程序之间的较量

    这两天被马云推出的支付宝小程序再次刷屏,相对微信小程序,支付宝小程序的发布更为平静些。从微信小程序开发到发布都备受...

  • 微信小程序通过云函数进行微信支付

    微信小程序微信支付 官方流程图如下: 微信小程序微信支付官方流程图链接 我简化的流程: 本地发起下单请求调用云函数...

  • 微信小程序云开发支付

    微信小程序的云开发支付先看下微信官方给出的流程图: 这张图里,开发者只需要关注的是小程序和云函数端即可;云函数做了...

  • 微信小程序支付开发具体流程

    该文章纪录了我在开发小程序支付过程中的具体流程 1. 申请微信支付 小程序认证后进入微信支付申请小程序的微信支付 ...

  • 微信小程序云开发微信支付

    代码前提:只需要替换两个与自己相关的参数key和mch_id 小程序端: 云函数getPay: packge.json:

  • 微信小程序开发系列六:微信框架API的调用

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的...

  • 微信小程序 支付

    注意事项    在做微信小程序支付之前首先要认证小程序,其次申请微信支付功能。申请微信功能成功后,会有开发文档,在...

  • 自定义条件编译

    缘由: uni-app同一套代码 无法区分 微信小程序插件 和微信小程序 当前项目开发微信小程序、支付宝小程序、业...

网友评论

      本文标题:微信小程序云开发微信支付

      本文链接:https://www.haomeiwen.com/subject/prnvlhtx.html