[ALI-签约代扣] 小程序环境下的签约代扣

[ALI-签约代扣] 小程序环境下的签约代扣

最开始的应用场景是在H5页面,通过 scheme:alipays://platformapi/startApp?appId=60000157&orderStr= + orderStrParam 唤起支付宝付款并签约页面;
orderStrParam是服务端通过接口获取到的各个参数拼接而成,并通过URI的UTF-8的方式编码过

在这里插入图片描述

之后在小程序中嵌入了该H5网页,但是在唤起支付宝付款并签约页面提示了拒绝访问,通过查询文档发现提示在小程序中不允许使用scheme 的方式跳转到付款并签约的页面。

文档来回绕的已经不知道怎么解决了,咨询了相关技术人员,还是没理清楚

终于在经历了一点点盘查,终于找到了解决方案

首先,需要确认你要使用的是什么?先签约,后付款,还是付款并签约

这两者是不同的概念,因此调用的API也不相同

引入Ali 的jsapi

不论是哪种,都需要引入支付宝的jsapi

因为是H5的页面,因此需要判断引入该H5页面的是否是支付宝小程序环境,如果是才需要引入,否则无需执行该分支

<script>
    if ((navigator.userAgent.toLowerCase().indexOf('alipayclient') > -1) && (navigator.userAgent.toLowerCase().indexOf('miniprogram') > -1) ) {
        document.writeln('<script src="https://appx/web-view.min.js"' + '>' + '<' + '/' + 'script>');
    }
</script>

先签约,后付款 && 付款并签约的区别

先签约,后付款

这个是指当前只签约,并不付款,根据签约的内容,之后在指定的日期从你的账户扣除相应的款项,大部分签约的时候是不扣款的,只是方便以后实现周期性扣款

该情景调用以下方式

my.paySignCenter

付款并签约

这个是当下我要扣除一笔款项,并且以后也根据当前协议周期扣款,也就是所谓的同步扣款,异步签约

所以两者的本质区别就是此次签约的时候有没有付款

该情景调用以下方式

my.tradePay({
    orderStr: orderStrParam,
    success: (res) => {
	my.alert({
            title: 'Success', // alert框的标题
            	content: JSON.stringify(res),
        });
    },
    fail: (res) => {
        my.alert({
            title: 'Fail', // alert框的标题
            	content: JSON.stringify(res),
        });
    }
});

最开始的时候调用该方式,直接报错,交易失败什么的,还报了错误6001,在开发文档中查到说是用户取消操作,可是我没有取消啊…

在打印orderStrParam的时候发现有点看不懂,想是不是因为参数编码了的缘故,scheme的方式是需要编码的,但是该方法是不是不支持编码

let decodeParam=decodeURIComponent(orderStrParam)

解码后再次调用,发现正常调起付款并签约页面

如果在后续发现提示不支持jsapi,请注意是不是小程序的能力管理里是不是没有添加JSAPI 基础包 功能包导致

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三知之灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值