首页 > 分享 > 花芝代扣集成方案

花芝代扣集成方案

花芝代扣集成方案

花芝代扣集成方案

概述
花芝代扣目前只支持签约2.0,具体接口描述和使用场景,详见下表说明。
接口列表
签约相关

接口英文名

接口名称

使用场景

alipay.user.agreement.page.sign

支付宝个人协议页面签约接口

支持用户在支付宝页面完成支付宝代扣协议的签约,目前支持支付宝钱包H5页面签约、扫码签约等方式。
此接口并非直接调用的接口,需拼接跳转链接唤起,具体方式见下文“无线端唤起签约说明”

alipay.user.agreement.query

支付宝个人代扣协议查询接口

支付宝个人代扣协议查询接口,通过该接口可查询用户协议信息;

alipay.user.agreement.unsign

支付宝个人代扣协议解约接口

支付宝个人代扣协议解约接口,通过该接口可解除用户在约协议;

alipay.trade.app.pay

支付宝代扣支付并签约接口

商户难过过支付SDK调用该接口传入支付及签约参数完成支付并签约

单笔订单风险预评估

接口英文名

接口名称

使用场景

alipay.trade.advance.consult

订单咨询服务

商户通过该接口获取订单是否存在扣款失败风险以及风险评估等级。

支付相关

接口英文名

接口名称

使用场景

alipay.trade.pay

统一收单交易支付接口

用户在完成协议签约后,商户将用户签约协议号通过本接口送至支付宝完成代扣支付

alipay.trade.refund

统一收单交易退款接口

当交易发生之后一段时间内,卖家可以通过退款接口将支付款退还给买家,支付宝按照退款规则将支付款按原路退到买家帐号上。

alipay.trade.query

统一收单线下交易查询

该接口提供所有支付宝支付订单的查询,商户可以通过该接口主动查询订单状态,完成下一步的业务逻辑。

alipay.trade.cancel

统一收单交易撤销接口

支付交易返回失败或支付系统超时,调用该接口撤销交易。

alipay.trade.close

统一收单交易关闭接口

用于交易创建后,用户在一定时间内未进行支付,可调用该接口直接将未付款的交易进行关闭。

页面签约流程

页面签约流程.jpg

图片加载失败


协议查询流程

协议查询流程.jpg

图片加载失败


协议解约流程

协议解约流程.jpg

图片加载失败


单笔订单风险预评估流程

图片加载失败


代扣流程
同商户代扣

图片加载失败


