支付宝担保交易使用手册
担保交易使用手册
修订历史
版权信息
本手册中所有的信息为支付宝公司提供。未经过支付宝公司书面同意,接收本手册的人不能复制,公开,泄露手册的部分或全部的内容。
1概要 (3)
2请求参数 (3)
2.1收货人信息 (4)
2.2物流信息 (6)
2.3金额计算 (7)
3通知返回参数 (7)
4签名机制 (9)
4.1步骤一:哪些是要加密的参数? (9)
4.2步骤二:排序与连接 (9)
4.3步骤三:加密 (10)
5支付流程 (11)
5.1进入商家网站“订单确认”页面 (11)
5.2进入支付宝收银台 (11)
5.3填写收货信息 (11)
5.4付款 (12)
5.5付款完成后自动跳转回商家的返回页面。 (20)
6数据传输流程 (20)
6.1商户系统请求/支付宝响应交互模式 (20)
6.2支付宝主动通知交互模式(支付宝反馈数据) (21)
7通知返回 (22)
7.1返回 (22)
7.2通知 (23)
7.3如何处理订单同步 (23)
8枚举列表 (26)
8.1交易状态列表 (26)
8.2退款状态列表 (26)
8.3交易超时列表 (27)
8.4调试错误列表 (28)
1概要
本手册是以“外部(纯)担保交易服务(create_partner_trade_by_buyer).pdf”文档为根本,在此基础上做详细说明。
2请求参数
2.1收货人信息
一般的支付流程是——
先到达支付宝收银台:
图一
点击“确认购买”后,页面转至“买家设置收货地址”页面,
图二
点击“确定”后,页面转至付款页面,
图三
但是,在填写设置好“收货人信息”的参数(receive_name、receive_address、receive_zip、receive_phone、receive_mobile)后,点击“确认购买”(图一)后,页面转至的页面不是“买家设置收货地址”页面(图二),而是跳过该页面直接到达“付款页面”(图三)。
功能:由于商户网站在自己的购买流程中已经包含了买家填写收货信息的操作步骤,因此到达支付宝收银台后防止买家两次输入的收货信息不一致且减少买家操作。
2.2物流信息
总共有三组物流信息参数:
第一组:logistics_fee、logistics_type、logistics_payment
第二组:logistics_fee_1、logistics_type_1、logistics_payment_1
第三组:logistics_fee_2、logistics_type_2、logistics_payment_2
物流方式是三个为一组成组出现。若要使用,一组的三个参数都需要填上数据;若不使用,这组的三个参数都不能出现在支付时的请求参数信息中。
1、第一组的物流信息参数是不可缺少的必填参数,见‘图四’
2、有了第一组物流方式,才能有第二组物流方式,且不能与第一个物流方式中的物流类型相同,即logistics_type="EXPRESS",那么logistics_type_1就必须在剩下的两个值(POST、EMS)中选择。
3、有了第一组物流方式和第二组物流方式,才能有第三组物流方式,且不能与第一组物流方式和第二组物流方式中的物流类型相同,即logistics_type="EXPRESS"、logistics_type_1="EMS",那么logistics_type_2就只能选择"POST"。
三组都设置后呈现的效果,见‘图五’。
图四图五
2.3金额计算
总金额计算方式是:
总金额= price*quantity+logistics_fee+discount
总金额显示在支付宝收银台左下角的“总价”里,见‘图四’。
即:总价=商品单价*产品数量+物流信息中的运费+折扣
因此,若要打折,请把折扣设置成负数。那么这样的效果是——
总价=商品单价*产品数量+物流信息中的运费-|折扣|
3通知返回参数
4签名机制
4.1步骤一:哪些是要加密的参数?
4.1.1加密参数组是什么?
支付宝提供的接口案例代码中对应的参数组所在位置如下:
ASP:index.asp里para= Array括号中包含的参数集合
PHP:index.php里$parameter = array括号中包含的参数集合
https://www.360docs.net/doc/0c4902884.html,:default.aspx.cs里AlipayService aliService = new AlipayService括号中包含的参数集合
JAVA:src/com/ alipay/util/AlipayService.java 里CreateUrl或BuildPostform函数中的Map sPara = new HashMap();包含的参数集合
4.1.2哪些是要加密的参数?
●sign、sign_type、key这三个参数是不在加密参数组中。
●当编码格式是GB2312或GBK的时候,_input_charset可参与加密也可以不参与加密,
当编码格式是utf-8的时候,_input_charset是必须参与加密的。
●二选一的参数,则只能有一个在加密参数组中,如:seller_email与seller_id;total_fee
与price、quantity;buyer_email与buyer_id。
●当想增加扩展功能时,扩展功能参数必须全部参与加密,加入加密参数组中。
●所有参与加密的参数,绝对不能为空值。
4.2步骤二:排序与连接
对数组里的每一个值从a到z的顺序排序,若遇到相同首字母,则看第二个字母,以此类推。
4.3步骤三:加密
在众多参数中有一个参数是并没有在请求参数列表中,这个参数是key。一个partner 对应一个key,它就是俗称的私钥。以英文字母和数字组成的32位字符串。商家可登陆到支付宝里面,在“商家服务”栏目中找到,安装数字证书即可查看。
它是加密时才需要用上的参数。
当拿到排序后用“&”字符连接起来的字符串后,再把参数key的值与该字符串拼接起
把这个新的字符串放入加密函数中,得到32位加密结果字符串。
此时,整个签名算法完成。
这个32位加密结果字符串就是参数sign的值。
5支付流程
5.1进入商家网站“订单确认”页面
在商家网站的下单流程下单完毕,进入网上付款、订单确认页面,如图(现在客户还在商户网站上):
5.2进入支付宝收银台
图一
5.2.1付款方式一:有支付宝账号
输入支付宝账号、登录密码,点击“确认购买”。
5.2.2付款方式二:没有支付宝账号
输入支付宝账号或不是支付宝账号的邮箱地址或手机号码,点击“确认购买”。
5.3填写收货信息
点击“确认购买”后,页面转至“买家设置收货地址”页面,
图二
点击“确定”后,页面转至付款页面,如图:
页面中有五种支付方式:余额付款(directPay)、网银付款(bankPay)、支付宝卡通付款(cartoon)、网点付款(CASH)、消费卡付款
5.4付款
5.4.1余额付款
有支付宝账号的情况下,可选择余额付款方式。
买家输入支付密码,点击“确认无误,付款”,页面自动跳转到支付成功页面。
5.4.2网银付款
如果没有支付宝账号,推荐使用网银付款。
选择好网上银行后,点击“确认无误付款”,此时页面会跳转到去网银的确认页面,如图:
一般情况下,这个页面会自动跳转到网银的支付页面,如图:
此时,买家接着在网银的页面中完成支付,一般情况下,网银会自动跳转回支付宝的支付成功页面,如图:
5.4.3支付宝卡通付款
需要办理了卡通服务的支付宝账号可以使用。有支付宝账号又有网银的用户,推荐使用此种付款方式。
此时,页面已自动查询得出该用户使用的是何种卡通,并让其选择。
输入支付密码,点击“确认无误,付款”,当前页面会自动跳转回支付宝的支付成功页面,如图:
5.4.4网点付款
选择三种支付方式,拿到交易号后可去线下网点支付。
5.4.5消费卡付款
选择消费卡种类: 百联OK卡
点击“确认提交”,
点击“去OK卡网站付款”
到达“OK卡会员在线交易平台”,输入会员卡号、电话密码,点击“下一步”,完成OK卡交易流程。
话费充值卡
输入充值卡号、充值卡密码,点击“确认提交”,完成交易。
5.5付款完成后自动跳转回商家的返回页面。
若在支付时,请求给支付宝的参数中包含return_url参数,那么在支付完成以后,支付宝的提示支付成功页面会停留几秒后跳回return_url参数指定的商家路径页面。该页面可由商家自己来制定、页面美化、数据处理等工作。
6数据传输流程
6.1商户系统请求/支付宝响应交互模式