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());
}
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