具备开发能力的服务商入驻开放平台后,需要通过创建应用的方式接入蚂蚁各项产品接口并进行开发,基于对行业及业务场景痛点的理解,创造能够满足市场需要的解决方案,以应用的形式服务用户。
在创建应用后即生成应用的标识APPID,使用支付宝账号登录开放平台后,在“我的应用”中按下图方式查看APPID。
应用创建完成后,需要给应用添加APP支付功能,把APP支付能力加到你的应用中,此时该应用为开发中状态,只能在沙箱环境下进行调试。应用开发完成后,请开发者自行进行验收和安全性检查(安全性检查可参考《开放平台第三方应用安全开发指南》),验收检查完成后可申请上线。应用申请上线后,会同时申请此列表的功能,接口即生效,这个状态下的应用能够调用生产环境的接口。
若在应用上线后需要添加其他的接口功能,则需要在开放平台里进行签约,这时候约定的合同就生效了。
如下为已经获得的接口功能:
为了保证交易双方的身份和数据安全,需要配置双方密钥。商户在生成密钥后,需要上传应用公钥到支付宝开放平台,并且获取支付宝公钥用于支付宝返回通知的验签,具体方法流程请参见上传应用公钥并获取支付宝公钥。
蚂蚁金服开放平台RSA签名模式全面支持2048及以上长度密钥,配合增强的SHA256摘要算法,将更好的保护商户数据安全及可靠性。RSA和RSA2签名方式的对比,可参考RSA和RSA2签名算法区别,如下图所示。
注:如果您将应用公钥上传到以下“RSA2(SHA256)”处,接口中的sign_type值需要相应的设置为RSA2;如果您将应用公钥上传到以下“RSA(SHA1)”处,接口中的sign_type值需要相应的设置为RSA;
支付宝开放平台SDK封装了签名和验签过程,只需配置账号及密钥参数,强烈建议使用。
更多签名问题的自助排查流程,可以参考支付宝验签专区的未使用开放平台SDK的自助排查流程。关于同步通知和异步通知的验签规则,可参考验签教程。
更多关于签名教程和签名工具下载等问题,请参见签名专区。
如果遇到报错ALI40247,请在SDK返回的result中查看具体的错误信息,同时可在公共返回码列表中找到对应的解决方案。其他联调过程中出现的错误码信息,请点击右侧的智能小宝,进行查询。
由于同步通知和异步通知都可以作为支付完成的凭证,且异步通知支付宝一定会确保发送给商户服务端。为了简化集成流程,商户可以将同步结果仅仅作为一个支付结束的通知(忽略执行校验),实际支付是否成功,完全依赖服务端异步通知。
验证签名正确后,必须再严格按照如下描述校验通知数据的正确性。
1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号;
2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额);
3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email);
4、验证app_id是否为该商户本身;
上述1、2、3、4有任何一个验证不通过,则表明本次通知是异常通知,务必忽略。在上述验证通过后商户必须根据支付宝不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。在支付宝的业务通知中,只有交易通知状态为TRADE_SUCCESS或TRADE_FINISHED时,支付宝才会认定为买家付款成功。
目前提供的交易辅助接口包括以下接口:
API英文名 | API中文名 | 完整文档 |
---|---|---|
alipay.trade.query | 交易查询接口 | 查看文档 |
alipay.trade.close | 交易关闭接口 | 查看文档 |
alipay.trade.refund | 交易退款接口 | 查看文档 |
alipay.trade.fastpay.refund.query | 交易退款查询接口 | 查看文档 |
alipay.data.dataservice.bill.downloadurl.query | 查询账单下载地址接口 | 查看文档 |
注意:在本接口调用时,请求参数中所使用的app_id需要和交易接口中所使用的app_id保持一致。关于各接口具体的参数信息和注意事项,请参考各接口文档。
商户外部订单号:商户提供给支付宝的请求数据中会传入out_trade_no,表示商户网站唯一的订单号。
支付宝订单号:在收到商户的交易请求后,支付宝返回的异步通知中会返回参数trade_no,表示该订单在支付宝端的唯一交易凭证号。
支付宝返回的常见的交易状态包含以下:
枚举名称 | 枚举说明 | 触发条件描述 | 触发条件默认值 |
---|---|---|---|
WAIT_BUYER_PAY | 交易创建,等待买家付款 | 交易创建 | false(不触发通知) |
TRADE_CLOSED | 未付款交易超时关闭,或支付完成后全额退款 | 交易关闭 | true(触发通知) |
TRADE_SUCCESS | 交易支付成功,可退款 | 交易支付成功 | true(触发通知) |
TRADE_FINISHED | 交易结束,不可退款 | 交易完成 | true(触发通知) |
状态TRADE_SUCCESS的通知触发条件是商户签约的产品支持退款功能的前提下,买家付款成功;
状态TRADE_FINISHED的通知触发条件是商户签约的产品不支持退款功能的前提下,买家付款成功;或者,商户签约的产品支持退款功能的前提下,交易已经成功并且已经超过可退款期限。
注:商户必须根据支付宝不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。在支付宝的业务通知中,只有交易通知状态为TRADE_SUCCESS或TRADE_FINISHED时,支付宝才会认定为买家付款成功。
一般情况下,商户只需按照交易状态的默认返回情况来进行相应处理即可,暂不开放单独配置某状态是否返回的功能 。
接口接入常见问题自助排查详见FAQ
更多联调过程中出现的错误码信息,请点击右侧的智能小宝,进行自助查询。