前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >几行代码实现小程序云开发提现功能

几行代码实现小程序云开发提现功能

作者头像
许坏
发布2019-09-24 15:50:41
2.6K0
发布2019-09-24 15:50:41
举报
文章被收录于专栏:宅机吧宅机吧

先看效果:

纯云开发实现,下面说使用步骤: 一:开通商户的企业付款到领取功能 说明地址:

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

使用条件

1、商户号(或同主体其他非服务商商户号)已入驻90日

2、截止今日回推30天,商户号(或同主体其他非服务商商户号)连续不间断保持有交易

使用条件是第一难,第二难在下面这里

在网上找了很多,感觉是云开发这里的一个不完善地方,如果不填ip,会报这种错

代码语言:javascript
复制
{"errorCode":1,"errorMessage":"user code exception caught","stackTrace":"NO_AUTH"}

<xml>

<return_code><![CDATA[SUCCESS]]></return_code>

<return_msg><![CDATA[此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置]]></return_msg>

<mch_appid><![CDATA[wx383426ad9ffe1111]]></mch_appid>

<mchid><![CDATA[1536581111]]></mchid>

<result_code><![CDATA[FAIL]]></result_code>

<err_code><![CDATA[NO_AUTH]]></err_code>

<err_code_des><![CDATA[此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置]]></err_code_des>

</xml>

云开发没有ip这个概念,所以这里有些无从下手,希望后期云开发能有更好支付方案吧,不过这里我采用了个替代方案,参考了社区帖子:

https://developers.weixin.qq.com/community/develop/doc/00088cff3a40d87d80f7267b65b800

之后我也亲自验证了,基本上就是这几个,当然肯定不够,但是可以自己在逻辑上进行处理,ip以下:

代码语言:javascript
复制
172.81.207.12

172.81.212.74

172.81.236.99

172.81.235.12

172.81.245.51

212.64.65.131

212.64.84.22

212.64.85.35

212.64.85.139

212.64.87.134

接着,可以动手了

二、云开发部分

1、设置云存储

证书配置地址:

下载后有三个文件,我们只需要p12结尾的那个

然后,将这个apiclient_cert.p12文件上传到你的云存储

这里处理完了,我们只需要一个东西,就是fileID也就是常说的云存储ID(上图红框内容)

2、配置云函数

新建云函数ref云函数

代码如下:

代码语言:javascript
复制
const config = {
      appid: 'wx383426ad9ffe1111', //小程序Appid
      envName: 'zf-shcud', // 小程序云开发环境ID
      mchid: '1111111111', //商户号
      partnerKey: '1111111111111111111111', //此处填服务商密钥
      pfx: '', //证书初始化
      fileID: 'cloud://zf-shcud.11111111111111111/apiclient_cert.p12' //证书云存储id
};

const cloud = require('wx-server-sdk')
cloud.init({
      env: config.envName
})
const db = cloud.database();
const tenpay = require('tenpay'); //支付核心模块
exports.main = async(event, context) => {
//首先获取证书文件
const res = await cloud.downloadFile({
            fileID: config.fileID,
      })
      config.pfx = res.fileContent
let pay = new tenpay(config,true)
let result = await pay.transfers({
//这部分参数含义参考https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2
            partner_trade_no: 'bookreflect' + Date.now() + event.num,
            openid: event.userinfo._openid,
            check_name: 'NO_CHECK',
            amount: parseInt(event.num) * 100,
            desc: '二手书小程序提现',
      });
if (result.result_code == 'SUCCESS') {
//如果提现成功后的操作
//以下是进行余额计算
let re=await db.collection('user').doc(event.userinfo._id).update({
                  data: {
                        parse: event.userinfo.parse - parseInt(event.num)
                  }
            });
return re
      }
}

需安装的依赖:wx-server-sdk、tenpay

这里只是实现了简单原始的提现操作,关于提现后,比如防止重复提交,提现限额这些,在开源二手书商城上有完整流程,地址:

https://github.com/xuhuai66/used-book-pro

这种办法,不是每次都能成功提现,小概率遇到ip未在白名单情况,还是希望,云开发团队能尽快出一个更好的解决方案吧

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宅机吧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用条件
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档