微信小程序云函数支付

博主分享第一次使用微信小程序云函数支付功能的经验。介绍了在project.config.json文件添加字段、在app.js添加代码、打开云开发、编辑本地服务函数等步骤,还提到云函数将部分代码放服务器,要注意异步问题,记录了简单方法供后续对比。
说明:第一次使用微信小程序云函数的支付功能,也找了很多资源,这一种是最适合我的,不知道能不能帮助到大家,就算是自己的一个总结吧。

步骤一:
在project.config.json文件里添加"cloudfunctionRoot": “cloudfuntions/”,字段


"description": "项目配置文件",  
"cloudfunctionRoot": "cloudfuntions/", 
 "packOptions": {    "ignore": []  },

步骤二:
在app.js里添加代码

onLaunch() {
        // 将用户访问记录到用户管理中,在控制台可见    
        if(!wx.cloud) {         
          console.error('请使用2.2.3或以上的基础库以使用云能力');        
        }        
        else {         
          wx.cloud.init({         
          env: 'pay-2gbw5art867e1f3c',     // 当前云开发环境的ID         
          traceUser: true,        
          })      
         }    
        }

步骤三:
打开云开发 打开云开发
如果是第一次使用云开发可以这样操作:
1:新建项目时选择使用小程序·云开发
2:点击云开发按钮创建初始环境,如果创建完之后未出现相关文件夹可重启开发工具
云函数文件
创建好环境之后会有这个文件夹。payment里就是当前的云函数所在地
3:在payment文件夹上右键单击可以进行云函数的运行与部署
4:在app.js里面有一个属性env,它是当前环境的ID,如果要更换环境更改ID即可 环境ID
步骤四:
编辑本地服务函数(给支付按钮绑定个事件pay())

pay() {    
	wx.cloud.callFunction({      
	name: 'payment',     // payment为云函数的名字      
	data: {        total_fee: 1800,     // 这里注意这是number类型,当时我写成了string找了半天        
		spbill_create_ip: '127.0.0.1'    // 回调函数服务,我随便写的,不知道有啥用,我看别的帖子也随便写的      }    
	}).then(res => {      
	console.log('vip接口', res)      
wx.requestPayment({
        // 这是调用云函数之后返回的五个参数,都在res里        
        timeStamp: res.result.payment.timeStamp,        
        nonceStr: res.result.payment.nonceStr,        
        package: res.result.payment.package,        
        signType: res.result.payment.signType,        
        paySign: res.result.payment.paySign,        
        success: res => {          // 支付成功          console.log('支付成功', res);        },        
        fail: err => {          // 支付失败          console.log('支付失败', err);        
        }      })    })  }

步骤五:
我的云函数payment

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({  env: cloud.DYNAMIC_CURRENT_ENV    // 当前云函数环境的ID})
exports.main = async (event, context) => {

  // event包含本地服务里的函数wx.cloud.callFunction里传过来的data
  // 我传递的是total_fee和spbill_create_ip 
   const res = await cloud.cloudPay.unifiedOrder({    "body" : "yuanyuan",//商品名称    
   "outTradeNo" : "250190269"+new Date().getTime(),//订单号    
   "spbillCreateIp" : `${event.spbill_create_ip}` + '',//回调函数,这我转换了,可以不转换    
   "subMchId" : "123123123",//商户号    
   "totalFee" : event.total_fee,//商品支付金额,单位分    
   "envId": "pay-2gbw5art867e1f3c",//云开发id    
   "functionName": "pay_cb"//回调云函数  
   })  return res}

总结:云函数是将一部分代码放在了服务器上,注意异步的问题,我本来在掘金上搜的帖子是没用cloud.cloudPay.unifiedOrder,这个方法比较简单,先记录下来,以后用到别的方法在比较。

我之前看的帖子:j添加链接描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值