用户与商户之前签约周期扣款协议,设定周期时间,是否是到期后系统自动扣款,将金额收款到商户账户呢?
解决方案
不是的,周期扣款在后续扣款时,需商户调用【alipay.trade.pay(统一收单交易支付接口)】进行扣款,不是无感知的系统自动扣款。
1、扣款时间
目前允许商户在约定日期之前3天开始扣款,如扣款时间2019-11-04,可从11-01到11-04调用扣款接口。
2、到账时间
接口调用扣款成功,钱包内就显示账单,支付成功。
如:周期要求为2019-11-04扣款,在11-01调用接口后,实际11-01已扣款成功,而不是等待到11-04才进行扣款。
接口调用是否扣款成功,根据【alipay.trade.query(统一收单线下交易查询)】返回的trade_status(交易状态)进行判断:TRADE_SUCCESS和TRADE_FINISHED都表示扣款成功。
3、扣款次数
在周期内第一次扣款成功,第二次扣款必须等下一个周期才可以扣款,否则同一个周期内扣款2次,第二次报错ACQ.CYCLE_PAY_DATE_NOT_MATCH(扣款日期不在签约时的允许范围之内)。
4、传参示例
参考【alipay.trade.pay(统一收单交易支付接口)】修改如下
(1)product_code:修改为CYCLE_PAY_AUTH 必填;
(2)添加agreement_params,在agreement_params添加二级参数agreement_no
(3)参考接口说明必传subject、out_trade_no、total_amount。
java示例:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2"); AlipayTradePayRequest request = new AlipayTradePayRequest(); //创建API对应的request类 request.setBizContent("{" + ""subject":"大乐透"," + ""out_trade_no":"70501111111S04181414881819"," + ""total_amount":"0.01"," + // 修改添加:product_code: CYCLE_PAY_AUTH 必填 ""product_code":"CYCLE_PAY_AUTH"," + ""agreement_params":{" + // 支付宝系统中用以唯一标识用户签约记录的编号(用户签约成功后的协议号 ) ""agreement_no":"20195830578877424886"" +
" }" + " }"); AlipayTradePayResponse response = alipayClient.execute(request); System.out.println(response.getBody()); try { } catch (Exception e) { e.printStackTrace(); } }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。