银联商务天满服务平台
Java PHP Python



import com.chinaums.open.api.OpenApiCache;
import com.chinaums.open.api.OpenApiContext;
import com.chinaums.open.api.constants.ConfigBean;
import com.chinaums.open.api.internal.util.http.HttpTransport;
import java.util.UUID;

public class OpenApiSdkTest {
    public static void main(String[] args) throws Exception{
        String url = "https://api-mop.chinaums.com/v1/netpay/refund-query";
        //开发者ID
        String appId = "平台分配";
        //开发者秘钥
        String appKey = "平台分配";
        //实例化客户端
        ConfigBean configBean = new ConfigBean();
        OpenApiContext context = new OpenApiContext();
        String request = "{\"requestTimestamp\":\"2022-04-15 10:47:59\",
                    \"merOrderId\":\"124S2023071980881897\",
                    \"instMid\":\"MINIDEFAULT\",
                    \"mid\":\"898310148160568\",
                    \"tid\":\"88880001\",
                    \"msgId\":\"0DUNOje1Bwtue6XinEs7DWhKS2NmUCVg\",
                    \"srcReserve\":\"保留字段\"}";
        context.setStartTime(System.currentTimeMillis());
        context.setRequestId(UUID.randomUUID().toString().replace("-", ""));
        context.setOpenServUrl(url.split("/v")[0].concat("/"));
        context.setApiServiceUrl(url);
        context.setVersion(url.split("/")[3]);
        context.setAppId(appId);
        context.setAppKey(appKey);
        context.setConfigBean(configBean);
        context.setServiceCode(url.split("/v")[1].substring(1));
        OpenApiCache.getCurrentToken(context);
        System.out.println(HttpTransport.getInstance().doPost(context, request));
    }
}
<?php
require_once "../utils/Log.php";
require_once "../utils/Tools.php";
require_once "../DefaultOpenApiClient.php";
class DataRequest

{
    public $url = "";
    public $serviceCode = "";
    public $apiVersion ="";
    public $needToken = true;
    public $needDataTag = false;
    public $data;

    function __construct($data, $url)
    {
        $this->data = $data;
        $apiVersion = preg_split("/[/]+/s",$url)[2];
        $this->apiVersion = $apiVersion;
        $serviceCode = strstr($url,$apiVersion);
        $this->url = strstr($url,"/".$apiVersion,true);
        $this->serviceCode = preg_replace("/^" . preg_quote($apiVersion, "/") . "/", "", $serviceCode);
    }
}

class DataDemo{
    public function main(){
        $appid = "平台分配";
        $appkey = "平台分配";
        $url = "https://api-mop.chinaums.com/v1/netpay/refund-query";
        $data = json_encode(array("requestTimestamp"=>"2022-04-15 10=>47=>59",
                    "merOrderId"=>"124S2023071980881897",
                    "instMid"=>"MINIDEFAULT",
                    "mid"=>"898310148160568",
                    "tid"=>"88880001",
                    "msgId"=>"0DUNOje1Bwtue6XinEs7DWhKS2NmUCVg",
                    "srcReserve"=>"保留字段"));
        $reqiest = new DataRequest($data,$url);
        $client = new DefaultOpenApiClient();
        $content = $client->execute($reqiest,$appid,$appkey);
        $obj = json_decode($content);
        print_r($obj->errCode);
        print_r($obj->errInfo);
    }
}
$p = new DataDemo();
$p->main();
?>
# -*- coding: utf-8 -*-
from webapi.DefaultOpenApiClient import DefaultOpenApiClient

url = "https://api-mop.chinaums.com/v1/netpay/refund-query"

class DataRequest(object):
    def __init__(self, data: dict) -> dict:
        self.data = data
        self.serviceCode = url[len(url.split("/v")[0])+len(url.split("/")[3])+1: len(url)]
        self.apiVersion = url.split("/")[3]
        self.needToken = True
        self.needDataTag = True

