支付宝小程序接入花芝轻会员
好久没写博客了……今天一时兴起,准备把最近做的东西记录下来。以后要重拾写博客的好习惯。手动狗头,今天先来介绍下最近做过的支付宝小程序接入轻会员的流程。
什么是轻会员??
废话不多说,直接上官方的介绍:
“花芝轻会员”是一款轻量级的差异化会员营销工具,集成了花呗和芝麻信用两大能力。商家可让用户“先享受权益,后支付会员费”,体验作为轻会员和普通会员之间的差异化服务。使用户切实享受会员带来的实惠、打消资金安全和消费陷阱顾虑;使商家会员经营更简单,促进会员留存和复购。
支付宝小程序接入轻会员步骤
接入轻会员,主要需要三个步骤:
签约轻会员
参考《轻会员商家接入指南》
完成轻会员模板配置
参考《轻会员商家接入指南》
将轻会员代码插入到小程序中
在模板配置完成后,我们可以获得模板的templateId,所以在我们代码中,只需要唤起轻会员插件即可。
1 | const { config } = this.state |
代码中的templateId即是我们在第二步中配置模板生成的ID, partnerId为商家支付宝Id(不是用户的Id)。
轻会员结算成功通知商户
轻会员在页面上用户是无法感知的,优惠金额只有在用户结算时才显示在支付宝收银台上。为了方便获取优惠金额,用户支付完成后,异步获取优惠金额也是一个很重要的步骤。
支付宝考虑到这一点,也提供了相应的API。主要用于支付完成后异步通知商户信息。
这里主要给出两种实现方式:
- Java
1 | AlipayClient alipayClient = new DefaultAlipayClient("https://openasyncapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2"); |
- HTTP请求
1 | https://openasyncapi.alipay.com/gateway.do?timestamp=2013-01-01 08:08:08&method=alipay.pcredit.huabei.auth.settle.success&app_id=17043&sign_type=RSA2&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0&charset=GBK&biz_content={"pay_amount":"3.00","alipay_user_id":"2088101117955611","rest_freeze_amount":"0.00","out_seller_id":"123023415243","auth_opt_id":"2018041721001001230571065758","addition_operate_result":"Y","agreement_no":"20170502000610755993","agreement_status":"N","gmt_trans":"2018-03-15 11:23:04","trade_no":"2013112011001004330000121536","addition_operate_type":"SIGN_OFF","out_request_no":"8077735255938032","auth_scene":"EASY_MEMBER"} |
公共请求参数:
| 参数 | 类型 | 是否必填 | 最大长度 | 描述 |
|---|---|---|---|---|
| notify_id | String | 是 | 50 | 通知Id |
| utc_timestamp | String | 是 | 13 | 消息发送时的服务端时间 |
| msg_method | String | 是 | 100 | 消息接口名称 |
| app_id | String | 是 | 20 | 消息接受方的应用id |
| msg_type | String | 是 | 5 | 消息类型。目前支持类型:sys:系统消息;usr,用户消息;app,应用消息 |
| msg_uid | String | 否 | 20 | 消息归属的商户支付宝uid。用户消息和应用消息时非空 |
| msg_app_id | String | 否 | 20 | 消息归属方的应用id。应用消息时非空 |
| version | String | 是 | 5 | 版本号(1.1版本为标准消息) |
| biz_content | String | 是 | 消息报文 | |
| sign | String | 是 | 签名 | |
| sign_type | String | 是 | 10 | 签名类型 |
| encrypt_type | String | 否 | 10 | 加密算法 |
| charset | String | 是 | 10 | 编码集,该字符集为验签和解密所需要的字符集 |
| notify_type | String | 否 | 20 | 通知类型,1.1接口没有该参数 |
| notify_time | String | 否 | 19 | 通知时间 |
| auth_app_id | String | 否 | 20 | 1.1没有此参数授权方的应用id |
消息的基本格式:
| 参数 | 类型 | 是否必填 | 最大长度 | 描述 |
|---|---|---|---|---|
| auth_opt_id | String | 是 | 64 | 支付宝侧授权操作单据id |
| trade_no | String | 否 | 64 | 支付宝交易号,当支付金额>0时才会有支付宝交易号2018112011001004330000121536,否则就为空 |
| agreement_no | String | 是 | 64 | 支付宝系统中用以唯一标识用户签约记录的编号 |
| agreement_status | String | 是 | 10 | 协议状态。Y表示状态有效,P表示失效中,N表示状态失效 |
| out_request_no | String | 是 | 64 | 商户本次操作的请求流水号,用于标识请求流水的唯一性,不能包含除中文、英文、数字以外的字符,需要保证在商户端不重复 |
| auth_scene | String | 是 | 64 | 花芝轻会员签约场景,商户和支付宝签约时确定,商户接入时需要咨询技术支持。 |
| rest_freeze_amount | String | 是 | 16 | 完成本次操作时,用户资金池余额快照。仅作提示用,请勿用于核对,并发情况下数值有可能不准确。两位小数,单位元 |
| pay_amount | String | 是 | 16 | 支付金额,单位元 |
| alipay_user_id | String | 是 | 128 | 买家在支付宝的用户id |
| out_seller_id | String | 是 | 64 | 商户的支付宝sellerId |
| gmt_trans | String | 是 | 20 | 业务成功时间 |
| addition_operate_type | String | 是 | 20 | 支付完成后的协议追加动作,比如解约SIGN_OFF |
| addition_operate_result | String | 是 | 20 | 表示此次业务是否成功,Y:成功,N:失败 |
以上介绍了请求的一些基本参数,接下来就只需要在支付宝开放平台消息服务中设置消息模板,具体操作可参考支付宝开放平台消息服务 中的From蚂蚁消息服务使用。
待续…….