目录
一、调用支付宝主动签约接口
1、该接口返回的字符串,由前端生成二维I码后,可使用支付宝直接扫码,打开签约页面
public String aliPayPageSign(AliPayBo bo) {
AlipayClient alipayClient = oldAliPayConfig.initAliPayClient();
AlipayUserAgreementPageSignRequest request = new AlipayUserAgreementPageSignRequest();
Map<String, Object> optionalArgs = new HashMap<>();
//周期扣款销售产品码固定为CYCLE_PAY_AUTH。
optionalArgs.put("product_code", "CYCLE_PAY_AUTH");
//周期扣款个人签约产品码固定为CYCLE_PAY_AUTH_P
optionalArgs.put("personal_product_code","CYCLE_PAY_AUTH_P");
//协议签约场景,参见下文sign_scene参数说明 INDUSTRY|EDU教育行业
optionalArgs.put("sign_scene", AliPayConstant.SIGN_SCENE);
// 商户签约号,代扣协议中标示用户的唯一签约号(确保在商户系统中唯一
optionalArgs.put("external_agreement_no",bo.getExternalAgreementNo());
/**请按当前接入的方式进行填充,且输入值必须为文档中的参数取值范围,
* 1. ALIPAYAPP (钱包h5页面签约)
* 2. QRCODE(扫码签约)
* 3. QRCODEORSMS(扫码签约或者短信签约)*/
Map<String, Object> accessParams = new HashMap<>();
accessParams.put("channel","ALIPAYAPP");
optionalArgs.put("access_params",accessParams);
/**周期管控规则参数period_rule_params,在签约周期扣款产品(如CYCLE_PAY_AUTH_P)时必传,在签约其他产品时无需传入。
周期扣款产品,会按照这里传入的参数提示用户,并对发起扣款的时间、金额、次数等做相应限制 */
Map<String, Object> periodRuleParams = new HashMap<>();
//周期类型period_type是周期扣款产品必填,枚举值为DAY和MONTH
periodRuleParams.put("period_type","DAY");
//30天为一个扣款周期
periodRuleParams.put("period","30");
/**首次执行时间execute_time是周期扣款产品必填,即商户发起首次扣款的时间。精确到日,格式为yyyy-MM-dd
结合其他必填的扣款周期参数,会确定商户以后的扣款计划。发起扣款的时间需符合这里的扣款计划
首次扣款日期:当前时间+30 ; 目前允许商户在约定日期之前5天(不含扣款日当天)开始扣款
*/
periodRuleParams.put("execute_time", DateUtils.dateToStr(new Date()));
/**单次扣款最大金额single_amount是周期扣款产品必填,即每次发起扣款时限制的最大金额,单位为元。商户每次发起扣款都不允许大于此金额*/
periodRuleParams.put("single_amount",bo.getSingleAmount());
optionalArgs.put("period_rule_params",periodRuleParams);
//签约参数。如果希望在sdk中支付并签约,需要在这里传入签约信息。周期扣款场景 product_code 为 CYCLE_PAY_AUTH 时必填
String requestJson = JSONUtil.toJsonStr(optionalArgs);
log.info("用户{}:发起周期扣款签约请求,入参:{}",bo.getExternalAgreementNo(),requestJson);
request.setBizContent(requestJson);
AlipayUserAgreementPageSignResponse response;
try {
response = alipayClient.pageExecute(request,"get");
if(response.isSuccess()){
log.info("用户{}:周期扣款,发起签约成功",bo.getExternalAgreementNo());
//获取需提交的form表单
return response.getBody();
}
log.in

本文详细介绍了如何通过支付宝主动签约接口进行周期扣款,包括参数说明、签约结果查询、扣款操作和协议变更,以及解约流程。涉及的技术场景包括教育行业,适合开发者理解和实现先签约后扣费的业务逻辑。
最低0.47元/天 解锁文章
8540

被折叠的 条评论
为什么被折叠?



