跳到主要内容

概述

取消支付(Cancel Payment)用于取消一笔尚未完成的支付。当支付处于允许取消的状态时,商户可以调用此接口主动终止支付流程。取消成功后,该支付将不再继续处理。

注意
  • 使用取消支付功能,需要联系Oceanpayment技术支持开通;
  • 取消支付仅适用于尚未完成的支付。对于已经成功完成的支付,请使用退款(Refund)功能。

使用场景

  1. 用户主动取消订单:用户在支付过程中返回商户网站,并取消当前订单;
  2. 商户订单已失效:超过支付有效期仍未完成支付,商户可以调用取消支付接口;
  3. 同一订单存在多个支付尝试:同一个商户订单可能由于用户重复点击、支付失败重试等原因产生多个支付记录,当订单有支付成功后,商户可以根据业务逻辑取消仍未完成的支付;
  4. 商户主动终止支付:当商户由于库存不足、商品下架、订单异常或其他业务原因,不再允许用户继续支付时,可以主动取消尚未完成的支付。

支付状态

取消支付通常适用于仍处于未完成状态的支付。

支付状态是否支持Cancel
成功
待处理(非预授权)
失败

流程图

取消支付

  1. 商户可通过订单号order_number和支付IDpayment_id指定需要关闭的支付订单。
curl -X POST '/gateway/service/auth'
-H 'Content-Type: application/x-www-form-urlencoded'
-d 'account=995149'
-d 'terminal=99514901'
-d 'signValue=6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b'
-d 'order_number=123456789'
-d 'payment_id=240528151145313026060'
-d 'payment_authType=4'
参数名类型长度是否必填描述
order_numberstring1-50商户网站订单号
payment_idstring1-50支付ID,Oceanpayment的支付唯一单号
payment_authTypeint1取消支付
  • 4

响应数据

<?xml version="1.0" encoding="utf-8"?>
<respon>
<account>995149</account>
<terminal>99514901</terminal>
<signValue>A75EBFFC5CF11EBBF752373115FD1CC1FF4472ACB338EF1E6F303594C656C3D0</signValue>
<order_number/>
<payment_id>240528151145313026060</payment_id>
<payment_status>1</payment_status>
<payment_details>80103:Order closed successfully</payment_details>
</respon>

操作结果

返回参数描述
payment_status操作结果状态
  • 1: 成功
  • 0: 失败
payment_details结果详情
  • 格式为:Code:Descrition

取消支付处理规则

  1. 前置判断:payment_authType = 4且已开启取消支付功能;
  2. payment_id存在正式交易:
交易类型当前交易状态处理逻辑payment_status(操作结果)payment_details
非预授权待处理直接关闭订单180103:Order closed successfully
非预授权失败不执行取消支付操作040014:Cannot cancel the unsuccessful order
非预授权成功不执行取消支付操作040014:Cannot cancel the unsuccessful order
预授权待处理不执行取消支付操作040014:Cannot cancel the unsuccessful order
拦截交易失败直接关闭订单150009:Order closed successfully