快速接入
第一步:创建应用并获取APPID
要在您的应用中使用支付宝开放产品的接口能力,您需要先去蚂蚁金服开放平台(open.alipay.com 画板 ),在开发者中心中创建登记您的应用,并提交审核,审核通过后会为您生成应用唯一标识(APPID),并且可以申请开通开放产品使用权限,通过APPID您的应用才能调用开放产品的接口能力。需要详细了解开放平台创建应用步骤请参考《开放平台应用创建指南》。
第二步:配置密钥
开发者调用接口前需要先生成RSA密钥,RSA密钥包含应用私钥(APP_PRIVATE_KEY)、应用公钥(APP_PUBLIC_KEY)。生成密钥后在开放平台开发者中心进行密钥配置,配置完成后可以获取支付宝公钥(ALIPAY_PUBLIC_KEY)。详细步骤请参考《配置应用环境》。
第三步:搭建和配置开发环境
1.下载服务端SDK
为了帮助开发者调用开放接口,我们提供开放平台服务端SDK(https://isp.alipay.com/api/sdk.htm--SDK完整版),包含JAVA、PHP和.NET三语言版本,封装了签名&验签、HTTP接口请求等基础功能。请先下载对应语言版本的SDK并引入您的开发工程。
2.接口调用配置
在SDK调用前需要进行初始化,以JAVA代码为例:
关键参数说明:

配置参数

示例值解释

获取方式/示例值

URL

支付宝网关(固定)

https://openapi.alipay.com/gateway.do

APP_ID

APPID即创建应用后生成

获取见上面创建应用并获取APPID

APP_PRIVATE_KEY

开发者应用私钥,由开发者自己生成

获取见上面配置密钥

FORMAT

参数返回格式,只支持json

json(固定)

CHARSET

请求和签名使用的字符编码格式,支持GBK和UTF-8

开发者根据实际工程编码配置

ALIPAY_PUBLIC_KEY

支付宝公钥,由支付宝生成

获取详见上面配置密钥

SIGN_TYPE

商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2

RSA2

TIPS:ISV/开发者可以通过“第三方应用授权”得到商户授权令牌(app_auth_token)作为请求参数传入,实现代商户发起请求的能力;具体方法请参考第三方应用授权。如果sdk尚不支持此参数,则无法使用sdk,需要自己按规则拼接参数并加签。
接口使用场景介绍
先签约,后代扣场景
商户使用支付宝个人协议页面签约接口(alipay.user.agreement.page.sign)完成协议签约,个人协议解约(alipay.user.agreement.unsign)完成协议解约,个人协议查询(alipay.user.agreement.query)完成协议查询,统一收单交易支付(alipay.trade.pay),统一收单交易查询(alipay.trade.query)5个接口。除此之外,花芝代扣提供单笔订单风险预评估接口(alipay.trade.advance.consult),可在用户选择服务之后、统一收单交易支付之前咨询该接口获取风险评估情况,以做支付相关决策。
总体顺序:
a. 先签约,通过异步通知或者查询接口确认签约结果;
b. 通过单笔订单风险预评估能力评估订单风险(可选)
c. 通过收单交易支付结果完成代扣,可通过同步返回或支付成功异步通知或者交易查询接口查询交易结果;
d. 退款使用alipay.trade.refund接口;撤销使用alipay.trade.cancel接口;关闭交易订单使用alipay.trade.close接口;
e. 协议解约使用alipay.user.agreement.unsign接口;
支付后签约场景
商户使用APP支付接口,传入签约相关参数(alipay.trade.app.pay)完成同步支付和异步签约,注意:alipay.trade.app.pay接口用sdkExecute方法拿到orderStr入参APP支付/小程序/H5拉起收银台。步骤参考:预授权拉收银台。
个人协议解约(alipay.user.agreement.unsign)完成协议解约,个人协议查询(alipay.user.agreement.query)完成协议查询,统一收单交易支付(alipay.trade.pay),统一收单交易查询(alipay.trade.query)5个接口。
总体顺序:
a. 先调用支付后签约接口完成同步支付与异步签约,通过异步通知或者查询接口确认签约结果;
b. 通过单笔订单风险预评估能力评估订单风险(可选)
c. 通过收单交易支付结果完成代扣,可通过同步返回或支付成功异步通知或者交易查询接口查询交易结果;
d. 退款使用alipay.trade.refund接口;撤销使用alipay.trade.cancel接口;关闭交易订单使用alipay.trade.close接口;
e. 协议解约使用alipay.user.agreement.unsign接口;
备注:用户支持一对多,即同一个商户下,同一个用户可以有多套签约关系。通过商户外部签约号和场景参数来区分哪套协议。但要注意,如果签约时传入了签约号及场景参数,后续查询协议和解约时也必须传入。
注1:一般用户可以在支付并签约页面上选择支付时是否签约,用户不选签约就只是单纯的支付。如果商户希望页面上不允许用户选择(支付时必须签约),需要在销售方案中配置“免密支付开关是否允许用户自定义”这个属性。
注2:用户支持一对多,即同一个商户下,同一个用户可以有多套签约关系。通过商户外部签约号和场景参数来区分哪套协议。但要注意,如果签约时传入了签约号及场景参数,后续查询协议和解约时也必须传入。
接口详解
个人协议页面签约
1调用支付宝个人协议页面签约接口(alipay.user.agreement.page.sign);
2接入信息(access_params)设为{"channel":" ALIPAYAPP "};(钱包h5页面签约),另外包括QRCODE(扫码签约)和QRCODEORSMS(扫码签约或者短信签约)
3签约个人产品码(personal_product_code)设为GENERAL_WITHHOLDING_P(商户代扣产品码);(注:这个值只是举例,具体接入时确认)
4签约场景(sign_scene)设为INDUSTRY|CARRENTAL_HUAZHI(租车行业);(注:这个值只是举例,具体接入时确认)
5如需要设置外部签约号,则填入external_agreement_no中;
6如需要设置签约有效期,则填入sign_validity_period中;
7芝麻授权信息填入zm_auth_params中(包括buckle_app_id和buckle_merchant_id),商户签约芝麻合同的时候,与芝麻约定好;(花芝代扣暂不会用这类信息)
8如果商户已获得用户实名信息,需要与支付宝实名信息比对一致性,可以将用户实名信息填入identity_params中。建议不要使用姓名和身份证号这两个字段明文传输,而是将用户实名信息生成摘要字符串填入identity_params中的identity_hash,生成摘要方法见文末的“实名信息生成摘要”;注意此时如不需要再跳转实名授权,则merchant_process_url参数应不传。实名比对功能在特殊场景才会使用,如无需要不用关注,要使用需要先加白名单;
9外部登录号(external_logon_id),建议商户传入用户在商户的登录账号,会在页面签约首页展示;
10第三方主体类型(third_party_type),目前支持PARTNER和MERCHANT,默认PARTNER,目前有airbnb和老uber是MERCHANT类型(存在父子关系);
11跳转商户处理地址(merchant_process_url),如果需要在签约中跳转到商户页面做些处理(如获取用户实名信息),则将跳转商户处理地址填入merchant_process_url中。参数中有merchant_process_url则签约流程中会在上面“页面签约流程”图的步骤2.1跳转此地址并在处理完成后回跳继续流程,没有传这个参数则不跳转。此地址的页面需要商户实现,并使用前端jsapi的popWindow带参数回跳。目前只有地铁等少数场景在使用此参数,如无需要不用关注,要使用需要先加白名单。
12是否允许花芝GO降级(allow_huazhi_degrade),不传默认为false,即不降级。在传true的情况下,花芝GO可降级为普通代扣,会在用户不准入或者在对用户做意愿挽留的时候允许降级成普通代扣。说明:标准能力可降级转普通代扣,不允许降级的能力已下线。
13如果需要感知花芝代扣升级或者降级的信息,需要对接 花芝代扣升级 画板 异步通知能力 及 花芝代扣降级 画板 异步通知能力。如果不需要感知 则不需要对接。
个人协议查询
1调用支付宝个人协议查询接口(alipay.user.agreement.query),可以在解约及代扣前调用来核实确认签约信息;
2目前有两种查询方式:
●通过协议号查询,此时请求参数中填入协议号(agreement_no),其他业务参数均可不填;
●通过
personal_product_code+sign_scene+external_agreement_no+alipay_logon_id+alipay_user_id来查询,入参值按照商户调签约接口(alipay.user.agreement.page.sign)中的对应值传入;如果传入external_agreement_no,则alipay_logon_id与alipay_user_id可不传,否则alipay_logon_id与alipay_user_id必须传其中一个。
注:sign_scene按照签约时的值传入
个人协议解约
1调用支付宝个人协议解约接口(alipay.user.agreement.unsign);
2目前有两种解约方式:
○通过协议号查询,此时请求参数中填入协议号(agreement_no),其他业务参数均可不填;
○通过personal_product_code+sign_scene+external_agreement_no+alipay_logon_id+alipay_user_id来解约,入参值按照商户调签约接口(alipay.user.agreement.page.sign)中的对应值传入;如果传入external_agreement_no,则alipay_logon_id与alipay_user_id可不传,否则alipay_logon_id与alipay_user_id必须传其中一个;
3支付宝端解约入口可以在签合同时指定是否开启。如果不开启,则只能由商户端提供解约功能。如果开启支付宝端解约,则解约发送给商户的通知地址取openhome中的应用网关地址(2.0接口需商户在openhome中设置应用下的应用网关,若应用类型为生活号请参考文档 画板 第三步激活开发者模式;1.0接口在商户合同中设置),后续支付宝端解约时会发送异步通知给商户地址。否则在支付宝端解约将没有异步通知给到商户。通知的内容格式请参考个人协议解约接口(alipay.user.agreement.unsign)中的异步通知格式。
注:sign_scene按照签约时的值传入
单笔订单风险预评估接口
1调用支付宝单笔订单风险预评估接口(alipay.trade.advance.consult);
2订单咨询类型(consult_scene),指定 单笔订单风险预评估,传参 ORDER_RISK_EVALUATION
3花芝代扣协议号(agreement_no),在签约阶段返回的支付宝代扣协议号。需要保证其签约的是花芝代扣,否则会咨询失败。
4预评估订单金额(estimated_order_amount),提供一个订单的预估金额以便做到相对精确的风险评估,该参数必传。
5外部订单号(out_trade_no),在做订单风险预评估时,需提供一个评估时的外部订单号。可与真实订单的外部订单号不同。不做校验。
统一收单交易支付接口(代扣支付)
1商户服务端调用统一收单交易支付接口(alipay.trade.pay);
2订单业务类型(product_code)设为GENERAL_WITHHOLDING;
3签约时返回的协议号传入到协议信息(agreement_params)中;
4填入商户网站唯一的订单号out_trade_no;
5填入total_amount、subject;
6如果不填卖家seller_id,则默认为商户签约账号对应的支付宝用户ID;
7通常调用扣款请求后会直接返回成功或者失败原因,必须以收到的code为10000(SUCCESS)结果作为支付成功标示。也有可能会返回code为10003(ORDER_SUCESS_PAY_INPROCESS)支付等待中状态。遇到这种状态,等待一段时间(如5分钟),调用收单查询接口(alipay.trade.query)去查下支付结果;
8由于后台会轮询用户的多种支付渠道及多张银行卡,目前正常情况下扣款接口的耗时平均在2秒左右。
9扣款请求频率建议不要超过100tps,如果业务确有需要可以单独确认。
10签合同时可以配置支付额度,当超出时,需要用户进行短信确认。(此处请设置短信确认,新商户代扣不支持PC确认)

统一收单交易支付接口(代扣支付).png

图片加载失败


统一收单下单并支付页面接口(支付后签约)
1商户服务端调用统一收单下单并支付页面接口(alipay.trade.app.pay);
2订单业务类型(product_code)设为GENERAL_WITHHOLDING;
3填入签约协议参数(agreement_sign_params),具体模型中的参数可参考2.0接口文档;
4填入商户网站唯一的订单号out_trade_no;
5填入total_amount、subject;
6integration_type填入ALIAPP;
7request_from_url填入用户取消回跳商户的地址。
8是否允许花芝GO降级(allow_huazhi_degrade),不传默认为false,即不降级。在传true的情况下,花芝GO可降级为普通代扣,会在用户不准入或者在对用户做意愿挽留的时候允许降级成普通代扣。说明:标准能力可降级转普通代扣,不允许降级的能力已下线。
收单交易查询
1调用收单查询接口(alipay.trade.query);
2通过商户网站唯一订单号out_trade_no或支付宝交易号trade_no查询。
收单交易退款
1调用收单退款接口(alipay.trade.refund);
2通过商户网站唯一订单号out_trade_no或支付宝交易号trade_no进行退款;
3请求入参中,需要填入退款金额。
收单交易撤销
1调用收单撤销接口(alipay.trade.cancel);
2通过商户网站唯一订单号out_trade_no或支付宝交易号trade_no撤销。
收单交易关闭
1调用收单关闭接口(alipay.trade.close)。
2通过商户网站唯一订单号out_trade_no或支付宝交易号trade_no关闭。
无线端唤起签约说明(alipay.user.agreement.page.sign)
通过app唤起支付宝钱包的签约页面,目前有两种方法。
方法1 先判断客户端是否安装有钱包,有则打开钱包,进入签约页面。
a. 判断有无钱包方法,
iOS平台:判断scheme: alipays://是否能打开;
注意:iOS 9 以上版本需要将alipays配置在项目的LSApplicationQueriesSchemes中,千万不要配置在URL Schemes中。

图片加载失败


android平台判断package name是否存在: com.eg.android.AlipayGphone。
b. 签约接口(alipay.user.agreement.page.sign)的参数整体做一次encode(UTF-8来encode)。
c. 上面的内容拼到链接(该链接里面的appid为固定值,不可修改):
"alipays://platformapi/startapp?appId=60000157&appClearTop=false&startMultApp=YES&sign_params="之后
d. 商户app打开上面的链接。
注:步骤b的接口参数,如有对应语言sdk,可以使用sdk的工具类生成加签后的字符串。
需要注意,pdf文档中的示例为alipayClient.pageExecute(request); 这种方式会返回一个POST表单。
请使用如下方式返回一个get地址:
小程序应该使用
方法2 (仅供了解)通过浏览器协议唤起。该方法会打开浏览器,判断本机是否安装支付宝钱包,无则打开钱包下载页面,有则打开钱包。因为有打开浏览器跳转过程,流程较长。调用方法:
a.  签约接口(alipay.user.agreement.page.sign)的参数整体做一次encode(UTF-8来encode)。
b.上面的内容拼到链接(该链接里面的appid为固定值,不可修改):
"alipays://platformapi/startapp?appId=60000157&appClearTop=false&startMultApp=YES&sign_params="之后,然后整体再做一次url encode(UTF-8来encode)。
c. 上面的内容拼到链接:"http://d.alipay.com/i/index.htm?iframeSrc="之后。
d. 浏览器唤起上面的链接
示例
方法1唤起钱包支付宝个人协议页面签约接口-alipay.user.agreement.page.sign页面;
a. 先生成支付宝个人协议页面签约接口(alipay.user.agreement.page.sign)的url,每个参数对应的value做一次encode(UTF-8),如下:
*****************************************************************************************************
http://openapi-1-64.test.alipay.net/gateway.do?biz_content=%7B%22access_params%22%3A%7B%22channel%22%3A%22ALIPAYAPP%22%7D%2C%22allow_huazhi_degrade%22%3A%22true%22%2C%22external_agreement_no%22%3A%22test082201%22%2C%22personal_product_code%22%3A%22GENERAL_WITHHOLDING_P%22%2C%22sign_scene%22%3A%22INDUSTRY%7CCARRENTAL_HUAZHI%22%7D&sign=BKOXFy%2B6%2BidPncxxXvd1DlQLhjQSBVXaMSkBcRgp5ymPzpLlglkTK17CPNwrhmfrDkNcnbzlMRiUgZoKNzcb7CbWT34UBYV%2F2lafuqKOGuLPX3K4axBYitVAUCckVWVvmfGP43jnPtfkNRRLUD5HfZEyiFfKAtAm9DFAA0rRz%2B8%3D&timestamp=2019-11-25+16%3A24%3A18&sign_type=RSA&charset=UTF-8&app_id=2017103100101197&method=alipay.user.agreement.page.sign&version=1.0
*****************************************************************************************************
b. 将http://openapi.alipay.com/gateway.do?后面的所有参数作为入参,做一次整体的encode(UTF-8),如下:
*****************************************************************************************************
biz_content%3d%25257B%252522access_params%252522%25253A%25257B%252522channel%252522%25253A%252522ALIPAYAPP%252522%25257D%25252C%252522allow_huazhi_degrade%252522%25253A%252522true%252522%25252C%252522external_agreement_no%252522%25253A%252522test082201%252522%25252C%252522personal_product_code%252522%25253A%252522GENERAL_WITHHOLDING_P%252522%25252C%252522sign_scene%252522%25253A%252522INDUSTRY%25257CCARRENTAL_HUAZHI%252522%25257D%26sign%3dBKOXFy%25252B6%25252BidPncxxXvd1DlQLhjQSBVXaMSkBcRgp5ymPzpLlglkTK17CPNwrhmfrDkNcnbzlMRiUgZoKNzcb7CbWT34UBYV%25252F2lafuqKOGuLPX3K4axBYitVAUCckVWVvmfGP43jnPtfkNRRLUD5HfZEyiFfKAtAm9DFAA0rRz%25252B8%25253D%26timestamp%3d2019-11-25%2b16%25253A24%25253A18%26sign_type%3dRSA%26charset%3dUTF-8%26app_id%3d2017103100101197%26method%3dalipay.user.agreement.page.sign%26version%3d1.0
*****************************************************************************************************
c.将b生成的参数前面添加
"alipays://platformapi/startapp?appId=60000157&appClearTop=false&startMultApp=YES&sign_params=",如下:
*****************************************************************************************************
alipays://platformapi/startapp?appId=60000157&appClearTop=false&startMultApp=YES&sign_params=biz_content%3d%25257B%252522access_params%252522%25253A%25257B%252522channel%252522%25253A%252522ALIPAYAPP%252522%25257D%25252C%252522allow_huazhi_degrade%252522%25253A%252522true%252522%25252C%252522external_agreement_no%252522%25253A%252522test082201%252522%25252C%252522personal_product_code%252522%25253A%252522GENERAL_WITHHOLDING_P%252522%25252C%252522sign_scene%252522%25253A%252522INDUSTRY%25257CCARRENTAL_HUAZHI%252522%25257D%26sign%3dBKOXFy%25252B6%25252BidPncxxXvd1DlQLhjQSBVXaMSkBcRgp5ymPzpLlglkTK17CPNwrhmfrDkNcnbzlMRiUgZoKNzcb7CbWT34UBYV%25252F2lafuqKOGuLPX3K4axBYitVAUCckVWVvmfGP43jnPtfkNRRLUD5HfZEyiFfKAtAm9DFAA0rRz%25252B8%25253D%26timestamp%3d2019-11-25%2b16%25253A24%25253A18%26sign_type%3dRSA%26charset%3dUTF-8%26app_id%3d2017103100101197%26method%3dalipay.user.agreement.page.sign%26version%3d1.0
*****************************************************************************************************
如上就是最终链接,通过scheme唤起。
页面签约同步通知参数说明
1返回的数据,商户可以按照下文描述的方式在服务端验证。有些时候会出现商户app在支付宝签约阶段被关闭导致无法正确收到同步结果,此时签约结果可以完全依赖服务端的异步通知。
2同步通知和异步通知都可以作为签约完成的凭证,且异步通知支付宝一定会确保发送给商户服务端。为了简化集成流程,商户可以将同步签约结果仅仅作为一个签约结束的通知(忽略执行校验),实际签约是否成功,完全依赖服务端异步通知,如果商户未接入异步通知,则可通过签约查询接口获取签约结果。如果商户允许用户签约降级,则需要识别通知里的属性来判断是否是花芝代扣(credit_auth_mode=DEDUCT_HUAZHI标识签约的产品是花芝代扣)。
3同步通知会在商户传入的return_url后面拼接返回参数,如果商户接口中未传入return_url,则用户签约完成后不再返回商户,直接回到支付宝钱包首页;
签约成功同步通知示例:
*****************************************************************************************************http://api.test.alipay.net/atinterface/receive_notify.htm?agreement_no=20170627457298962889&status=NORMAL&external_logon_id=1385
2852877&sign_type=RSA&charset=UTF-8&auth_app_id=2017060101317939&invalid_time=2017-08-27+11%3A40%3A13&personal_product_code=GENERAL_WITHHOLDING_P&credit_auth_mode=DEDUCT_HUAZHI&version=1.0&code=10000&msg=Success&sign=quJNMiI1sVlm8hFoRx5fu%2FzZ5lQoMDkT%2BdZAWWaEQDOxNaKYjr0FdFzr4L7HfUFf6wDr05Yve2%2FkhsADulgoGwrL2w7AzmQCitZTvzUveVte9imm9mGTNK%2F
7uXa%2BkWYDZM8a3iygOPItr0htghHM7CQZh5gdt8k5nIdVtmYk2YY%3D&timestamp=2017-06-27+11%3A40%3A15&sign_scene=INDUSTRY%7CCARRENTAL&valid_time=2017-06-27
+11%3A40%3A13&external_agreement_no=test212&app_id=2017060101317939&method=alipay.user.agreement.page.sign&alipay_logon_id=138****2877&sign_time=2017-06-27+11%3A40%3A14
*****************************************************************************************************
异步通知说明
异步通知优先取接口(alipay.user.agreement.page.sign)中传的notify_url,如果没传则取openhome中的通知地址(商户必须在openhome配置通知地址),商户验签时,在通知返回参数列表中,除去sign、sign_type两个参数外,凡是通知返回回来的参数皆是待验签的参数。
附:openhome设置通知地址入口(签约账号登录—开发者中心-我的应用),通知地址按APPID维度设置(如果要接受异步通知,一定要设置此参数)
jsapi方式签约
适用于支付宝钱包内的小程序,该方式接入对支付宝钱包版本有依赖,最低10.0.18及以上。
H5 jsapi请求接口示例:
*****************************************************************************************************AlipayJSBridge.call('startBizService', {
name: 'deduct', //业务名称是deduct
param: { //业务参数,将传给服务方
sign_params : biz_content%3d%25257B%252522access_params%252522%25253A%25257B%252522channel%252522%25253A%252522ALIPAYAPP%252522%25257D%25252C%252522allow_huazhi_degrade%252522%25253A%252522true%252522%25252C%252522external_agreement_no%252522%25253A%252522test082201%252522%25252C%252522personal_product_code%252522%25253A%252522GENERAL_WITHHOLDING_P%252522%25252C%252522sign_scene%252522%25253A%252522INDUSTRY%25257CCARRENTAL_HUAZHI%252522%25257D%26sign%3dBKOXFy%25252B6%25252BidPncxxXvd1DlQLhjQSBVXaMSkBcRgp5ymPzpLlglkTK17CPNwrhmfrDkNcnbzlMRiUgZoKNzcb7CbWT34UBYV%25252F2lafuqKOGuLPX3K4axBYitVAUCckVWVvmfGP43jnPtfkNRRLUD5HfZEyiFfKAtAm9DFAA0rRz%25252B8%25253D%26timestamp%3d2019-11-25%2b16%25253A24%25253A18%26sign_type%3dRSA%26charset%3dUTF-8%26app_id%3d2017103100101197%26method%3dalipay.user.agreement.page.sign%26version%3d1.0
}
}, function(result){
alert(JSON.stringify(result)); //业务执行结果,或是报错
});
*****************************************************************************************************
小程序代扣
*****************************************************************************************************
my.paySignCenter({
signStr: 'biz_content%3d%25257B%252522access_params%252522%25253A%25257B%252522channel%252522%25253A%252522ALIPAYAPP%252522%25257D%25252C%252522allow_huazhi_degrade%252522%25253A%252522true%252522%25252C%252522external_agreement_no%252522%25253A%252522test082201%252522%25252C%252522personal_product_code%252522%25253A%252522GENERAL_WITHHOLDING_P%252522%25252C%252522sign_scene%252522%25253A%252522INDUSTRY%25257CCARRENTAL_HUAZHI%252522%25257D%26sign%3dBKOXFy%25252B6%25252BidPncxxXvd1DlQLhjQSBVXaMSkBcRgp5ymPzpLlglkTK17CPNwrhmfrDkNcnbzlMRiUgZoKNzcb7CbWT34UBYV%25252F2lafuqKOGuLPX3K4axBYitVAUCckVWVvmfGP43jnPtfkNRRLUD5HfZEyiFfKAtAm9DFAA0rRz%25252B8%25253D%26timestamp%3d2019-11-25%2b16%25253A24%25253A18%26sign_type%3dRSA%26charset%3dUTF-8%26app_id%3d2017103100101197%26method%3dalipay.user.agreement.page.sign%26version%3d1.0',
success: (res) => {
my.alert({
title: 'success', // alert框的标题
content: JSON.stringify(res)
});
},
fail: (res) => {
my.alert({
title: 'fail', // alert框的标题
content: JSON.stringify(res)
});
}
});
*****************************************************************************************************备注:此sign_params入参与schema方式签约的入参内容一致
jsapi方式签约同步返回结果
jsapi返回的结果里面有两个key,其中result是处理结果(类型为json结构字符串);resultStatus是结果码(类型为字符串)
*****************************************************************************************************{
"result":"{
"alipay_user_agreement_page_sign_response":{
"code":"10000",
"msg":"Success",
"app_id":"2017060101317939",
"auth_app_id":"2017060101317939",
"charset":"UTF-8",
"timestamp":"2017-06-27 11:40:15",
"sign_scene":"INDUSTRY|CARRENTAL",
"valid_time":"2017-06-27 11:40:13",
"status":"NORMAL",
"external_agreement_no":"test212",
"agreement_no":"20170627457298962889",
"credit_auth_mode":"DEDUCT_HUAZHI",
"external_logon_id":"13852852877",
"alipay_logon_id":"138****2877",
"invalid_time":"2017-08-27 11:40:13",
"personal_product_code":"GENERAL_WITHHOLDING_P",
"sign_time":"2017-06-27 11:40:14",
},
"sign":"KgeHoSYPuhpzhfrjeuwWbRmjJtlUp+5UGfq2OxYLraWEOqKsw9FokUnodMEgKgJK8=",
"sign_type":"RSA"
}",
"resutlStatus":"7000"
}
****************************************************************************************************
resultStatus结果码含义

