修改接口定义,增加了退款接口
diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/payapi/model/ErrorResponse.java b/payapi-common/src/main/java/com/supwisdom/dlpay/payapi/model/ErrorResponse.java
new file mode 100644
index 0000000..6a239b0
--- /dev/null
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/payapi/model/ErrorResponse.java
@@ -0,0 +1,106 @@
+package com.supwisdom.dlpay.payapi.model;
+
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.openapitools.jackson.nullable.JsonNullable;
+import javax.validation.Valid;
+import javax.validation.constraints.*;
+
+/**
+ * ErrorResponse
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2020-03-16T21:13:31.022+08:00[Asia/Shanghai]")
+
+public class ErrorResponse {
+ @JsonProperty("code")
+ private String code;
+
+ @JsonProperty("message")
+ private String message;
+
+ public ErrorResponse code(String code) {
+ this.code = code;
+ return this;
+ }
+
+ /**
+ * Get code
+ * @return code
+ */
+ @ApiModelProperty(value = "")
+
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public ErrorResponse message(String message) {
+ this.message = message;
+ return this;
+ }
+
+ /**
+ * Get message
+ * @return message
+ */
+ @ApiModelProperty(required = true, value = "")
+ @NotNull
+
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ErrorResponse errorResponse = (ErrorResponse) o;
+ return Objects.equals(this.code, errorResponse.code) &&
+ Objects.equals(this.message, errorResponse.message);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(code, message);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ErrorResponse {\n");
+
+ sb.append(" code: ").append(toIndentedString(code)).append("\n");
+ sb.append(" message: ").append(toIndentedString(message)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(java.lang.Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
+
diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/payapi/model/RefundRequest.java b/payapi-common/src/main/java/com/supwisdom/dlpay/payapi/model/RefundRequest.java
new file mode 100644
index 0000000..95d3245
--- /dev/null
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/payapi/model/RefundRequest.java
@@ -0,0 +1,185 @@
+package com.supwisdom.dlpay.payapi.model;
+
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.openapitools.jackson.nullable.JsonNullable;
+import javax.validation.Valid;
+import javax.validation.constraints.*;
+
+/**
+ * RefundRequest
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2020-03-16T21:13:31.022+08:00[Asia/Shanghai]")
+
+public class RefundRequest {
+ @JsonProperty("billno")
+ private String billno;
+
+ @JsonProperty("transDate")
+ private String transDate;
+
+ @JsonProperty("transTime")
+ private String transTime;
+
+ @JsonProperty("refno")
+ private String refno;
+
+ @JsonProperty("amount")
+ private Integer amount;
+
+ public RefundRequest billno(String billno) {
+ this.billno = billno;
+ return this;
+ }
+
+ /**
+ * Get billno
+ * @return billno
+ */
+ @ApiModelProperty(required = true, value = "")
+ @NotNull
+
+@Pattern(regexp="[0-9]*") @Size(min=16)
+ public String getBillno() {
+ return billno;
+ }
+
+ public void setBillno(String billno) {
+ this.billno = billno;
+ }
+
+ public RefundRequest transDate(String transDate) {
+ this.transDate = transDate;
+ return this;
+ }
+
+ /**
+ * Get transDate
+ * @return transDate
+ */
+ @ApiModelProperty(required = true, value = "")
+ @NotNull
+
+@Pattern(regexp="[0-9]*") @Size(min=8,max=8)
+ public String getTransDate() {
+ return transDate;
+ }
+
+ public void setTransDate(String transDate) {
+ this.transDate = transDate;
+ }
+
+ public RefundRequest transTime(String transTime) {
+ this.transTime = transTime;
+ return this;
+ }
+
+ /**
+ * Get transTime
+ * @return transTime
+ */
+ @ApiModelProperty(required = true, value = "")
+ @NotNull
+
+@Pattern(regexp="[0-9]*") @Size(min=6,max=6)
+ public String getTransTime() {
+ return transTime;
+ }
+
+ public void setTransTime(String transTime) {
+ this.transTime = transTime;
+ }
+
+ public RefundRequest refno(String refno) {
+ this.refno = refno;
+ return this;
+ }
+
+ /**
+ * Get refno
+ * @return refno
+ */
+ @ApiModelProperty(required = true, value = "")
+ @NotNull
+
+@Pattern(regexp="[0-9]*") @Size(min=16)
+ public String getRefno() {
+ return refno;
+ }
+
+ public void setRefno(String refno) {
+ this.refno = refno;
+ }
+
+ public RefundRequest amount(Integer amount) {
+ this.amount = amount;
+ return this;
+ }
+
+ /**
+ * Get amount
+ * @return amount
+ */
+ @ApiModelProperty(required = true, value = "")
+ @NotNull
+
+
+ public Integer getAmount() {
+ return amount;
+ }
+
+ public void setAmount(Integer amount) {
+ this.amount = amount;
+ }
+
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ RefundRequest refundRequest = (RefundRequest) o;
+ return Objects.equals(this.billno, refundRequest.billno) &&
+ Objects.equals(this.transDate, refundRequest.transDate) &&
+ Objects.equals(this.transTime, refundRequest.transTime) &&
+ Objects.equals(this.refno, refundRequest.refno) &&
+ Objects.equals(this.amount, refundRequest.amount);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(billno, transDate, transTime, refno, amount);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class RefundRequest {\n");
+
+ sb.append(" billno: ").append(toIndentedString(billno)).append("\n");
+ sb.append(" transDate: ").append(toIndentedString(transDate)).append("\n");
+ sb.append(" transTime: ").append(toIndentedString(transTime)).append("\n");
+ sb.append(" refno: ").append(toIndentedString(refno)).append("\n");
+ sb.append(" amount: ").append(toIndentedString(amount)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(java.lang.Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
+
diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/payapi/model/RefundResponse.java b/payapi-common/src/main/java/com/supwisdom/dlpay/payapi/model/RefundResponse.java
new file mode 100644
index 0000000..0853573
--- /dev/null
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/payapi/model/RefundResponse.java
@@ -0,0 +1,182 @@
+package com.supwisdom.dlpay.payapi.model;
+
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.supwisdom.dlpay.payapi.model.TransResult;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.openapitools.jackson.nullable.JsonNullable;
+import javax.validation.Valid;
+import javax.validation.constraints.*;
+
+/**
+ * RefundResponse
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2020-03-16T21:13:31.022+08:00[Asia/Shanghai]")
+
+public class RefundResponse {
+ @JsonProperty("billno")
+ private String billno;
+
+ @JsonProperty("hostDate")
+ private String hostDate;
+
+ @JsonProperty("hostTime")
+ private String hostTime;
+
+ @JsonProperty("refno")
+ private String refno;
+
+ @JsonProperty("result")
+ private TransResult result;
+
+ public RefundResponse billno(String billno) {
+ this.billno = billno;
+ return this;
+ }
+
+ /**
+ * Get billno
+ * @return billno
+ */
+ @ApiModelProperty(value = "")
+
+@Pattern(regexp="[0-9]*") @Size(min=16)
+ public String getBillno() {
+ return billno;
+ }
+
+ public void setBillno(String billno) {
+ this.billno = billno;
+ }
+
+ public RefundResponse hostDate(String hostDate) {
+ this.hostDate = hostDate;
+ return this;
+ }
+
+ /**
+ * Get hostDate
+ * @return hostDate
+ */
+ @ApiModelProperty(value = "")
+
+@Pattern(regexp="[0-9]*") @Size(min=8,max=8)
+ public String getHostDate() {
+ return hostDate;
+ }
+
+ public void setHostDate(String hostDate) {
+ this.hostDate = hostDate;
+ }
+
+ public RefundResponse hostTime(String hostTime) {
+ this.hostTime = hostTime;
+ return this;
+ }
+
+ /**
+ * Get hostTime
+ * @return hostTime
+ */
+ @ApiModelProperty(value = "")
+
+@Pattern(regexp="[0-9]*") @Size(min=6,max=6)
+ public String getHostTime() {
+ return hostTime;
+ }
+
+ public void setHostTime(String hostTime) {
+ this.hostTime = hostTime;
+ }
+
+ public RefundResponse refno(String refno) {
+ this.refno = refno;
+ return this;
+ }
+
+ /**
+ * Get refno
+ * @return refno
+ */
+ @ApiModelProperty(value = "")
+
+@Pattern(regexp="[0-9]*") @Size(min=16)
+ public String getRefno() {
+ return refno;
+ }
+
+ public void setRefno(String refno) {
+ this.refno = refno;
+ }
+
+ public RefundResponse result(TransResult result) {
+ this.result = result;
+ return this;
+ }
+
+ /**
+ * Get result
+ * @return result
+ */
+ @ApiModelProperty(value = "")
+
+ @Valid
+
+ public TransResult getResult() {
+ return result;
+ }
+
+ public void setResult(TransResult result) {
+ this.result = result;
+ }
+
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ RefundResponse refundResponse = (RefundResponse) o;
+ return Objects.equals(this.billno, refundResponse.billno) &&
+ Objects.equals(this.hostDate, refundResponse.hostDate) &&
+ Objects.equals(this.hostTime, refundResponse.hostTime) &&
+ Objects.equals(this.refno, refundResponse.refno) &&
+ Objects.equals(this.result, refundResponse.result);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(billno, hostDate, hostTime, refno, result);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class RefundResponse {\n");
+
+ sb.append(" billno: ").append(toIndentedString(billno)).append("\n");
+ sb.append(" hostDate: ").append(toIndentedString(hostDate)).append("\n");
+ sb.append(" hostTime: ").append(toIndentedString(hostTime)).append("\n");
+ sb.append(" refno: ").append(toIndentedString(refno)).append("\n");
+ sb.append(" result: ").append(toIndentedString(result)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(java.lang.Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
+
diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/payapi/model/TransResult.java b/payapi-common/src/main/java/com/supwisdom/dlpay/payapi/model/TransResult.java
new file mode 100644
index 0000000..ef33e03
--- /dev/null
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/payapi/model/TransResult.java
@@ -0,0 +1,46 @@
+package com.supwisdom.dlpay.payapi.model;
+
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonValue;
+import org.openapitools.jackson.nullable.JsonNullable;
+import javax.validation.Valid;
+import javax.validation.constraints.*;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+
+/**
+ * Gets or Sets TransResult
+ */
+public enum TransResult {
+
+ SUCCESS("success"),
+
+ FAILED("failed"),
+
+ ALREADY_SUCCESS("already_success"),
+
+ REQUIRE_QUERY("require_query");
+
+ private String value;
+
+ TransResult(String value) {
+ this.value = value;
+ }
+
+ @Override
+ @JsonValue
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ @JsonCreator
+ public static TransResult fromValue(String value) {
+ for (TransResult b : TransResult.values()) {
+ if (b.value.equals(value)) {
+ return b;
+ }
+ }
+ throw new IllegalArgumentException("Unexpected value '" + value + "'");
+ }
+}
+
diff --git a/payapi-spec/consumeapi.yaml b/payapi-spec/consumeapi.yaml
index 1aa2630..80df543 100644
--- a/payapi-spec/consumeapi.yaml
+++ b/payapi-spec/consumeapi.yaml
@@ -1,17 +1,5 @@
components:
schemas:
- ErrorResponse:
- type: object
- title: 请求错误
- required:
- - message
- properties:
- code:
- type: string
- title: 错误码
- message:
- type: string
- title: 错误信息
QrcodePayInitRequest:
type: object
title: QrCode请求初始化
@@ -97,12 +85,47 @@
title: 交易描述
result:
title: 交易结果
- type: string
- enum:
- - success
- - require_query
- - already_success
- - failed
+ $ref: 'definitions.yaml#/components/schemas/TransResult'
+ RefundRequest:
+ type: object
+ title: 退款申请
+ required:
+ - billno
+ - transDate
+ - transTime
+ - refno
+ - amount
+ properties:
+ billno:
+ title: 退款申请订单号
+ $ref: 'definitions.yaml#/components/schemas/Refno'
+ transDate:
+ $ref: 'definitions.yaml#/components/schemas/TransDate'
+ transTime:
+ $ref: 'definitions.yaml#/components/schemas/TransTime'
+ refno:
+ title: 退款申请原始订单交易参考号
+ $ref: 'definitions.yaml#/components/schemas/Refno'
+ amount:
+ type: integer
+ title: 退款金额, 正式
+ RefundResponse:
+ type: object
+ title: 退款申请应答
+ properties:
+ billno:
+ title: 退款申请订单号
+ $ref: 'definitions.yaml#/components/schemas/Refno'
+ hostDate:
+ $ref: 'definitions.yaml#/components/schemas/TransDate'
+ hostTime:
+ $ref: 'definitions.yaml#/components/schemas/TransTime'
+ refno:
+ title: 退款申请原始订单交易参考号
+ $ref: 'definitions.yaml#/components/schemas/Refno'
+ result:
+ title: 退款处理结果
+ $ref: 'definitions.yaml#/components/schemas/TransResult'
paths:
qrcodePayInit:
@@ -130,7 +153,8 @@
description: 请求错误
content:
application/json:
- $ref: '#/components/schemas/ErrorResponse'
+ schema:
+ $ref: 'definitions.yaml#/components/schemas/ErrorResponse'
qrcodePayConfirm:
parameters:
- $ref: definitions.yaml#/components/headers/TenantId
@@ -155,12 +179,14 @@
description: 交易正忙,稍后重试
content:
application/json:
- $ref: '#/components/schemas/ErrorResponse'
+ schema:
+ $ref: 'definitions.yaml#/components/schemas/ErrorResponse'
'default':
description: 交易失败
content:
application/json:
- $ref: '#/components/schemas/ErrorResponse'
+ schema:
+ $ref: 'definitions.yaml#/components/schemas/ErrorResponse'
qrcodePayQuery:
parameters:
- $ref: 'definitions.yaml#/components/headers/TenantId'
@@ -181,10 +207,77 @@
description: 查询成功
content:
application/json:
- $ref: '#/components/schemas/QrcodePayConfirmResponse'
+ schema:
+ $ref: '#/components/schemas/QrcodePayConfirmResponse'
'default':
description: 查询失败
content:
application/json:
- $ref: '#/components/schemas/ErrorResponse'
-
+ schema:
+ $ref: 'definitions.yaml#/components/schemas/ErrorResponse'
+ refund:
+ parameters:
+ - $ref: 'definitions.yaml#/components/headers/TenantId'
+ post:
+ description: 退款交易
+ tags:
+ - pos
+ operationId: refund
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RefundRequest'
+ responses:
+ '200':
+ description: 退款申请成功,等待查询
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RefundResponse'
+ '409':
+ description: 退款申请失败,订单号已存在或正在退款中
+ content:
+ application/json:
+ schema:
+ $ref: 'definitions.yaml#/components/schemas/ErrorResponse'
+ default:
+ description: 退款申请失败
+ content:
+ application/json:
+ schema:
+ $ref: 'definitions.yaml#/components/schemas/ErrorResponse'
+ refundQuery:
+ parameters:
+ - $ref: 'definitions.yaml#/components/headers/TenantId'
+ - name: billno
+ in: path
+ description: 退款订单号
+ required: true
+ schema:
+ type: string
+ title: 退款订单号
+ get:
+ description: 退款申请查询
+ tags:
+ - pos
+ operationId: refundQuery
+ responses:
+ '200':
+ description: 退款申请查询成功
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RefundResponse'
+ '404':
+ description: 退款申请订单不存在
+ content:
+ application/json:
+ schema:
+ $ref: 'definitions.yaml#/components/schemas/ErrorResponse'
+ default:
+ description: 退款申请失败
+ content:
+ application/json:
+ schema:
+ $ref: 'definitions.yaml#/components/schemas/ErrorResponse'
diff --git a/payapi-spec/definitions.yaml b/payapi-spec/definitions.yaml
index fea5324..89e374d 100644
--- a/payapi-spec/definitions.yaml
+++ b/payapi-spec/definitions.yaml
@@ -10,6 +10,18 @@
schemas:
+ ErrorResponse:
+ type: object
+ title: 请求错误
+ required:
+ - message
+ properties:
+ code:
+ type: string
+ title: 错误码
+ message:
+ type: string
+ title: 错误信息
TransDate:
type: string
title: 交易日期
@@ -38,3 +50,10 @@
- plain
- base64
- hex
+ TransResult:
+ type: string
+ enum:
+ - success
+ - failed
+ - already_success
+ - require_query
diff --git a/payapi-spec/payapi-spec.yaml b/payapi-spec/payapi-spec.yaml
index 1b432bc..0c8efe9 100644
--- a/payapi-spec/payapi-spec.yaml
+++ b/payapi-spec/payapi-spec.yaml
@@ -11,3 +11,7 @@
$ref: consumeapi.yaml#/components/paths/qrcodePayConfirm
/consume/qrcode/query/{refno}:
$ref: consumeapi.yaml#/components/paths/qrcodePayQuery
+ /consume/refund:
+ $ref: consumeapi.yaml#/components/paths/refund
+ /consume/refund/query/{billno}:
+ $ref: consumeapi.yaml#/components/paths/refundQuery