• 支付宝小程序唤起签约并支付(周期扣款)


    目录

    获取支付参数拼接成的字符串

    支付宝小程序内唤起签约并支付页面


    获取支付参数拼接成的字符串

    调用alipay.trade.app.pay接口,获取orderStr,具体参数如下:

    公共请求参数

    参数类型是否必填最大长度描述示例值
    app_idString32支付宝分配给开发者的应用ID2014072300007148
    methodString128接口名称alipay.trade.app.pay
    formatString40仅支持JSONJSON
    charsetString10请求使用的编码格式,如utf-8,gbk,gb2312等utf-8
    sign_typeString10商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2RSA2
    signString344商户请求参数的签名串,详见签名详见示例
    timestampString19发送请求的时间,格式"yyyy-MM-dd HH:mm:ss"2014-07-24 03:07:50
    versionString3调用的接口版本,固定为:1.01.0
    notify_urlString256支付宝服务器主动通知商户服务器里指定的页面http/https路径。http://api.test.alipay.net/atinterface/receive_notify.htm
    app_auth_tokenString40详见应用授权概述
    biz_contentString请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档

    请求参数

    参数必填描述示例值
    out_trade_no必选商户订单号。
    由商家自定义,64个字符以内,仅支持字母、数字、下划线且需保证在商户端不重复。
    70501111111S001111119
    total_amount必选订单总金额。
    单位为元,精确到小数点后两位,取值范围:[0.01,100000000] 。
    9.00
    subject必选订单标题。
    注意:不可使用特殊字符,如 /,=,& 等。
    大乐透
    product_code可选产品码。
    商家和支付宝签约的产品码。 枚举值(点击查看签约情况):
    QUICK_MSECURITY_PAY:无线快捷支付产品;
    CYCLE_PAY_AUTH:周期扣款产品。
    默认值为QUICK_MSECURITY_PAY。
    CYCLE_PAY_AUTH
    body可选订单附加信息。
    如果请求时传递了该参数,将在异步通知、对账单中原样返回,同时会在商户和用户的pc账单详情中作为交易描述展示
    Iphone6 16G
    time_expire可选订单绝对超时时间。
    格式为yyyy-MM-dd HH:mm:ss。
    注:time_expire和timeout_express两者只需传入一个或者都不传,如果两者都传,优先使用time_expire。
    2016-12-31 10:05:00
    agreement_sign_params可选签约参数。如果希望在sdk中支付并签约,需要在这里传入签约信息。
    周期扣款场景 product_code 为 CYCLE_PAY_AUTH 时必填。
    └personal_product_code必填个人签约产品码,商户和支付宝签约时确定。CYCLE_PAY_AUTH_P
    └sign_scene必填协议签约场景,商户和支付宝签约时确定,商户可咨询技术支持。INDUSTRY|DIGITAL_MEDIA
    └external_agreement_no可选商户签约号,代扣协议中标示用户的唯一签约号(确保在商户系统中唯一)。 格式规则:支持大写小写字母和数字,最长32位。 商户系统按需传入,如果同一用户在同一产品码、同一签约场景下,签订了多份代扣协议,那么需要指定并传入该值。test20190701
    └external_logon_id可选用户在商户网站的登录账号,用于在签约页面展示,如果为空,则不展示13852852877
    └access_params必填请按当前接入的方式进行填充,且输入值必须为文档中的参数取值范围。
    └channel必填目前支持以下值:
    1. ALIPAYAPP (钱包h5页面签约)
    2. QRCODE(扫码签约)
    3. QRCODEORSMS(扫码签约或者短信签约)
    ALIPAYAPP
    └sub_merchant可选此参数用于传递子商户信息,无特殊需求时不用关注。目前商户代扣、海外代扣、淘旅行信用住产品支持传入该参数(在销售方案中“是否允许自定义子商户信息”需要选是)。
    └sub_merchant_id可选子商户的商户id2088123412341234
    └sub_merchant_name可选子商户的商户名称滴滴出行
    └sub_merchant_service_name可选子商户的服务名称滴滴出行免密支付
    └sub_merchant_service_description可选子商户的服务描述免密付车费,单次最高500
    └period_rule_params可选周期管控规则参数period_rule_params,在签约周期扣款产品(如CYCLE_PAY_AUTH_P)时必传,在签约其他产品时无需传入。 周期扣款产品,会按照这里传入的参数提示用户,并对发起扣款的时间、金额、次数等做相应限制。
    └period_type必填周期类型period_type是周期扣款产品必填,枚举值为DAY和MONTH。
    DAY即扣款周期按天计,MONTH代表扣款周期按自然月。
    与另一参数period组合使用确定扣款周期,例如period_type为DAY,period=30,则扣款周期为30天;period_type为MONTH,period=3,则扣款周期为3个自然月。
    自然月是指,不论这个月有多少天,周期都计算到月份中的同一日期。例如1月3日到2月3日为一个自然月,1月3日到4月3日为三个自然月。注意周期类型使用MONTH的时候,计划扣款时间execute_time不允许传28日之后的日期(可以传28日),以此避免有些月份可能不存在对应日期的情况。
    DAY
    └period必填周期数period是周期扣款产品必填。与另一参数period_type组合使用确定扣款周期,例如period_type为DAY,period=90,则扣款周期为90天。3
    └execute_time必填首次执行时间execute_time是周期扣款产品必填,即商户发起首次扣款的时间。精确到日,格式为yyyy-MM-dd
    结合其他必填的扣款周期参数,会确定商户以后的扣款计划。发起扣款的时间需符合这里的扣款计划。
    2019-01-23
    └single_amount必填单次扣款最大金额single_amount是周期扣款产品必填,即每次发起扣款时限制的最大金额,单位为元。商户每次发起扣款都不允许大于此金额。10.99
    └total_amount可选总金额限制,单位为元。如果传入此参数,商户多次扣款的累计金额不允许超过此金额。600
    └total_payments可选总扣款次数。如果传入此参数,则商户成功扣款的次数不能超过此次数限制(扣款失败不计入)。12
    └sign_notify_url可选签约成功后商户用于接收异步通知的地址。如果不传入,签约与支付的异步通知都会发到外层notify_url参数传入的地址;如果外层也未传入,签约与支付的异步通知都会发到商户appid配置的网关地址。http://www.merchant.com/receiveSignNotify
    1. function getOrderStr() {
    2. $orderList = array(
    3. 'alipay_sdk' => 'alipay-sdk-PHP-4.11.14.ALL',
    4. 'app_id' => '2014072300007148',
    5. 'biz_content' => '{"out_trade_no":"20210817010101004","total_amount":0.01,"subject":"\u6d4b\u8bd5\u5546\u54c1","product_code":"CYCLE_PAY_AUTH","agreement_sign_params":{"external_logon_id":"F0_512333","personal_product_code":"CYCLE_PAY_AUTH_P","sign_scene":"INDUSTRY|APP","external_agreement_no":"F0_A_512333","access_params":{"channel":"ALIPAYAPP"},"period_rule_params":{"period_type":"DAY","period":"30","execute_time":"2021-11-01","single_amount":60,"total_amount":360,"total_payments":12}}}',
    6. 'charset' => 'utf-8',
    7. 'format' => 'json',
    8. 'method' => 'alipay.trade.app.pay',
    9. 'sign_type' => 'RSA2',
    10. 'timestamp' => '2021-11-01 20:39:23',
    11. 'version' => '1.0',
    12. 'sign' => 'Wp+BtMB1uepciIZa40iFI4Je5EV8nX/5VMzQGJTh/fX6nPTvaRH5lYii/v4GF46ZTcAHekiyMX1pJ9RhV+KrHKDLu+0WJTBIrXuS0w9wZYp12FRJgqvVivfK6svepxzequS68d8HUlCbyUwdU65yG5VFg5hufjk1xJwp7MlWalPyf8ciLUS5yRc84/J7ugb62sG8LuzG6s+ubIOOJ3aRNTKegPXUB5SRIrdp7DqjeFL8VnY+R8fPhlN4hVHcFc7aeZ2/L9K9N1IkcdRo1XHv9+68Q6twuE2OqpdKjaoCSzi2MecUYV6MNEuzRRE//69ORYicp0ndMEdANeKYJ2Lexw=='
    13. );
    14. $orderStr = "";
    15. foreach ($orderList as $key => $value) {
    16. $orderStr .= $key . '=' . urlencode($value) . '&';
    17. }
    18. $orderStr = substr($orderStr, 0, strlen($orderStr) - 1);
    19. echo json_encode(array('ret' => 'OK', 'data' => $orderStr));
    20. }

    支付宝小程序内唤起签约并支付页面

    调用my.tradePay API,使用上一步得到的orderStr作为参数,在支付宝小程序内唤起签约并支付页面。

    1. my.tradePay({
    2. orderStr: orderStr,
    3. success: (res) => {
    4. my.alert({
    5. title: 'success', // alert 框的标题
    6. content: JSON.stringify(res)
    7. });
    8. },
    9. fail: (res) => {
    10. my.alert({
    11. title: 'fail', // alert 框的标题
    12. content: JSON.stringify(res)
    13. });
    14. }
    15. });

  • 相关阅读:
    助力防疫,基于安防摄像头的人脸佩戴口罩检测
    【技术分享】堆叠交换机替换指导
    长链接概念
    DHP16P-10-05A/100T-BC、DHP16P-10-23A/35ET-BB电液比例式2级放大式方向控制阀放大器
    java springboot VUE美术外包平台系统前后端分离开发mysql数据库web结构java编程计算机网页源码maven项目
    Serverless实战 - 2分钟,教你用Serverless每天给女朋友自动发土味情话
    Hugo Barra对Apple Vision Pro 硬件和软件的详细评述
    【进阶玩法】策略+责任链+组合实现合同签章
    快速排序模拟实现
    《机器学习实战》学习笔记(十三)
  • 原文地址:https://blog.csdn.net/foradmin/article/details/125486300