没有自己的服务器,怎么用云函数来接收微信支付成功异步通知呢。
步骤如下:
(因论坛审核机制,就不上图片了,否则可能触发人工审核)
打开小程序开发工具;
1、云控制台中,点击:设置–环境设置–充值与账单;
此时会跳到腾讯云;
2、点击:账号中心–访问管理;
此时会跳到腾讯云控制台;
3、在左上角点击:云产品–找到:云开发CloudBase;
此时出现小程序的云环境列表
4、选择某个云环境;
5、点击:访问服务;
6、新建一个HTTP访问服务;将一个公网域名URL与一个云函数关联;
比如云函数名:pay_notify与https://<http访问服务的默认域名>/pay_notify关联。
7、在统一下单里,将notify_url设为:https://<http访问服务的默认域名或自定义域名>/pay_notify
此时,可以在pay_notify中处理来自微信支付的异步通知了;
那这个云函数的入口参数是什么样的呢?接口文档:
https://cloud.tencent.com/document/product/876/41776
8、固定IP的配置:可以在此处腾讯云中配置,也可以在小程序开发工具的云控制台配置:某云函数–配置–高级设置–固定IP。
9、pay_notify的代码实例:以微信支付V2为例。
const cloud = require('wx-server-sdk')
const xml2js = require('xml2js')
const crypto = require('crypto')
const config = require('./config.js')
const key = config.key
cloud.init({env: cloud.DYNAMIC_CURRENT_ENV})
const db = cloud.database()
const _ = db.command
const col = db.collection('payments')
exports.main = async event => {
let xml = Buffer.from(event.body, 'base64').toString()
let payment = await parseXML(xml)
if(signVerify(payment)){}else return 'denied'
await onPayment(payment) //业务处理
return ``
}
至此,不用服务器,通过云函数,就实现了微信支付notify_url的全部功能。