支付宝商户代扣2.0集成方案_服务器端_yi

我现在工作的公司的主打产品是一款叫“乐秀”的视频剪辑编辑工具APP,产品可免费试用,如果付费购买会员的话,可以解锁更多的素材和功能。

原来的会员是买断的,买过一次即永久会员了。现在公司做了改变,会员机制改为类似腾讯视频会员这种包月的,还要支持微信支付宝代扣。其中支付宝代扣这部分的服务器端开发任务分配给了我。

支付宝商户代扣开发平台文档:https://docs.alipay.com/pre-open/20170601105911096277/cmgtz2

本文不会详细写下全部的开发流程,只对开发过程中比较关键的点作记录。

目前我了解到的支付宝代扣方式应该是两种,第一种是支付前签约,免密支付应该使用的是这种签约方式,用户可以先享受服务,后付款,相关业务比如上海地铁的先乘后付。

第二种是支付后签约,先付费后享受服务,我们平常在APP中看到的包月应该就是采用这种签约方式。

我们的代扣采用第二种签约方式。

调用支付宝的第一个接口是-alipay.trade.page.pay(统一收单下单并支付页面接口)。部分参数设置如下:

AlipayTradePagePayRequest alipayTradePagePayRequest = new AlipayTradePagePayRequest();
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
AgreementSignParams agreementSignParams = new AgreementSignParams();

agreementSignParams.setPersonalProductCode("GENERAL_WITHHOLDING_P");//固定值
model.setProductCode("GENERAL_WITHHOLDING");
model.setAgreementSignParams(agreementSignParams);

alipayTradePagePayRequest.setBizModel(model);
alipayTradePagePayRequest.setReturnUrl(reqPara.get("returnUrl"));
alipayTradePagePayRequest.setNotifyUrl(MyConfigurer.getEvn("alipay.notifyUrl"));
alipayTradePagePayResponse = alipayClient.pageExecute(alipayTradePagePayRequest,"get");
orderString = alipayTradePagePayResponse.getBody();// 就是orderString,可以直接给客户端请求,无需再做处理。
orderString = URLEncoder.encode(orderString, "UTF-8");

这里有几个点需要注意:

  • personal_product_code传入的值为固定值GENERAL_WITHHOLDING_P
  • sign_scene传入的值为固定值DEFAULT|DEFAULT
  • return_url传入的值为APP端的scheme地址,供支付宝在用户支付完成后调用回到APP内指定页面。比如支付宝内淘宝页地址:taobao://
  • notify_url传入的值为接受支付宝异步通知的URL,该URL要求可被外部访问
  • 接口调用方式为pageExecute(request,"get")
扫描二维码关注公众号,回复: 5574731 查看本文章

未完待续……

猜你喜欢

转载自www.cnblogs.com/wangchaoBlog/p/10552343.html
今日推荐