inquiryExchange

POST: /amsin/api/v1/business/fund/inquiryExchange

需要签名验签

集成商可使用此接口查询外汇交割结果。

接口结构

万里汇接口报文结构包括:请求头,请求体。关于头信息,详见:

请求参数

字段名

数据类型

是否必填

描述

exchangeRequestId

字符串

由集成商定义,代表本次外汇交割到户请求的唯一ID。

更多信息:

  • 字段最大长度:128

响应参数

字段名

数据类型

是否必填

描述

result

Result 对象

代表接口调用结果

exchangeResult

Result 对象

外汇交割到户请求结果。参见:响应处理

exchangeId

字符串

由万里汇定义的,本次外汇交割到户请求的唯一ID。

更多信息:

  • 字段最大长度:64

exchangeRequestId

字符串

由集成商定义,代表本次外汇交割到户请求的唯一ID。

更多信息:

sell

QuoteAmount 对象

卖出外汇金额

buy

QuoteAmount 对象

买入外汇金额

exchangeCreateTime

Datetime 对象

外汇交割到户请求的发起时间。

更多信息:

  • 此字段采用ISO 8601 标准时间戳。如:2018-09-03T00:00:00+08:00,或2019-01-01T01:01:01Z(UTC时间)

exchangeFinishTime

Datetime 对象

外汇交割到户请求的完成时间。

更多信息:

  • 此字段采用ISO 8601 标准时间戳。如:2018-09-03T00:00:00+08:00,或2019-01-01T01:01:01Z(UTC时间)

quote

Quote 对象

本次外汇交割到户请求的外汇汇率信息。

exchangeMode

字符串

外汇交割模式。取值范围:

  • REALTIME:实时交割
  • APPOINTED:指定日期交割

关于字段枚举值,详见: exchangeMode

exchangeTradeType

字符串

外汇交割类型。取值范围:

  • SPOT:即时汇率
  • FORWARD:远期汇率
  • UNFUNDED_SPOT: 远期汇率

关于字段枚举值,详见:exchangeTradeType

exchangeUnfundedInfo

ExchangeForwardInfo 对象

是(有条件必填)

远期外汇交割信息,当exchangeTradeType取值为FORWARDUNFUNDED_SPOT时此字段为必填。

响应处理

集成商调用接口之后,万里汇会返回给集成商以下两个字段:

  • result.resultStatus:API调用结果
  • dealResult.resultStatus:远期外汇交割结果

result.resultStatus取值范围为:

result.resultStatus

描述

S

API请求成功。

F

API请求失败。

