接口名称:统一收单交易关闭接口
英文名称:alipay.trade.close
主要用于订单创建后,关闭一定时间内没有支付的订单信息
一、文档地址
官方文档地址:[url]https://docs.open.alipay.com/api_1/alipay.trade.close[/url]
二、开发前准备工作
调用步骤:[url]https://openclub.alipay.com/read.php?tid=12194&fid=69[/url]
注意事项:1、支持沙箱测试;2、需签约并添加功能;3、支持第三方调用。
如何签约以及签约无法成功等相关签约问题:[url]https://openclub.alipay.com/read.php?tid=276&fid=72[/url]
注:该接口为辅助接口,只要签约当面付、手机网站支付、电脑网站支付和APP支付,四个支付接口中其中一个就可以调用。
三、接口集成代码示例
1、参数说明
(1)out_trade_no:商户订单号,该参数值为退款接口中设置的out_trade_no参数值;
(2)trade_no:支付宝交易号,该参数值为支付接口订单创建后,退款接口设置的trade_no参数值;
注:out_trade_no和trade_no至少必传其中一个参数,两者同时设置优先取值trade_no。
2、JAVA版请求示例
public static void main(String[] args)throws AlipayApiException { AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type); AlipayTradeCloseRequest request = new AlipayTradeCloseRequest(); AlipayTradeCloseModel model = new AlipayTradeCloseModel(); model.setOutTradeNo("page2018727205734612444550"); // model.setTradeNo("2019032622001494891000009754"); request.setBizModel(model); AlipayTradeCloseResponse response = alipayClient.execute(request); if(response.isSuccess()){ System.out.println("调用成功"); } else { System.out.println("调用失败"); } System.out.println(response.getBody()); }
响应参数
{"alipay_trade_close_response":{"code":"10000","msg":"Success","out_trade_no":"page2018727205734612444550","trade_no":"2019032622001494891000009754"},"sign":"PBq1QUBMhnBN6OWz3uLBxKY/8ep70OiIFr8eJB7/EjCtCowkGsXvNhkPzKdRByYlfvq2B+mjmaa2/DL1Gr32IOSZN+noxNUabnmYEmZCmTw3QzImcG+kQMovezo1SU+7TMhkvdvqEWOuBctK99BgGtSFdc6XyzZC5IFq4o6CoLyvOD3iMJ5xSghsr6AdM0pT/srIkZONEI0zt3wyA0fkMzteP8b9gPjr+qRDTq5gJWXKXFzMdzm+HpW0y2WYF4r+RqsYOgMSs91F1xkJCsK27etGfUM25vLPNPrj9DEqQOaY++J6MdvcdPoVcifZNY7OC4fsUNiNkjckJ7nrxoR/Nw=="}
3、PHP版请求示例
<?php require_once 'AopSdk.php'; $aop = new AopClient (); $aop->appId = '填写您的appid'; $aop->rsaPrivateKey = '填写您的私钥'; $aop->alipayrsaPublicKey='填写您的支付宝公钥'; $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->apiVersion = '1.0'; $aop->signType = 'RSA2'; $aop->postCharset='utf-8'; $aop->format='json'; $date=date("YmdHis"); $arr=range(1000,9999); shuffle($arr); $request = new AlipayTradeCloseRequest(); $request->setBizContent("{" . ""out_trade_no":"page2018727205734612444550"," . ""trade_no":"2019032622001494891000009754"" . " }"); $result = $aop->execute($request); //第三方调用 //$result = $aop->execute($request,"","app_auth_token"); echo json_encode($result);
响应参数
{"alipay_trade_close_response":{"code":"10000","msg":"Success","out_trade_no":"page2018727205734612444550","trade_no":"2019032622001494891000009754"},"sign":"PBq1QUBMhnBN6OWz3uLBxKY/8ep70OiIFr8eJB7/EjCtCowkGsXvNhkPzKdRByYlfvq2B+mjmaa2/DL1Gr32IOSZN+noxNUabnmYEmZCmTw3QzImcG+kQMovezo1SU+7TMhkvdvqEWOuBctK99BgGtSFdc6XyzZC5IFq4o6CoLyvOD3iMJ5xSghsr6AdM0pT/srIkZONEI0zt3wyA0fkMzteP8b9gPjr+qRDTq5gJWXKXFzMdzm+HpW0y2WYF4r+RqsYOgMSs91F1xkJCsK27etGfUM25vLPNPrj9DEqQOaY++J6MdvcdPoVcifZNY7OC4fsUNiNkjckJ7nrxoR/Nw=="}
4、.NET版请求示例
IAopClient client = new DefaultAopClient(config.gatewayUrl, config.app_id, config.private_key, "json", "1.0", "RSA2", config.alipay_public_key, config.charset, false); AlipayTradeCloseRequest request = new AlipayTradeCloseRequest(); request.BizContent = "{" + ""out_trade_no":"20190322ygyg45484787400001"" + // ""trade_no":"20190321ygyg45447000001"" + "}"; AlipayTradeCloseResponse response = client.Execute(request);
响应参数返回示例:
{"alipay_trade_close_response":{"code":"10000","msg":"Success","out_trade_no":"20190322ygyg45484787400001","trade_no":"2019032622001401091000012168"},"sign":"kI06QoSZCMnrUowRja9Pr5u+uvCD8OAz2eDcHje2WWWIiTgCnOeN8/84eQ1rIuoOGBOh/XDqsdNut3YQiC5s/8nppaOYR/REfxFuxx98lwWZ/G5TQpyGg8FOJlHmPln0u4K2vlSeiYUGExwCuoCeL8TiBCrq+QLttUEYjCV8E63HcP86rb4MQLKewAFyUMldKLRcYDHaiOyqPbxVOfqkXtX8CROr/vX4pF7u2n0OPFq77qHbvyFAGy7VLffxVDOGEDUKuOBXiKlxln/UnB1D5UNScbZhOoUrkBko9J6zCRtMc2AzM7rqQUAEYY8Gzn8oeRplAVOL6j3xHcWrO/R6LA=="}
四、注意事项
1、订单关闭要求
必须在订单创建后,一定时间内没有支付的交易:交易状态必须是WAIT_BUYER_PAY;
若没有设置超时参数,系统默认已创建未支付的订单关闭时间为15天。
2、如何关闭已创建订单
(1)可通过关闭接口进行关闭已创建订单;
(2)可通过支付接口中设置timeout_express或time_expire参数进行控制,具体参考对应支付接口参数说明。
timeout_express参数详解:[url]https://openclub.alipay.com/read.php?tid=1696&fid=72[/url]
time_expire参数详解:[url]https://openclub.alipay.com/read.php?tid=4182&fid=62[/url]
2、关闭接口和撤销接口的区别
关闭接口:用于订单创建后,关闭一定时间内没有支付的订单信息。
撤销接口:只有发生支付系统超时或者支付结果未知时可调用撤销,其他正常支付的订单如需实现相同功能请调用退款接口。
注:(1)撤销接口在提交支付交易后调用【查询订单API】,没有明确的支付结果再调用【撤销订单API】。
(2)撤销接口只能用于当面付接口产生的交易,关闭接口可用于四大支付接口产品的交易。
3、关闭是否触发异步通知
根据文档异步触发条件,只有手机网站支付和APP支付交易关闭(trade_close)才会触发异步通知,具体参考各接口异步触发条件:
当面付异步触发条件:[url]https://docs.open.alipay.com/194/103296/#s1[/url]
电脑网站支付异步触发条件:[url]https://docs.open.alipay.com/270/105902/#s2[/url]
手机网站支付异步触发条件:[url]https://docs.open.alipay.com/203/105286/#s2[/url]
APP网站支付异步触发条件:[url]https://docs.open.alipay.com/204/105301/#a-nameoxi0vga%E9%80%9A%E7%9F%A5%E8%A7%A6%E5%8F%91%E6%9D%A1%E4%BB%B6[/url]
如果还是报错,请按如下方式进行提问:
正确提问方式:使用环境(沙箱还是正式环境)+接口名称(中文+英文)+ 请求参数 + 报错信息详情