更新时间:2023-07-28 17:41:40收藏订阅更新我的文档设置返回文档简介现金红包为商家的小程序提供了现金红包发放功能,主要应用于企业、商家给用户发放支付宝红包的应用场景;用户领取后,红包金额可以提现到支付宝余额。商家可以配合使用多种红包策略和玩法,如随机金额,指定金额范围等,并且红包还可以分享到支付宝端外使用。详情可查看 。快速示例提供了支付宝小程序在某些场景下的官方凯发app官方网站的解决方案,提供了开发源码,开发者可以以此作为参考,也可以直接在源码的基础上进一步开发。本示例解决的是小程序现金红包。()场景介绍●收藏类领取红包:商家可以通过现金红包为自己的生活号引流,用户在关注小程序关联的生活号后,可以领取相应数额的现金红包。●分享类领取红包:在小程序的营销场景下,开发者可以用红包的形式鼓励用户转发小程序,通过社交裂变提高小程序的访问量。●积分制领取红包:在符合相关规定的前提下,开发者可以在小程序内建立一定的积分体系,用户可以用积分兑换红包,并在余额中查看。使用说明●需完成 开发者入驻 与 小程序创建 。●下载并安装小程序开发者工具(ide)(点此下载)。使用使用步骤1打开 ide。2在 ide 界面新建或打开项目:○通过界面 小程序 > 添加项目 > 选择端(可多选) > 选择模板 > 找到本示例对应的模板点击 下一步 > 配置项目名称和路径 > 点击 完成。○点击 打开项目 按钮,进入本文开头下载的源码包所在路径,将源码包解压到一个文件夹里,选择文件夹打开。3进入项目后,登录开发者账号,并关联已有 appid。4完成以上步骤后,可以通过 ide 进行开发和调试。整体流程使用现金红包模板进行快速开发的整体流程。开发步骤开发准备签约现金红包功能登录 ,进入对应小程序详情页 > 管理 > 能力管理 点击 添加能力 添加 现金红包 功能。现金红包能力需要签约才能生效,开发者添加能力后,点击能力列表右侧 签约,提交相关信息。 完成签约后,需要 1 个工作日左右的审核时间(审批结果会以短信和邮件形式告知),待审核完毕后,能力的状态会变成 已生效,即可使用 现金红包 能力。说明:若添加能力后其状态为 已生效,表明已完成签约可进行后续接入。添加引入 sdk 依赖请在 下载引入 alipaysdk 开发使用。demo 中使用如下配置:关注类领取红包功能商家可以通过现金红包为自己的生活号引流,用户在关注小程序关联的生活号后,可以领取相应数额的现金红包。现金红包 demo 领取示例:实现关注生活号组件以 demo 中为例,首先为了让用户有关注生活号的入口,需要首先在页面添加关注生活号组件,具体可查看 lifestyle 组件文档。用户未关注生活号时 iscollected 参数为 false,页面按钮会显示 关注生活号领取红包;点击该按钮,触发点击事件 onclickcollect() 会弹出弹窗提示用户需要先关注生活号。用户点击右上角关注按钮后 iscollected 参数会被赋为 true 此时用户界面会显示 已关注,领取红包 点击此按钮触发 onclickcollect() 事件且会调用 handleredpacket() 函数获取红包;获取成功后会在用户界面显示红包信息。关注生活号前后 button 显示变化逻辑在 index.js 中,小程序页面加载时,将 收藏状态(是否关注生活号) iscollected 初始化,默认值为 false,即用户未关注该生活号。小程序 axml中 关注生活号领取红包 按钮显示内容使用三目运算符通过判断用户是否关注生活号或分享转发来动态显示 button 内容,当用户点击右上角关注按钮后 iscollected 参数会被赋为 true。button 中内容则会改变为 已经关注,领取红包,点击即可领取红包。转发类红包功能在小程序的营销场景下,开发者可以用红包的形式鼓励用户转发小程序,通过社交裂变提高小程序的访问量。现金红包 demo 领取示例:实现用户点击小程序页面的 分享领红包 按钮 ,该按钮中定义了点击事件 onclickshare(),该函数会判断 isshared 参数的值以此确定用户是否完成转发,默认 isshared 参数当前值为 false ,会调用 my.showsharepanel 唤起分享页面。 demo 中当分享面板展开即判定用户转发成功,具体业务场景请按照需求实现。此时会将 isshared 的值被赋为 true ,用户页面的按钮信息会变为 已经分享,领取红包;分享小程序前后 button 显示变化逻辑在 index.js 中,小程序页面加载时,将 分享状态(是否分享小程序) isshared 初始化,默认值为 false,即用户未分享该小程序。小程序 axml 中 分享领红包 按钮显示内容使用三目运算符通过判断用户是否分享小程序显示 button 内容,当用户点击 分享领红包 按钮后,用户界面会弹出分享面板,此时 isshared 参数会被赋为 true 。button 中内容则会改变为 已经分享,领取红包,点击即可领取红包。积分制领取红包功能在符合相关规定的前提下,开发者可以在小程序内建立一定的积分体系,用户可以用积分兑换红包,并在余额中查看。现金红包 demo 领取示例:实现demo 中默认用户积分 point 值为 9999,点击 消耗积分进行红包兑换 按钮,该按钮中定义了点击事件 onclickpoint() ,该函数封装了 jsapi my.confirm 用于弹窗提示用户是否确定使用积分获取红包,当用户点击 立即兑换 同意后调用 usepoint() 函数用于获取积分兑换红包结果,该函数中封装了 jsapi my.request 用于向后台发送请求和接收返回信息。当返回业务处理成功时会调用 handleredpacket() 函数领取红包,领取成功后用户界面会显示红包信息。在 index.js 中,小程序页面加载时,将用户积分信息 point 初始化,默认值为 9999(仅测试使用,具体积分定义请开发者考虑实际场景实现)。后台 controller 中使用 pointsexchangemockimpl 实现 pointsexchangemock 接口进行积分兑换红包的业务操作,demo中直接返回 mock 信息,开发者需要根据实际情况实现。领取红包(通用代码逻辑)关注类、转发类和积分制红包在发放时,都需要设置以下的红包发放逻辑。小程序领取红包函数 handleredpacket() 函数逻辑:handleredpacket() 函数会先获取用户授权情况,调用 this.getauthcode('auth_user') 函数,传入参数为用户授权类型,该函数中封装了小程序 jsapi my.getauthcode 用于获取用户授权码。获取到用户授权后 调用 getredpacket(authcode) 函数像商家后台发起请求获取红包,该函数需要传入authcode 用于后台换取 accesstoken 和 user_id,该函数中封装了小程序jsapi my.request 用于向后台发送和接收返回数据,此处用 post 方式将要传给后台的 authcode 值放在 data 中传递给后台。当后台处理完成业务逻辑后会将红包信息返回(demo 中不做具体处理,请根据具体业务环境解析使用数据),当业务处理成功时会将 isshowredpacket 参数赋为 true(demo中将信息定义在 axml 中的 modal 标签中) 用户界面就会显示领取红包的信息(仅为示例,请按照 文档对接)。说明:为了良好的用户体验,用户领取红包后请注意红包页面定义点击隐藏事件。后台处理红包业务代码:java 代码中请注意使用支付宝的 openapi 向支付宝服务器发送请求,都需要构造 alipayclient 且需要配置的各项参数,例如小程序的公钥、私钥、网关地址、请求格式、字符集、签名类型等参数,建议与 demo 中类似编写配置信息的工具类并且将配置信息放在 properties 文件中方便后期修改,减小代码改动。查看 demo 中 config 包与 resource 包中的 application.properties 文件。demo 中使用 server/src/main/java/com/controller/rest 下的 alipayfundtransunitransfercontrollerimpl 类实现 alipayfundtransunitransfercontrollerl 接口,用于处理获取红包业务,此处需要获取前端发回的 auth_code 用户授权码。调用自定义的 isblank 方法判断 auth_code 的值:调用 getaccesstoken(auth_code) 方法传入 auth_code:在该方法中调用 (换取授权访问令牌接口) 对象 request 并使用 alipayclient 的certificateexecute(request) 方法获取 alipaysystemoauthtokenresponse 返回,该返回类型中包含了换取 accesstoken 状态以及支付宝用户的 user_id。商家处理完成业务将信息封装到 json 中后使用 (单笔转账接口) 创建 alipayfundtransunitransferrequest 对象 request 并且将数据使用 request.setbizcontent() 方法保存,调用 alipayclient 的certificateexecute(request) 方法传入该 request 对象,向支付宝服务器发送请求处理。最后将处理结果返回给前端页面解析显示。小程序发布代码编写完成后,开发者可以根据小程序 发布流程,提交开发完成的小程序。