目录

一、调用APP支付接口,拉起支付宝,支付并签约页面

二、业务流程图

三、心声


一、调用APP支付接口,拉起支付宝,支付并签约页面

1、业务代码如下:

public AlipayTradeAppPayResponse payAndSignScene(AliPayBo bo) {try {log.info("------------------------开始初始化AliPay入参,订单号【{}】",bo.getOutTradeNo());// 也可以调用batchOptional扩展方法,批量设置可选业务参数(biz_content下的可选字段)Map<String, Object> optionalArgs = new HashMap<>();//该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d,该参数数值不接受小数点,如 1.5h,可转换为 90m。optionalArgs.put("timeout_express", "30m");//订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]optionalArgs.put("total_amount", bo.getTotalAmount());//周期扣款销售产品码固定为CYCLE_PAY_AUTH。optionalArgs.put("product_code", "CYCLE_PAY_AUTH");//交易标题optionalArgs.put("subject",bo.getSubject());//商户网站唯一订单号optionalArgs.put("out_trade_no",bo.getOutTradeNo());//---------------------------------------------设置签约参数:start-----------------------------Map<String, Object> signParams = new HashMap<>();//周期扣款个人签约产品码固定为CYCLE_PAY_AUTH_PsignParams.put("personal_product_code","CYCLE_PAY_AUTH_P");//协议签约场景,参见下文sign_scene参数说明  INDUSTRY|EDU教育行业 TODOsignParams.put("sign_scene", AliPayConstant.SIGN_SCENE);// 商户签约号,代扣协议中标示用户的唯一签约号(确保在商户系统中唯一) TODOsignParams.put("external_agreement_no",bo.getExternalAgreementNo());/**请按当前接入的方式进行填充,且输入值必须为文档中的参数取值范围,* 1. ALIPAYAPP (钱包h5页面签约)* 2. QRCODE(扫码签约)* 3. QRCODEORSMS(扫码签约或者短信签约)*/Map<String, Object> accessParams = new HashMap<>();accessParams.put("channel","ALIPAYAPP");signParams.put("access_params",accessParams);/**周期管控规则参数period_rule_params,在签约周期扣款产品(如CYCLE_PAY_AUTH_P)时必传,在签约其他产品时无需传入。周期扣款产品,会按照这里传入的参数提示用户,并对发起扣款的时间、金额、次数等做相应限制 */Map<String, Object> periodRuleParams = new HashMap<>();//周期类型period_type是周期扣款产品必填,枚举值为DAY和MONTHperiodRuleParams.put("period_type","DAY");//30天为一个扣款周期periodRuleParams.put("period","30");/**首次执行时间execute_time是周期扣款产品必填,即商户发起首次扣款的时间。精确到日,格式为yyyy-MM-dd结合其他必填的扣款周期参数,会确定商户以后的扣款计划。发起扣款的时间需符合这里的扣款计划首次扣款日期:当前时间+30  ; 目前允许商户在约定日期之前5天(不含扣款日当天)开始扣款*/periodRuleParams.put("execute_time", bo.getExecuteTime());/**单次扣款最大金额single_amount是周期扣款产品必填,即每次发起扣款时限制的最大金额,单位为元。商户每次发起扣款都不允许大于此金额*/periodRuleParams.put("single_amount",bo.getSingleAmount());signParams.put("period_rule_params",periodRuleParams);//签约成功后商户用于接收异步通知的地址:如果不传入,签约与支付的异步通知都会发到外层notify_url参数传入的地址;TODO//signParams.put("sign_notify_url","");//签约参数。如果希望在sdk中支付并签约,需要在这里传入签约信息。周期扣款场景 product_code 为 CYCLE_PAY_AUTH 时必填optionalArgs.put("agreement_sign_params",signParams);//---------------------------------------------设置签约参数:end-----------------------------log.info("------------------------完成初始化AliPay入参,订单号【{}】,参数为【{}】",bo.getOutTradeNo(), JSONUtil.toJsonStr(optionalArgs));Long startTime = System.currentTimeMillis();log.info("------------------------开始-调用AliPay easySDK 执行同步支付异步签约,订单号【{}】",bo.getOutTradeNo());//1完成同步支付与异步签约,通过异步通知或者查询接口确认签约结果AlipayTradeAppPayResponse payResponse = Factory.Payment.App().batchOptional(optionalArgs).pay(bo.getSubject(),bo.getOutTradeNo(),bo.getTotalAmount());Long endTime = System.currentTimeMillis();log.info("------------------------完成-调用AliPay easySDK 执行同步支付异步签约,订单号【{}】,用时{}毫秒",bo.getOutTradeNo(),(endTime-startTime));if (ResponseChecker.success(payResponse)) {return payResponse;}} catch (Exception e) {e.printStackTrace();}return null;}

2、使用的是APP支付统一接口,只是入参多了签约的相关协议

二、业务流程图

1、

2、关于生成预支付订单的,和后续支付结果查询,处理后续业务代码就根据个人业务场景处理,

3、我没有使用支付宝的异步通知的参数:notice_url ,都是使用定时任务根据业务表,代用支付宝官方接口来控制后续的逻辑,这点看个人选择了

三、心声

1、由于之前没做过支付宝周期扣款的业务,公司也没有人会,全靠个人看官网,频繁的咨询官方技术支持,不停的踩坑,总算把第一版的功能实现了,后续功能有优化的话,在补充文章

2、到此,支付宝支付相关的文章到此结束了,希望可以帮助刚入坑的同学们!

支付宝支付(五):周期扣款-支付后签约场景相关推荐

  1. 支付宝周期扣款(支付后签约)业务功能总结(php+golang)

    文档 周期扣款支付后签约场景文档:https://opendocs.alipay.com/open/041bxs 业务流程 1.处理签约成功回调,添加到订阅表 2.定时任务自行请求订阅表,把达到扣款日 ...

  2. 支付宝小程序唤起签约并支付(周期扣款)

    目录 获取支付参数拼接成的字符串 支付宝小程序内唤起签约并支付页面 获取支付参数拼接成的字符串 调用alipay.trade.app.pay接口,获取orderStr,具体参数如下: 公共请求参数 参 ...

  3. 连续支付(周期扣款)功能开发及注意事项

    最近有一个版本需求,需要接入周期扣款做连续会员的功能,没想到这一做就是小半个月,趟了很多坑,所以觉得有必要记录一下 1.周期扣款总体设计 在支付宝和微信中(非苹果支付),周期扣款的流程主要有以下两种, ...

  4. 支付宝支付(四):周期扣款-先签约后代扣场景

    目录 一.调用支付宝主动签约接口 二.参数说明 三.查询签约结果接口 四.签约成功,根据签约协议号,发起主动扣款 五.查询扣款结果接口 六.变更签约用户,下次扣款日期 七.取消签约协议接口 一.调用支 ...

  5. 支付宝当面付扫码支付支付后不回调_科普:支付宝刷脸支付流程介绍

    九啸科技报 支付宝刷脸付是基于人工智能.生物识别.3D传感.大数据风控技术,最新实现的新型支付方式.用户在无需打开手机的情况下,凭借"刷脸"完成支付.刷脸付的使用,有效提升用户的消 ...

  6. 支付宝当面付扫码支付支付后不回调_个人也可以申请支付宝当面付,费率0.38-无需营业执照,个体户0.3...

    个人也可以申请支付宝当面付啦,费率0.38%-支付信用卡和花呗付款,无需营业执照.如果有个体户营业执照的,费率甚至可以低至0.3%.T0实时到账开通当面付产品的支付宝账户余额中,随时可以发起提现到银行 ...

  7. 支付宝当面付扫码支付支付后不回调_码云上不错的几个支付相关的项目

    阅读文本大概需要15分钟. 网上支付相关的额业务场景无处不在,如果能掌握支付相关的核心技术,对于升职涨薪有莫大的好处.目前国内支付以支付宝和微信这两种支付为首,其他支付则可以忽略不计.有些网友以这两种 ...

  8. 支付宝手机网站支付,app支付,PC端支付流程以及服务端php支付下单,回调流程详解

    一.支付宝支付相关文档地址: 支付宝支付相关的文档地址:https://open.alipay.com/api 电脑网站支付:https://opendocs.alipay.com/open/270/ ...

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

    public static void main(String[] args) {/** 初始化 **/CertAlipayRequest certAlipayRequest = new CertAli ...

最新文章

  1. php正则截取富文本编辑器中路径字符串_php使用正则表达式获取字符串中的URL
  2. win7 mysql8.0.11安装教程_Win7系统安装 MySQL 8.0.11
  3. python解析mht文件_php解析mht文件转换成html的方法
  4. log算子dog算子
  5. oracle获取当前日期的前一天,判断两个日期是否相等
  6. Homebrew替换源
  7. git reflog and checkout
  8. Android Input子系统-含实例源码
  9. java apktoo_apktool.jar
  10. matlab的m函数入门2
  11. nslookup查询结果详解
  12. websocket 发送图片_Netty(四)实现WebSocket
  13. c语言木马源代码下载,木马编程 之超强服务... 附代码 原创.
  14. 51nod1298--圆与三角形
  15. 【Spring Boot】RestTemplate使用总结
  16. 给tftp服务器传文件,袖针文件传输服务器Tftpd32
  17. 在HMM中,如果已知观察序列和产生观察序列的状态序列,那么可用以下哪种方法直接进行参数估计
  18. [微服务]API 路由管理--Gateway网关
  19. 苹果 CEO 库克“喜当爹”,女子为其孕育双胞胎,索赔31.6亿分手费!
  20. 《R语言数据挖掘》读书笔记:三、分类

热门文章

  1. Dialupass v3.20 汉化绿色版 显示查看拨号上网密码
  2. 解决Vagrant启动虚拟机内存爆满
  3. 坦克大战java源码
  4. 人若无名便可专心练剑,物若无名便可随意取舍
  5. Java编程思想读书笔记——多态
  6. zabbix监控域名到期时间
  7. 微信公众号前端开发,学习路线图必不可少
  8. 今天给没用过Git的新人简单培训了一下
  9. CF891E Lust(推式子,EGF)
  10. c语言求sin x近似值,用泰勒公式求sin(x)的近似值