支付宝周期扣款Java逻辑代码
public static void main(String[] args){/** 初始化 **/CertAlipayRequest certAlipayRequest = new CertAlipayRequest();/** 支付宝网关 **/certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");/
·
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());
}
更多推荐
已为社区贡献1条内容
所有评论(0)