支付宝周期扣款Java逻辑代码

Posted 黄毛火烧雪下

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支付宝周期扣款Java逻辑代码相关的知识,希望对你有一定的参考价值。

public static void main(String[] args)  
         /** 初始化 **/
        CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
    
        /** 支付宝网关 **/
        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
    
        /** 应用id,如何获取请参考:https://opensupport.alipay.com/support/helpcenter/190/201602493024 **/
        certAlipayRequest.setAppId("");
    
        /** 应用私钥, 如何获取请参考:https://opensupport.alipay.com/support/helpcenter/207/201602471154?ant_source=antsupport  **/
        certAlipayRequest.setPrivateKey("");
        
        /** 应用公钥证书路径,下载后保存位置的绝对路径  **/
        certAlipayRequest.setCertPath("");
    
        /** 支付宝公钥证书路径,下载后保存位置的绝对路径 **/
        certAlipayRequest.setAlipayPublicCertPath("");
    
        /** 支付宝根证书路径,下载后保存位置的绝对路径 **/
        certAlipayRequest.setRootCertPath("");
    
        /** 设置签名类型 **/
        certAlipayRequest.setSignType("RSA2");
    
        /** 设置请求格式,固定值json **/
        certAlipayRequest.setFormat("json");
    
        /** 设置编码格式 **/
        certAlipayRequest.setCharset("UTF-8");
    
        AlipayClient alipayClient = null;
        try 
            alipayClient = new DefaultAlipayClient(certAlipayRequest);
         catch (AlipayApiException e1) 
            e1.printStackTrace();
        
        /** 实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.user.agreement.page.sign(支付宝个人协议页面签约接口)**/
        AlipayUserAgreementPageSignRequest request = new AlipayUserAgreementPageSignRequest();
    
        /** 设置业务参数 **/
		AlipayUserAgreementPageSignModel model = new AlipayUserAgreementPageSignModel();
    
        /** 个人签约产品码,周期扣款固定值:CYCLE_PAY_AUTH_P **/
		model.setPersonalProductCode("CYCLE_PAY_AUTH_P");
    
        /** 销售产品码,周期扣款固定值:CYCLE_PAY_AUTH **/
		model.setProductCode("CYCLE_PAY_AUTH");
    
        /** 代扣协议中标示用户的唯一签约号,确保在商户系统中唯一 **/
		model.setExternalAgreementNo("20150320010101001");
    
        /** 协议签约场景,根据商户签约场景自行选择相同或者相近的行业,参考:https://opendocs.alipay.com/open/20190319114403226822/signscene\\ **/
		model.setSignScene("INDUSTRY|CARRENTAL");
		
		AccessParams accessParams = new AccessParams();
                           
        /** 签约方式,建议入参 ALIPAYAPP(钱包h5页面签约) **/
		accessParams.setChannel("ALIPAYAPP");
                                              
		model.setAccessParams(accessParams);
                           
        /** 当前用户签约请求的协议有效周期,支持单位:1、d();2、m() **/                       
		model.setSignValidityPeriod("2m");
		
        /** 周期管控参数 **/                       
		PeriodRuleParams periodRuleParams = new PeriodRuleParams();
                           
        /** 周期数 ,与period_type组合使用确定扣款周期,例如period_type为DAY,period=90,则扣款周期为90天。按天扣款下,扣款周期必须大于7天 **/                         
		periodRuleParams.setPeriod((long) 15);
                           
        /** 首次执行时间,格式为yyyy-MM-dd;按月周期扣款下,不能入参每月28号之后的日期,不包含28**/                        
		periodRuleParams.setExecuteTime("2020-06-15");
                           
        /** 周期类型,支持单位:1、DAY(扣款周期按天计);2、MONTH(扣款周期按自然月) **/                       
		periodRuleParams.setPeriodType("DAY");
                           
        /** 单次扣款最大金额,商户每次发起扣款都不允许大于此金额 **/                      
		periodRuleParams.setSingleAmount("10.99");
                           
        /** 总金额限制,商户多次扣款的累计金额不允许超过此金额。 **/                        
		periodRuleParams.setTotalAmount("600");
                           
        /** 总扣款次数,商户成功扣款的次数不能超过此次数限制(扣款失败不计入) **/                        
		periodRuleParams.setTotalPayments((long) 12);
                                               
		model.setPeriodRuleParams(periodRuleParams);
		
		request.setBizModel(model);
                           
        /** 异步通知地址,以http或者https开头的,商户外网可以post访问的异步地址,用于接收支付宝返回的支付结果,如果未收到该通知可参考该文档进行确认:https://opensupport.alipay.com/support/helpcenter/193/201602475759 **/
        request.setNotifyUrl("");
    
        /** 签约完成的跳转地址,用于用户视觉感知支付已成功,传值外网可以访问的地址,如果同步未跳转可参考该文档进行确认:https://opensupport.alipay.com/support/helpcenter/193/201602474937**/                   
        request.setReturnUrl("");

        AlipayUserAgreementPageSignResponse response = null;
		try 
            
            /** 生成签约请求字符串,需拼接之后去唤起签约界面,详见:https://opendocs.alipay.com/open/20190319114403226822/apidetail#%E9%80%9A%E8%BF%87app%E5%94%A4%E8%B5%B7%E6%94%AF%E4%BB%98%E5%AE%9D%E9%92%B1%E5%8C%85%E7%9A%84%E7%AD%BE%E7%BA%A6%E9%A1%B5%E9%9D%A2  **/ 
			response = alipayClient.sdkExecute(request);
		 catch (AlipayApiException e) 
			e.printStackTrace();
		
        //获取接口调用结果,如果调用失败,可根据返回错误信息到该文档寻找排查方案:https://opensupport.alipay.com/support/helpcenter/109
		System.out.println(response.getBody());

以上是关于支付宝周期扣款Java逻辑代码的主要内容,如果未能解决你的问题,请参考以下文章

支付宝周期扣款

如何关闭mycat花呐自动扣款

宝付提醒:被自动扣款只因你忽视了它

支付宝 - 支付宝怎么解除自动续费?

损失37亿!Intel将彻底退出傲腾存储业务;支付宝新增一键取消「自动扣款」功能;iOS 15.5验证通道关闭|极客头条

轻轻一扫,立刻扣款,付款码背后的原理你不想知道吗?