appId="平台分配"
appKey="平台分配"
client = DefaultOpenApiClient(appId, appKey)
cls = DataRequest({\"requestTimestamp\":\"2022-04-15 10:47:59\",
                    \"merOrderId\":\"124S2023071980881897\",
                    \"instMid\":\"MINIDEFAULT\",
                    \"mid\":\"898310148160568\",
                    \"tid\":\"88880001\",
                    \"msgId\":\"0DUNOje1Bwtue6XinEs7DWhKS2NmUCVg\",
                    \"srcReserve\":\"保留字段\"})
response = client.execute(cls)
print(str(response.get("data")))
print(response.get("errCode"))
print(response.get("errInfo"))
print(response.get("resultCode"))
print(response.get("resultInfo"))

退款查询

URL

  • 生产环境: POST https://api-mop.chinaums.com/v1/netpay/refund-query
  • 测试环境: POST https://test-api-open.chinaums.com/v1/netpay/refund-query

描述:钱包支付时,因通讯故障、服务器故障等原因,造成收银机最终没有收到退货结果通知,收银员不确定该笔退货后台处理结果,查询该笔退货交易订单在钱包后台的支付结果,并将退货结果返回给收银机。

ContentType:HTTP(S) + JSON

请求头

名称 必填 描述 示例值
Authorization 认证内容 (认证参考天满开发者中心->接入指引->平台认证方式:开发者中心 OPEN-BODY-SIG AppId="****",Timestamp="20170606135700",Nonce="99930a147f5353dd8a8f29a5329f37e9",Signature="IPmdGHYCcfN+mto0/02zkwoUF1NT3YqPKaUykMaec1T="

请求参数

名称 类型 必填 最大长度 描述 示例值
requestTimestamp string 报文请求时间 格式yyyy-MM-dd HH:mm:ss 2022-04-15 10:47:59
merOrderId string 6..32 商户订单号 退货订单号 124S2023071980881897
instMid string 8..32 业务类型 MINIDEFAULT MINIDEFAULT
mid string 15 商户号 898310148160568
tid string 8 终端号 88880001
msgId string <=64 消息ID 原样返回 0DUNOje1Bwtue6XinEs7DWhKS2NmUCVg
srcReserve string <=255 请求系统预留字段 保留字段

响应示例

{
  "errCode":"SUCCESS",
  "errMsg":"查询成功",
  "responseTimeStamp":"2022-04-15 10:47:59",
  "mid":"898310148160568",
  "tid":"88880001",
  "refundMerchantContribute":"500",
  "refundOtherContribute":"600",
  "msgId":"0DUNOje1Bwtue6XinEs7DWhKS2NmUCVg",
  "srcReserve":"保留字段",
  "refundStatus":"SUCCESS",
  "refundOrderId":"124S2023071980959975",
  "refundTargetOrderId":"50101606602023071990193380315",
  "seqId":"35316064757N",
  "settleRefId":"35316064757N",
  "status":"TRADE_SUCCESS",
  "totalAmount":"12400",
  "merName":"测试商户",
  "merOrderId":"124S2023071980881897",
  "targetOrderId":"50101006412023071920552876171",
  "targetSys":"WXPay",
  "targetStatus":"SUCCESS|SUCCESS",
  "targetMid":"2088510790622400",
  "bankCardNo":"",
  "bankInfo":"",
  "refundFunds":"现金:12400",
  "refundFundsDesc":"现金退款124.00",
  "payTime":"2022-04-15 10:47:59",
  "settleDate":"2022-04-15",
  "sendBackAmount":"12400",
  "yxlmAmount":"500",
  "refundInvoiceAmount":"600",
  "cardAttr":"",
  "mCardAmt":"",
  "totalRefundPromotionAmt":"0",
  "orderPromotionStatus":"0",
  "eventList":
  [
    {

    } 
  ],
  "oriInfo":
  {

  } 
}

响应参数

名称 类型 必填 最大长度 描述 示例值
errCode string 错误代码
平台错误码
业务错误码
SUCCESS
errMsg string 错误说明 查询成功
responseTimeStamp string 报文应答时间 格式yyyy-MM-dd HH:mm:ss 2022-04-15 10:47:59
mid string 15 商户号,原样返回 898310148160568
tid string 8 终端号,原样返回 88880001
refundMerchantContribute number - 商户出资优惠金额 目前支持微信返回,其他渠道产品规划中 500
refundOtherContribute number - 其他出资优惠金额 目前支持微信返回,其他渠道产品规划中 600
msgId string <=64 消息ID,原样返回 0DUNOje1Bwtue6XinEs7DWhKS2NmUCVg
srcReserve string <=255 请求系统预留字段 保留字段
refundStatus string 退款状态 SUCCESS
refundOrderId string 退货订单号 124S2023071980959975
refundTargetOrderId string 目标系统退货订单号 50101606602023071990193380315
seqId string 平台流水号 35316064757N
settleRefId string 清分ID 如果来源方传了bankRefId就等于bankRefId,否则等于seqId 35316064757N
status string 交易状态 TRADE_SUCCESS
totalAmount number 支付总金额 12400
merName string 商户名称 测试商户
merOrderId string 商户订单号 124S2023071980881897
targetOrderId string 第三方订单号 50101006412023071920552876171
targetSys string 目标平台代码 WXPay
targetStatus string 目标平台状态 SUCCESS
targetMid string 支付渠道商户号 2088510790622400
bankCardNo string 银行卡号
bankInfo string 银行信息
refundFunds string 退款渠道列表 示例:支付宝余额:33\ 现金:12400
refundFundsDesc string 退款渠道描述 现金退款124.00
payTime string 支付时间 格式yyyy-MM-dd HH:mm:ss 2022-04-15 10:47:59
settleDate string 结算日期 格式yyyy-MM-dd 2022-04-15
sendBackAmount string 商户实退金额 12400
yxlmAmount number 营销联盟优惠金额 仅享受联盟优惠的订单,查询返回 500
refundInvoiceAmount number 实付部分退款金额 600
cardAttr string - 卡属性 DEBIT_CARD(借记卡);CREDIT_CARD(贷记卡)
mCardAmt string - 支付宝渠道支卡通最终核销金额
totalRefundPromotionAmt number - 优惠退货金额(合计) 0
orderPromotionStatus number - 订单优惠状态 0:订单无优惠 1:订单有优惠但未找到 2:订单有优惠且信息完整 0
eventList array - 活动列表 单品营销优惠活动列表
oriInfo object - 原文信息 支付渠道侧信息chnlInfo: chnlCode:支付渠道名称(ACP/ALIPAY/WXPAY) promotionDetail:微信优惠详情(base64编码,channel_code= WXPAY场景必填,具体格式参考微信refund_detail字段说明) cupPromotionInfo:银联活动优惠详情(base64编码,channel_code= ACP场景必填,具体格式参考银联couponInfo) issAddiData:银联付款方附加数据(base64编码,channel_code= ACP场景必填,具体格式参考银联issAddnData) 收单机构侧信息acqInfo: refund_detail_item_list:支付宝优惠信息(base64编码,channel_code= ALIPAY场景必填,具体格式参考支付宝refund_detail_item_list) acqCode:收单机构名称(UMS) refundPromotionList:退货优惠详情(base64编码,acq_code =UMS场景必填,具体格式参考银联商务字段说明)

错误码