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


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

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

    在这里插入图片描述

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

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

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

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

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

    引入Ali 的jsapi

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

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

    
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    先签约,后付款

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

    该情景调用以下方式

    my.paySignCenter
    
    • 1

    付款并签约

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

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

    该情景调用以下方式

    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),
            });
        }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

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

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

    let decodeParam=decodeURIComponent(orderStrParam)
    
    • 1

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

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

  • 相关阅读:
    使用 webpack 打包 express 应用
    计算机毕设(附源码)JAVA-SSM基于框架的旅游订票系统
    最长异或路径 ---- (字典树求异或最大)
    【Ubuntu18.04】Livox Tele-15使用教程
    C++证明四方定理
    Python之requests实现github模拟登录
    【软件测试】软件测试的基础概念
    【Visual Leak Detector】QT 中 VLD 输出解析(二)
    SpringBoot-RabbitMQ
    lambda表达式的使用
  • 原文地址:https://blog.csdn.net/tjj3027/article/details/124842198