本文档是《即时到账交易接口、纯网关接口、大额信用卡接口、快捷支付前置接口、 快捷支付网关接口、信用卡分期支付接口(create_direct_pay_by_user)》附录文档, 它详细解释了在技术接入与使用过程中需要注意的地方,以帮助商户避免风险产生。 阅读后如有疑问,请联系支付宝相关技术支持。
接口文档获取途径:登陆到支付宝账户产品商店即可下载到对应的接口文档。如所需其他接口文档可以由支付宝技术支持提供。 开发语言:支持C#、PHP、ASP、JAVA四种开发语言。
支付宝风险稽查系统
用户事先指定支付金额的收款方,对应的交易只能将金额转入指定的收款方账户中
通过HTTP协议把需要传输的数据发送给接收方的过程
“网络钓鱼”攻击利用欺骗性的电子邮件和伪造的Web站点来进行诈骗活动,受骗者往往会泄露自己的财务数据,如信用卡号、账户用户名、口令和社保编号等内容,造成损失。防钓鱼用来防止以上情况的发生
分润是指将交易金额中的一部分转账给其它账户
快捷登录产品主要有以下功能: 用户在商户的网站上,可以使用支付宝快捷登录,并共享支付宝的收货地址等物流信息给商户; 如果用户在商户网站上使用了支付宝快捷登录,那么在支付宝支付时,不需要再次在支付宝登录
带有敏感政治倾向、暴力倾向、不健康色彩或不文明的词
用做url转义字符,或在接口参数中用作分割符的特殊字符,包括:#、%、&、+、^、|
支付宝根据得到的数据处理完成后,支付宝将处理完成的结果信息反馈给商户网站
使用签约账号进行调试,必须保护合作者身份ID与安全校验码key的隐私性。
测试完毕后,要把测试账号立刻更换成签约账号。
该接口必须使用https请求
支付宝的通知服务器的出口IP是121.0.26.0/23和110.75.128.0/19,该IP段地址不是商户访问支付宝的地址
商户必须以DNS解析的方式访问支付宝接口,不要设置DNS cache,不要绑定支付宝IP。如果为了商户自身安全必须绑定支付宝IP时,必须向支付宝的技术支持人员备案。
必须设置请求参数_input_charset(编码格式),即该参数不能为空,并让该参数加入签名运算。
当设置paymethod(默认支付方式)为directPay(余额支付)时,请求参数defaultbank(默认网银)不要设置或不要传递。
只有开通了自定义超时功能,才能使用请求参数it_b_pay(超时时间)。。
只有开通了防钓鱼功能且开通了防钓鱼时间戳,才能使用请求参数anti_phishing_key(防钓鱼时间戳)。
只有开通了防钓鱼功能且开通了IP地址检查,才能使用请求参数exter_invoke_ip(客户端IP)。
只有开通了网银支付时是否做CTU校验,才能使用请求参数need_ctu_check(网银支付时是否做CTU校验)。
只有开通了快捷登录,才能使用请求参数token(授权令牌码),且必须设置token。
请求参数subjet、body的值,以及extend_param、item_orders_info、royalty_parameters的备注表述信息中不要使用敏感词。 |避免接口无法正常使用
参数notify_url的设置必须是互联网上能访问到且访问正常的路径地址
请求参数return_url的设置不能是 http://localhost/ 这类地址,必须是服务器ip地址或者域名方式。(例如: 127.0.0.1 )
请求参数return_url的设置不能是含有“!”这类特殊字符的地址 避免付款成功后,当前页面停留在支付宝交易完成提醒页面,而不做任何跳转 royalty_parameters(分润账号集)、extend_param(公用业务扩展参数)参数中的备注描述信息中不能出现用作字段分割符的“^”、“|”特殊字符。
当使用了分润功能时,在设置请求参数royalty_parameters(分润账号集)的值时,分润的总金额不能超过付款总金额减去支付宝手续费所余下的金额。
当使用了分润功能时,在设置请求参数royalty_parameters(分润账号集)的值时,分润的收款账户必须是有效的收款账号。
seller_id(卖家支付宝用户号)、seller_account_name(卖家别名支付宝账号)、seller_email(卖家支付宝账号)不能全部为空,至少有一项不为空。在都不为空的情况下,优先级顺序为:seller_id >seller_account_name >seller_email
如果设置了买家支付宝账号(如buyer_email等),那么买家支付宝账号不能与卖家支付宝账号相同,即:buyer_emai与seller_email不能相同、buyer_id与seller_id不能相同、buyer_account与seller_account不能相同)。
price(商品单价)、quantity(购买数量)会替换total_fee(交易金额)。即total_fee不能与price、quantity同时存在;存在price、quantity,就不能存在total_fee。
在给请求参数defaultbank、paymethod赋值时,需注意区分大小写
只有开通了纯网关(即网银直连),且paymethod赋值为bankPay时,才有纯网关的效果。如果没有开通,则paymethod禁止赋值为bankPay。
只有开通了大额信用卡功能,且paymethod=CREDITCARD credit_card_pay=Y credit_card_default_display=Y 如此设置以上3个参数值时,才有大额信用卡的效果
只有开通了信用支付,且paymethod赋值为creditPay时,才有信用支付的效果。
只有开通了信用卡分期,且paymethod赋值为CCIP时,才有信用卡分期的效果。
只有开通了快捷支付前置,且paymethod赋值为motoPay时,才有快捷支付前置的效果。
只有开通了快捷支付网关,且paymethod赋值为以下3个值之一:expressGatewayDebit(快捷支付网关借记卡单通道) expressGatewayCredit(快捷支付网关信用卡单通道) expressGateway(快捷支付网关双通道)且default_login赋值为Y,以上2个参数必须都设置,才有快捷支付网关的效果
如果是etao接入的商户,那么必须设置请求参数error_notify_url和item_orders_info; 如果不是etao接入商户,item_orders_info不要设置。
传递请求出错时的通知页面路径error_notify_url(需要联系支付宝开通该参数权限)
请求的所有参数,需要根据参数名=参数值的格式,按首字符字典顺序(ascii值大小)排序,若遇到相同首字符,则判断第二个字符,以此类推,待签名字符串需要以“参数名1=参数值1&参数名2=参数值2&….&参数名N=参数值N”的规则进行拼接。
在对请求的参数做签名时,这些参数必须来源于请求参数列表,并且除去列表中的参数sign、sign_type。
在对请求的参数做签名时,对于请求参数列表中那些可空的参数,如果选择使用它们,那么这些参数的参数值必须不能为空或空值。
签名时将字符转化成字节流时指定的字符集与_input_charset保持一致;如果传递了_input_charset参数,这个参数也应该包含在待签名数据中。
待签名数据应该是参数原始值而不是url encoding之后的值,例如:调用某接口需要对请求参数email进行数字签名,那么待签名数据应该是[email protected],而不是email=test%40msn.com。
设置了请求参数item_orders_info的情况下,建议使用post方式提交请求。
支付宝主动发送通知,当商户接收到通知数据后必须给支付宝返回“success”字符串,不允许返回其他多余字符。
必须保证设置的通知路径互联网上能访问得到,且访问顺畅。 避
必须对返回的所有结果数据进行处理
必须判断发送支付请求以后的业务逻辑处理程序是否有重复执行
如果交易付款完成时发送的交易状态是TRADE_SUCCESS(可对交易做其他操作,如退款、分润等),则当超过签约合同指定的可退款时间段时,支付宝会主动发送TRADE_FINISHED(不能对该交易再做任何操作)交易状态。此时,需要根据商户自身业务情况,来判断是否需对这次的交易完成通知进一步处理。
建议每一次支付操作需以日志形式记录到商户网站的日志操作数据库中
如果有设置通知路径及触发通知条件,则必须使用获取到的参数 notify_id 再次请求支付宝,获取是否是支付宝发送的验证结果。 该请求链接是: https://mapi.alipay.com/gateway.do?partner=合作者身份ID¬ify_id=通知ID的值
在对通知的参数做签名时,这些参数必须来源于支付宝通知回来的参数,并且除去列表中的参数sign、sign_type,根据参数名=参数值的格式,按首字符字典顺序(ascii值大小)排序,若遇到相同首字符,则判断第二个字符,以此类推,待签名字符串需要以“参数名1=参数值1&参数名2=参数值2&….&参数名N=参数值N”的规则进行拼接,得到的签名结果与获取到的参数sign值做比较。
步骤 | 调试内容 | 备注 |
---|---|---|
第一步:在本机单独对这个接口进行调试。 | 支付 返回 | 仅仅把接口配置好,不要放在商户的网站项目中。 |
第二步:在服务器上单独对这个接口进行调试 | 支付 返回 通知 | 本机调试没有问题后,再放入服务器中调试。 |
第三步:接口融合到网站项目中 | 无 | 把调试好的接口与商户网站项目的业务流程进行衔接和融合。 |
第四步:在本机对融合后的网站项目进行调试 | 整个业务操作流程 支付 返回 业务后续的执行 | 在本机调试衔接到网站项目后的接口。 |
第五步:在服务器对融合后的网站项目进行调试 | 整个业务操作流程 支付 返回 通知 业务后续的执行 | 本机调试没有问题后,再放入服务器中调试。 |
接口支持重复调用,前提是交易基本信息(买家、卖家、交易金额、超时时间等)在多次调用中保持一致,且交易尚未完成支付。
即时到账的优势:快捷,不存在卖家发货、买家确认收货的操作,直接将买家的资金转入卖家的支付宝账号。
收款方 Email_1^金额 1^备注 1|收款方Email_2^金额 2^备注 2
平级分润规则买家付出了交易金额 100 元,同时,金额 1 给了收款方 Email_1,金额 2 给了收款方 Email_2,seller_email 获得剩下的金额(剩下的金额为:100-金额 1-金额 2-支付宝手续费)。
收款方 Email_1^金额 1^备注 1|收款方Email_1^收款方 Email_2^金额 2^备注 2
买家付出了交易金额 100 元,同时,金额 1 给了收款方 Email_1,收款方 Email_1 把获得的金额中的金额2给了收款方Email_2,seller_email获得剩下的金额(剩下的金额可以为:100-金额 1-支付宝手续费)。
文档中所涉及到的规则都是根据在接入与使用支付宝接口的过程中出现的一些主 要风险而做的防范措施,请商户予以关注。请在接入及使用支付宝接口的过程中, 严格依照支付宝提供的接口技术文档(即时到账交易接口、纯网关接口、大额信用 卡接口、快捷支付前置接口、快捷支付网关接口、信用卡分期支付接口 (create_direct_pay_by_user).pdf)、代码示例、本文档(即时到账交易接口、纯 网关接口、大额信用卡接口、快捷支付前置接口、快捷支付网关接口、信用卡分期 支付接口(create_direct_pay_by_user)接入与使用规则)等接口资料,否则由此导 致的风险以及资金损失或者扩大情形需商户自行承担。