返回码

含义

7000

协议签约成功

7001

签约结果未知(有可能已经签约成功),请根据外部签约号查询签约状态

7002

协议签约失败

6001

用户中途取消

6002

网络连接错误

实名信息生成摘要
页面签约过程中,如果商户已有用户实名信息并希望传给支付宝做比对,则需要传入实名信息的摘要字符串,放在identity_params参数的identity_hash字段。目前只有地铁等少数场景在使用此参数,如无需要不用关注。
摘要方式为,拼接姓名与身份证号(中间不加任何字符),使用SHA256摘要方式,UTF8编码,生成十六进制的字符串(不用区分大小写)。
以java为例,生成摘要可使用java.security.MessageDigest,从字节数组转为十六进制的字符串可使用org.apache.commons.codec.binary.Hex.encodeHexString()(需引入commons-codec),也可自己实现。
引入commons-codec参考
举例来说,姓名和身份证号拼接后为:
*********************************************************************
王小明322133199901013214
*********************************************************************
则生成的摘要为:
*********************************************************************
bf3a69bf2563f68291f85d75ec69466ae8e8834a59b42801304089ae1bcad2e8
*********************************************************************
验收文档
商户接入后需要填写以下checklist找技术支持验收。花芝代扣验收checklist .xlsx 画板

相关知识

金属集成墙板,集成装饰墙板,集成墙面
“梅芝园艺杯”园林花卉技能大赛技术方案
666立彩=【红色芝樱+粉色芝樱+蓝花芝樱+白花芝樱+红花芝樱】
立彩==《蓝花芝樱》《芝樱批发》《红色芝樱》《优质芝樱苗》
代森锰锌项目企业经营战略方案
花芝奶茶加盟
输验证码扣299元 消费者被困贷款“会员劫”
芝麻花能治灰指甲吗
芝樱花种子种植方法
一种生态防治棉铃虫的集成方法

网址: 花芝代扣集成方案 https://m.huajiangbk.com/newsview949057.html

所属分类:花卉
上一篇: API支付程序/花旗支付平台源码
下一篇: 什么是第三方支付接口api?第三