开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
文档中心
网页&移动应用 
支付产品
当面付
app支付
接入指南
基础功能
扩展功能
集成工具
api 列表
相关资料
手机网站支付
电脑网站支付
刷脸付
预授权支付
商家扣款
订单码支付
私域产品
公域产品
营销产品
资金产品
会员产品
信用产品
安全产品
广告产品
其他通用产品
开发 > 服务端 > 支付产品 > app支付 > 接入指南 > 基础功能 > 同步通知说明
已更新
文档更新记录 >
收藏
订阅更新
我的文档
设置
接入检测
即可查看检测结果)
若有未通过的接入检测项,接口将无法调通
支付宝 sdk 对商家的请求支付数据处理完成后,会将结果同步反馈给商家 app 端。
注意:同步返回的数据,商家可以按照下文描述的方式在服务端验证,验证通过后,可以认为本次用户付款成功。有些时候会出现商家 app 在支付宝付款阶段被关闭导致无法正确收到同步结果,此时支付结果可以完全依赖服务端的异步通知。由于同步通知和异步通知都可以作为支付完成的凭证,且异步通知支付宝一定会确保发送给商家服务端。为了简化集成流程,商家可以将同步结果仅作为一个支付结束的通知(忽略执行校验),实际支付是否成功,完全依赖服务端异步通知。
1 回调返回方法
ios:参考 的配置返回 url 处理方法打印输出回调信息,对于 ios 平台而言返回参数是一个 nsdictionary 对象。
android:参考 android集成流程 支付结果获取和处理的同步返回打印输出回调信息,对于 android 平台而言是一个 map 结构体。
2 返回结果示例(ios|android)
同步返回的回调信息里面有三个 key,其中 memo 是描述信息(类型为字符串);result 是处理结果(类型为 json 结构字符串);resultstatus 是结果码(类型为字符串)。
json
复制代码
{
"memo" : "xxxxx",
"result" : "{
\"alipay_trade_app_pay_response\":{
\"code\":\"10000\",
\"msg\":\"success\",
\"app_id\":\"2014072300007148\",
\"out_trade_no\":\"081622560194853\",
\"trade_no\":\"2016081621001004400236957647\",
\"total_amount\":\"9.00\",
\"seller_id\":\"2088702849871851\",
\"charset\":\"utf-8\",
\"timestamp\":\"2016-10-11 17:43:36\"
},
\"sign\":\"ngfstjf3i3oowbucdiqsumopagbcqz aoaqygh3w6eqa/gmypywlj2refijy9xptapi9yglzymw zmhd3kb0mh4raxmrb6mekx4zu8nf6geowia9klonw0imcjxi4abdifxhxrxyj********\",
\"sign_type\":\"rsa2\"
}",
"resultstatus" : "9000"
}
3 result返回参数说明
参数
类型
是否必填
最大长度
描述
示例值
out_trade_no
string

64
商家网站唯一订单号。
70501111111s001111119
trade_no
string

64
该交易在支付宝系统中的交易流水号。最长 64 位。
2014112400001000340011111118
app_id
string

32
支付宝分配给开发者的应用 appid。
2014072300007148
total_amount
price

11
该笔订单的资金总额,单位为 rmb-yuan。取值范围 [0.01, 100000000.00],精确到小数点后两位。
9.00
seller_id
string

16
收款支付宝账号对应的支付宝唯一用户号。以 2088 开头的纯 16 位数字。
20886894
msg
string

16
处理结果的描述,信息来自于 code 返回结果的描述。
success
charset
string

16
编码格式。
utf-8
timestamp
string

32
时间。
2016-10-11 17:43:36
code
string

