支付宝-周期支付

支付中签约


一、支付后签约流程图

在这里插入图片描述

二、示例代码

			
			AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", "you are appid",
				"private key", "json", "utf-8", "public key", "RSA2");
				//验签请求request
			AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
			//封装参数
			Map<String, String> keyValues = new HashMap<String, String>();
			keyValues.put("app_id", "you are appid");
			JSONObject jsonObject = new JSONObject();
			//商品参数
			jsonObject.put("total_amount","100");//商品价格
			jsonObject.put("product_code","CYCLE_PAY_AUTH");//周期扣款产品码,固定值
			jsonObject.put("body","body");//商品body
			jsonObject.put("subject","subject");//商品subject
			jsonObject.put("out_trade_no","202201020102121");//商户订单号,保证唯一
			jsonObject.put("goods_type","0");//商品类型
			JSONObject agreementSignParams = new JSONObject();
			//周期扣款管控参数
			agreementSignParams.put("personal_product_code","CYCLE_PAY_AUTH_P");//固定值
			agreementSignParams.put("sign_scene","INDUSTRY|APPSTORE");//场景值
			agreementSignParams.put("external_agreement_no","221138193812831");//商户签约协议编号,保证唯一!
			agreementSignParams.put("sign_notify_url","sign_notify_url");//签约结果回调地址
			JSONObject accessParams = new JSONObject();
			accessParams.put("channel","ALIPAYAPP");//接入方式
			JSONObject periodRule = new JSONObject();
			//扣款周期参数
			periodRule.put("period","10");//扣款周期
			periodRule.put("period_type","DAY");//周期类型
			periodRule.put("single_amount","10.0");//扣款金额
			periodRule.put("execute_time","2022-03-29");//首次扣款时间
			agreementSignParams.put("period_rule_params",periodRule);
			agreementSignParams.put("access_params",accessParams);
			jsonObject.put("agreement_sign_params",agreementSignParams);
			keyValues.put("biz_content",jsonObject.toString());
			request.setBizContent(keyValues.get("biz_content"));
			request.setNotifyUrl("notify_url");//支付结果回调地址
			request.setApiVersion("1.0");//api版本
			//请求验签
			AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
			//获取唤起参数
			String body = response.getBody();
			

三、支付中签约常见问题

1.调用支付宝签名失败,报ISV 权限不足错误。
ISV 权限不足(isv.insufficient-isv-permissions)是指开发者在调用接口前,由于没有添加能力、签约或配置网关、密钥等关键信息,无相关接口的调用权限而导致的报错。
解决方案:详见:ISV权限不足解决方案

2.唤起支付宝界面失败,报系统繁忙。
一般情况下该问题原因为:支付宝验签失败
解决方案:
1.检查组装唤起支付宝页面参数是否正确
2.建议用支付宝生成签名的api,详见上方demo

3.支付成功但是签约失败
支付后签约场景分为支付业务参数和签约业务参数,该问题由于签约业务参数错误导致。
解决方案:
1.检查周期管控参数是否错误。
2.扣款周期类型period_type参数为DAY时,扣款周期period参数不得小于7。
3.具体可参考上方demo

总结

首次支付并签约所产生的问题大多都是请求参数有误,要注意周期相关参数的层级与格式。大家开发时可参考支付宝技术文档

### 支付宝小程序中使用 `uni-popup` 组件实现弹窗效果 在支付宝小程序环境中使用 `uni-popup` 组件时,需注意不同平台之间的差异性和兼容性问题。为了确保组件能够正常工作并提供良好的用户体验,建议按照以下方式进行配置: 对于遮罩层滚动穿透的问题,在 `uni-popup` 中可以通过设置自定义样式来解决这个问题。具体做法是在 `uni-popup` 标签上添加 `overlay-style` 属性,并赋予其 `'touch-action:none;'` 的值[^1]。 针对关闭过程中可能出现的内容闪烁现象,这通常是由于默认行为造成的。为了避免这种情况发生,可以在 CSS 文件里调整 `.uni-popup__wrapper-inner` 类的选择器,通过修改其中的动画时间或者显示模式等属性来进行优化[^2]。 考虑到跨框架使用的特殊需求,如果遇到 `ref` 不可用的情况,则应该考虑将涉及 DOM 操作的部分放置于生命周期钩子函数 `onReady()` 内部执行,从而保证视图渲染完成后再去操作对应的节点[^5]。 最后,为了让 `uni-popup` 更好地适应支付宝环境下的布局特性,可能还需要额外定制一些样式或结构上的改动,比如参照官方文档中的最佳实践或是借鉴其他成功的案例研究[^4]。 ```html <!-- 示例代码 --> <template> <view> <!-- 使用 uni-popup 并应用特定样式防止滚动穿透 --> <uni-popup :overlayStyle="{'touch-action': 'none'}"> <!-- 弹窗内容区 --> </uni-popup> </view> </template> <script> export default { onReady() { // 确保页面已加载再访问 refs this.$nextTick(() => { // 对应的操作逻辑... }); } } </script> ``` #### 注意事项 - 测试阶段务必覆盖多种设备型号及操作系统版本; - 关注最新版 SDK 更新日志,及时更新依赖库以获得更好的支持和服务;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值