支付宝小程序 - 基于芝麻信用分免押金操作流程

本文介绍了在支付宝小程序中如何接入芝麻信用分,以实现免押金操作流程。主要内容包括:小程序只能调用芝麻信用分普惠版,用户授权机制的必要性,以及详细的技术实现步骤,如获取authCode,通过alipay.system.oauth.token接口获取userId,以及使用ZhimaCreditScoreBriefGetRequest检查用户信用分是否达标。
部署运行你感兴趣的模型镜像

近期在做支付宝小程序的时候,需要接入芝麻信用分,用于用户的免押金操作流程。

 查询相关文档以及与芝麻客服沟通后,得出以下结论:

  1、小程序只能调用芝麻信用分普惠版,普惠版无法获取用户具体的信用分。

  2、芝麻信用分普惠版无需用户授权,但一般情况下我们都会让用户授权。(像ofo,哈罗单车,永安行等等)

  3、用户一旦授权,平台将无从得知用户是否已经取消了授权。(原因就是第二步)


我们平台采用授权机制,具体开发流程如下


1、小程序调用获取会员信新接口,获取 authCode,然后传给服务器。

    具体接口可以参考 https://docs.alipay.com/mini/introduce/auth

2、服务器拿到 authCode,调用 alipay.system.oauth.token 接口获取 用户在支付宝商户下的 userId

代码如下:

    // 获取用户的userId

    public static UserAuthonResBO authorizationByMayi(String auth_code,int zhimaScore){
        
        AlipayClient alipayClient = getRsa2Client();
        
        AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
        request.setGrantType("authorization_code");
        request.setCode(auth_code);
        
        UserAuthonResBO resp = new UserAuthonResBO();
        try {
            AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
            
            if(response.isSuccess()){
                resp = goMaYiauthorization(response.getUserId(),zhimaScore);
            }else {
                resp.setIsSuccess(false);
                resp.setErrorCode(response.getSubCode());
                resp.setErrorMessage(response.getSubMsg());
            }
            
        } catch (AlipayApiException e) {
            resp.setIsSuccess(false);
            resp.setErrorMessage(e.getMessage());
        }
        return resp;

    }


//根据 userId 查询用户的支付分是否大于设置值

public static UserAuthonResBO goMaYiauthorization(String userId,int score){
        
        ZhimaCreditScoreBriefGetRequest request = new ZhimaCreditScoreBriefGetRequest();
        String transaction_id = getTransactinId();
        SesameRequest sesame = new SesameRequest();
        sesame.setTransaction_id(transaction_id); //64
        sesame.setProduct_code("w1010100000000002733");//固定值
        sesame.setCert_type("ALIPAY_USER_ID"); // ALIPAY_USER_ID 支付宝uid
        sesame.setCert_no(userId);
        sesame.setAdmittance_score(score);
        request.setBizContent(JSON.toJSONString(sesame));
        
        UserAuthonResBO resp = new UserAuthonResBO();
        resp.setOpenId(userId);
        resp.setTransactionId(transaction_id);
        
        AlipayClient alipayClient = getRsa2Client();
        
        try {
            ZhimaCreditScoreBriefGetResponse response = alipayClient.execute(request);
            
            logger.info(response.getBody());
            
            if(response.isSuccess()){
                switch (response.getIsAdmittance()) {
                case "Y":
                    resp.setIsSuccess(true);
                    break;
                case "N":
                    resp.setIsSuccess(false);
                    resp.setErrorMessage("用户的芝麻分小于准入分数");
                    break;
                case "N/A":
                    resp.setIsSuccess(false);
                    resp.setErrorMessage("无法评估,例如用户未开通芝麻信用,或芝麻采集的信息不足以评估该用户的信用");
                    break;
                default:
                    break;
                }
            }else {
                resp.setIsSuccess(false);
                resp.setErrorCode(response.getSubCode());
                resp.setErrorMessage(response.getSubMsg());
            }
        } catch (AlipayApiException e) {
            resp.setIsSuccess(false);
            resp.setErrorMessage(e.getMessage());
        }
        
        return resp;
    }


public static AlipayClient getRsa2Client(){
        
        AlipayClient alipayClient = new DefaultAlipayClient(xcx_url,
                                    xcx_appId, xcx_privateKey,
                                    "json",
                                    "GBK",
                                    xcx_alipayPulicKey,
                                    "RSA2");
        
        return alipayClient;

    }



您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

接入支付宝小程序后台的押金功能,开发者需要遵循支付宝提供的信用服务接入流程支付宝信用体系能够为小程序提供押金信用租赁等服务,从而提升用户体验并促进交易转化。以下是接入押金能力的基本开发指南: ### 1. 准备工作 - **注册成为开发者**:确保你已经在支付宝开放平台注册账号,并完成了实名认证。 - **创建小程序**:如果你还没有创建小程序,请先在支付宝开放平台创建你的小程序项目。 - **了解信用服务文档**:访问支付宝开放平台的官方文档,获取最新的信用服务API说明和技术指南。 ### 2. 申请信用服务权限 - 登录到[支付宝开放平台](https://open.alipay.com/)。 - 进入“应用管理”页面,选择对应的小程序- 在“功能列表”中查找信用服务相关功能(如信用租、信用借还等),提交相应的权限申请。 - 阅读并同意相关的协议条款,按照指引完成权限的开通。 ### 3. 配置信用服务 -信用服务被批准后,进入小程序的管理控制台。 - 找到信用服务配置选项,设置信用服务参数,例如押金金额、信用数门槛等。 - 根据业务需求,配置信用服务的具体规则和条件。 ### 4. 开发集成 - 使用支付宝提供的SDK和API进行开发,将信用服务集成到你的小程序中。 - 实现用户信用评估接口调用,根据用户的芝麻信用决定是否提供押金服务。 - 处理信用服务的结果反馈,包括成功或失败的情况,并向用户提供相应的提示信息。 ### 5. 测试与上线 - 在沙箱环境中测试信用服务的功能,确保所有流程正常运作。 - 完成测试后,在支付宝开放平台上提交审核请求。 - 一旦审核通过,就可以正式上线信用服务功能。 ### 示例代码 以下是一个简单的示例,展示如何使用支付宝提供的API来调用信用服务: ```javascript // 调用信用服务接口 my.http({ url: 'https://openapi.alipay.com/gateway.do?alipay信用服务API', method: 'POST', data: { // 参数根据具体API文档填写 biz_content: { user_id: '用户ID', credit_score: '信用数', // 其他必要的业务参数 }, // 其他公共参数 }, success: function(res) { // 成功处理逻辑 console.log('信用服务调用成功', res); }, fail: function(err) { // 失败处理逻辑 console.error('信用服务调用失败', err); } }); ``` 请注意,以上代码仅作为参考,实际开发时应参照最新的支付宝开放平台文档进行调整。 ### 注意事项 -开发过程中,请务必遵守支付宝开放平台的相关规定和安全要求。 - 对于涉及用户隐私的数据操作,必须获得用户的明确授权,并且仅限于合法合规的目的。 - 定期检查信用服务的表现,根据实际情况优化信用评估模型和服务策略。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值