16
结果码,详情可查看 
10000
4 resultstatus 结果码含义
返回码
含义
9000
订单支付成功。
8000
正在处理中,支付结果未知(有可能已经支付成功),请查询商家订单列表中订单的支付状态。
4000
订单支付失败。
5000
重复请求。
6001
用户中途取消。
6002
网络连接出错。
6004
支付结果未知(有可能已经支付成功),请查询商家订单列表中订单的支付状态。
其它
其它支付错误。
5 同步通知验证
为了帮助开发者调用开放接口,支付宝提供了 开放平台服务端 demo&sdk,包含 java、php、python、nodejs 和 .net 五种语言版本,封装了签名&验签、http 接口请求等基础功能。强烈建议先下载对应语言版本的 sdk 并引入开发工程进行快速接入。
若未使用支付宝 sdk,可按以下步骤完成同步通知验签:
在返回数据 resultstatus 为 9000 的情况下,解析 result 结果进行 同步返回验签
在返回数据 resultstatus 为 9000 的情况下,解析 result 结果,提取验证签名的相关核心数据。
第一步:提取 alipay_trade_app_pay_response 字段值,其代表签名原始字符串,上述示例格式如下:
第二步:提取 sign_type 字段值,其代表签名类型,上述示例格式如下:
第三步:提取 sign 字段值,其代表签名结果,上述示例格式如下:
第四步:验证签名是否合法。使用各自语言对应的 sha256withrsa 签名验证函数,传入签名的原始字符串、支付宝公钥、签名类型 rsa、签名字符进行合法性验证。
第五步:在第四步签名验证通过后,必须严格按照如下的描述校验通知参数的合法性。
1商家需要验证该通知数据中的 out_trade_no 是否为商家系统中创建的订单号。
2判断 total_amount 是否确实为该订单的实际金额(即商家订单创建时的金额)。
3校验通知中的 seller_id(或者 seller_email)是否为 out_trade_no 这笔单据对应的操作方(有的时候,一个商家可能有多个 seller_id/seller_email)。
4验证 app_id 是否为该商家本身。
5上述1、2、3、4有任何一个验证不通过,则表明同步校验结果是无效的,只有全部验证通过后,才可以认定买家付款成功。
6 客户端报错处理方案
商家客户端唤起支付宝客户端后,支付宝客户端中弹窗提示 支付失败 等报错信息。
6.1 系统交互流程

6.2 错误信息格式样例

6.3 result错误处理方案
当resultstatus返回非9000状态,result返回的sub_code 和 sub_msg 含有具体错误原因,可查看 alipay.trade.app.pay文档错误码 来进行排查和解决,如在开发过程中碰到其它的问题,可以在 搜索查找相关问题。
注意:部分报错没有显示具体报错信息,如{resultstatus=6001, result=, memo=用户取消},无法判断是用户取消支付导致还是报错导致,建议按照客户端页面显示的报错信息进行查询定位。常见报错信息及凯发app官方网站的解决方案见下表。
客户端报错
凯发app官方网站的解决方案
商家订单参数异常,请尝试返回后重新付款或联系商家确认
1请求 appid 应用未上线。
2应用类型为第三方应用
3未开通 app 支付或者未添加 app 支付功能包。
4sign_type 填写错误,必须为 rsa2 类型。
5签名方式使用错误,应用的接口加签方式选择为公钥证书,则代码必须为证书模式加签(含有 app_cert_sn 和 alipay_root_cert_sn),若接口加签方式选择为公钥,则代码必须为普通公钥加签。
6请求参数问题,建议只传必传参数测试核实(沙箱调试客户端请开启沙箱联调代码)。
7密钥匹配问题,代码中设置的私钥和应用中上传的应用公钥不匹配。
卖家账户状态异常,请联系卖家解决。(t1)
商家收款账号存在异常,建议商家拨打联系电话 4007585858 处理。
系统繁忙,请稍后再试
请按照 app 支付常见问题 中客户端返回具体报错定位。
订单已付款成功,请勿重复提交。(alin42279)
该笔订单已支付完成,不可使用相同的商家订单号发起请求。
花呗分期暂不可用,请更换付款方式
1用户尚未开通花呗或花呗可用额度不足。
2花呗分期额度过小或超支(建议设置 200 元测试)。
3收款账号未开通花呗分期协议或接口不支持花呗分期收款。
4账号存在风险。
5接口设置支付渠道,禁用花呗分期。
订单已超时,请重新下单后再发起付款(alin47094)
接口传入了超时参数,未在交易超时前支付,建议更换新的订单号 out_trade_no 重新请求。
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图