失败原因参见结果码(即result.resultCoderesult.resultMessage

U

API响应结果为UNKNOWN(未知)时,需重试API请求。

重试策略:

  • 重试次数上限:7次
  • 重试时间间隔:5分钟、10分钟、20分钟、40分钟、80分钟、160分钟、320分钟

如果问题依旧,请联系万里汇技术支持。

结果码

result.resultCode

系统结果码

resultCode

resultStatus

resultMessage

处理建议

SUCCESS

S

Success

PARAM_ILLEGAL

F

Illegal parameters exist. For example, a non-numeric input, or an invalid date.

参考API文档页面,确认请求头和传参是否正确

UNKNOWN_EXCEPTION

U

API failed due to unknown reason.

服务器错误,若稍后重试问题依旧,联系万里汇技术支持以解决问题

REQUEST_TRAFFIC_EXCEED_LIMIT

U

The request traffic exceeds the limit.

重试,若问题依旧,联系万里汇技术支持

INVALID_API

F

The called API is invalid or not active.

确认是否调用正确的API

INVALID_CLIENT

F

The client is invalid.

Client ID不存在或无效

INVALID_SIGNATURE

F

The signature is invalid.

确认请求正确加签,具体参见:

METHOD_NOT_SUPPORTED

F

The server does not implement the requested HTTP method.

确认HTTP请求方法为POST

业务结果码

resultCode

resultStatus

resultMessage

处理建议

ORDER_NOT_EXIST

F

The order does not exist.

订单不存在,使用其他订单重试。

AUTHORIZATION_NOT_EXIST

F

The authorization does not exist.

当前授权关系不存在,请联系万里汇技术支持检查授权关系

CONTRACT_CHECK_FAIL

F

The contract check has failed.

检查合约状态后重试

exchangeResult.resultCode

resultCode

resultStatus

resultMessage

处理建议

SUCCESS

S

The settlement is successfully completed.

PROCESS_FAIL

F

A general business failure occurred. Do not retry.

需要人工介入,联系万里汇技术支持以解决此问题。

PROCESSING

S

The settlement is being processed.

订单已创建,处理中。调用inquiryExchange来获取结果或等待万里汇使用notifyExchange发送结果通知。

UNKNOWN_EXCEPTION

U

API failed due to an unknown reason.

服务器错误,若稍后重试问题依旧,联系万里汇技术支持以解决问题。

范例

请求

请求体范例

copy
{
    "exchangeRequestId": "*****"
}

请求代码范例

copy
var jsonStr="{\"exchangeRequestId\":\"*****\"}";
var client = new RestClient("http://{domain_name}.com/amsin/api/v1/business/fund/inquiryExchange");
var request = new RestRequest(Method.POST);
request.AddHeader("client-id","*****");
request.AddHeader("request-time","2022-05-17T11:19:20+08:00");
request.AddHeader("Content-Type","application/json");
request.AddHeader("signature","algorithm=RSA256,keyVersion=1,signature=RckSOIrxy%2FKqC%2FZQOO0t74U9U4TFVYKmW%2FZflFRut7W1hipos3NLBGdpzbulcc5Q7XwZP1t3qgTZMFrC%2FlzOQCOsBhUgelvEAuACu49PEGiAus8sU%2FFJa1HOIUmst3oWjLT%2BDqY083mR7jVwc5O2JYP08wNCLu55PFZtXHBUfwEAYoZInhgRoLtQTr%2F7Bphd7L9cS3xD3tluxbgkcaFr7NQVrfWJuQKp%2BFrabo6xZr%2FRHZRd%2FijALuUYYjXH92n4VFwSXSO%2B%2BUBVPoGyWWz1q3QJ2tHNVU7wpc3wtCwwB76pNfGTbJit%2BdylGU8O5UkW3TwSkNnpzepRABM8bBQpgQ%*****");
request.AddParameter("application/json; charset=utf-8", jsonStr, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
copy
url = "http://{domain_name}.com/amsin/api/v1/business/account/inquiryExchange"
headers = {
        "client-id": "*****",
        "request-time": "2022-05-17T11:19:20+08:00",
        "Content-Type": "application/json",
        "signature": "algorithm=RSA256,keyVersion=1,signature=RckSOIrxy%2FKqC%2FZQOO0t74U9U4TFVYKmW%2FZflFRut7W1hipos3NLBGdpzbulcc5Q7XwZP1t3qgTZMFrC%2FlzOQCOsBhUgelvEAuACu49PEGiAus8sU%2FFJa1HOIUmst3oWjLT%2BDqY083mR7jVwc5O2JYP08wNCLu55PFZtXHBUfwEAYoZInhgRoLtQTr%2F7Bphd7L9cS3xD3tluxbgkcaFr7NQVrfWJuQKp%2BFrabo6xZr%2FRHZRd%2FijALuUYYjXH92n4VFwSXSO%2B%2BUBVPoGyWWz1q3QJ2tHNVU7wpc3wtCwwB76pNfGTbJit%2BdylGU8O5UkW3TwSkNnpzepRABM8bBQpgQ%*****"
    }
datas ={"exchangeRequestId":"*****"}
res = requests.post(url=url, data=json.dumps(datas), headers=headers)
copy
CloseableHttpClient client = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost("http://{domain_name}.com/amsin/api/v1/business/fund/inquiryExchange");
httpPost.addHeader("client-id", "*****");
httpPost.addHeader("request-time", "2022-05-17T11:19:20+08:00");
httpPost.addHeader("signature","algorithm=RSA256,keyVersion=1,signature=RckSOIrxy%2FKqC%2FZQOO0t74U9U4TFVYKmW%2FZflFRut7W1hipos3NLBGdpzbulcc5Q7XwZP1t3qgTZMFrC%2FlzOQCOsBhUgelvEAuACu49PEGiAus8sU%2FFJa1HOIUmst3oWjLT%2BDqY083mR7jVwc5O2JYP08wNCLu55PFZtXHBUfwEAYoZInhgRoLtQTr%2F7Bphd7L9cS3xD3tluxbgkcaFr7NQVrfWJuQKp%2BFrabo6xZr%2FRHZRd%2FijALuUYYjXH92n4VFwSXSO%2B%2BUBVPoGyWWz1q3QJ2tHNVU7wpc3wtCwwB76pNfGTbJit%2BdylGU8O5UkW3TwSkNnpzepRABM8bBQpgQ%*****" );
httpPost.addHeader("Content-Type","application/json");
StringEntity entity = new StringEntity("{\"exchangeRequestId\":\"*****\"}");
httpPost.setEntity(entity);
CloseableHttpResponse response = client.execute(httpPost);
copy
var jsonStr="{\"exchangeRequestId\":\"*****\"}";
var client = "http://{domain_name}.com/amsin/api/v1/business/fund/inquiryExchange";
var xhr = new XMLHttpRequest;
xhr.open("POST",client,true);
xhr.setRequestHeader("client-id","*****");
xhr.setRequestHeader("request-time","2022-05-17T11:19:20+08:00");
xhr.setRequestHeader("Content-Type","application/json");
xhr.setRequestHeader("signature","algorithm=RSA256,keyVersion=1,signature=RckSOIrxy%2FKqC%2FZQOO0t74U9U4TFVYKmW%2FZflFRut7W1hipos3NLBGdpzbulcc5Q7XwZP1t3qgTZMFrC%2FlzOQCOsBhUgelvEAuACu49PEGiAus8sU%2FFJa1HOIUmst3oWjLT%2BDqY083mR7jVwc5O2JYP08wNCLu55PFZtXHBUfwEAYoZInhgRoLtQTr%2F7Bphd7L9cS3xD3tluxbgkcaFr7NQVrfWJuQKp%2BFrabo6xZr%2FRHZRd%2FijALuUYYjXH92n4VFwSXSO%2B%2BUBVPoGyWWz1q3QJ2tHNVU7wpc3wtCwwB76pNfGTbJit%2BdylGU8O5UkW3TwSkNnpzepRABM8bBQpgQ%*****");
xhr.send(jsonStr);  

响应

响应体范例

copy
{
    "buy": {
        "currency": "USD",
        "value": 231
    },
    "exchangeCreateTime": "2022-05-16T08:55:09Z",
    "exchangeFinishTime": "2022-05-16T08:55:16Z",
    "exchangeId": "*****",
    "exchangeMode": "APPOINTED",
    "exchangeRequestId": "*****",
    "exchangeResult": {
        "resultStatus": "S",
        "resultCode": "SUCCESS",
        "resultMessage": "success."
    },
    "exchangeTradeType": "SPOT",
    "quote": {
        "quoteCurrencyPair": "EUR/USD",
        "quoteExpiryTime": "2022-05-16T09:08:51Z",
        "quoteId": "*****",
        "quotePrice": "1.07461952",
        "quoteStartTime": "2022-05-16T08:53:51Z"
    },
    "result": {
        "resultStatus": "S",
        "resultCode": "SUCCESS",
        "resultMessage": "success."
    },
    "sell": {
        "currency": "EUR",
        "value": 215
    }
}

@2024 WorldFirst