连续包月-周期扣款-自动续费名字很多, 先简单解释这三个的意思:
周期扣款有两种模式:
SDK
生成签名串(值的注意的https://github.com/go-pay/gopay 2023-01-01
合并https://github.com/go-pay/gopay/pull/295) SDK
虽然包含了client.UserAgreementPageSign()
方法, 但是这个方法实际上会请求支付宝返回一个H5
页面唤醒签约页面(但是这个只能给前端使用)APP
签约,我们不能请求支付宝, 必须本地签名 (这里很坑, 支付宝API
文档没写,需要在接入指南查看)SDK
的代码示例如下(如果是PHP
,Java
,Node
可以直接用官方SDK
)AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
AlipayUserAgreementPageSignRequest request = new AlipayUserAgreementPageSignRequest();
request.setBizContent(参考上面的bizContent值);
//无线端唤起签约
//pageExecute get方式,生成url
AlipayUserAgreementPageSignResponse response = alipayClient.pageExecute(request,"get");
//生成的url地址去除http://openapi.alipay.com/gateway.do
signParams = response.replace("http://openapi.alipay.com/gateway.do?","");
//生成唤起客户端。把signParams使用 UTF-8 字符集整体做一次 encode
return 'alipays://platformapi/startapp?appId=60000157&appClearTop=false&startMultApp=YES&sign_params='+ encode(signParams)
Go
, 所以使用这个包 https://github.com/go-pay/gopayV3
是还不支持周期扣款的, 所以我们需要用V2
id, no(订单号), tarde_no(商户订单号), user_id(用户), goods_id(商品), contract_code(自定义签约号), contract_id(商户签约号)
contract_code
contract_code
当做商户签约号参数生成唤醒签约页面链接签名no
和支付宝唤醒签约页面链接给客户端, 客户端唤醒支付宝签约页面contract_code
和contract_id
返回给我们(插入签约表)contract_code
查找到订单, 然后调用支付接口alipay.trade.pay(同步调用),实时获取是否扣费成功no
调用服务端, 如果订单未支付, 服务端再去主动扣款一次15
号签约, 那么应该13
号发起扣款, 14
号是微信扣款等待期, 15
号微信下发扣款通知(成功还是失败)15
号签约, 那么可以10
号发起扣款扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有