银联商务天满服务平台
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/upg/get-voucher";
        //开发者ID
        String appId = "平台分配";
        //开发者秘钥
        String appKey = "平台分配";
        //实例化客户端
        ConfigBean configBean = new ConfigBean();
        OpenApiContext context = new OpenApiContext();
        String request = "{\"requestTimestamp\":\"2022-04-19 15:40:03\",
                    \"mid\":\"898201612345678\",
                    \"tid\":\"88880001\",
                    \"merOrderId\":\"327M202204141724489725391331\",
                    \"msgId\":\"001\",
                    \"srcReserve\":\"保留字段\",
                    \"instMid\":\"WGDEFAULT\"}";
        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/upg/get-voucher";
        $data = json_encode(array("requestTimestamp"=>"2022-04-19 15=>40=>03",
                    "mid"=>"898201612345678",
                    "tid"=>"88880001",
                    "merOrderId"=>"327M202204141724489725391331",
                    "msgId"=>"001",
                    "srcReserve"=>"保留字段",
                    "instMid"=>"WGDEFAULT"));
        $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/upg/get-voucher"

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-19 15:40:03\",
                    \"mid\":\"898201612345678\",
                    \"tid\":\"88880001\",
                    \"merOrderId\":\"327M202204141724489725391331\",
                    \"msgId\":\"001\",
                    \"srcReserve\":\"保留字段\",
                    \"instMid\":\"WGDEFAULT\"})
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/upg/get-voucher
  • 测试环境: POST https://test-api-open.chinaums.com/v1/netpay/upg/get-voucher

描述:支持获取以系统当前清算日期为准一年内交易类型为企业网关支付、企业网关无跳转支付交易,业务功能为全额消费交易对应的电子回单

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-19 15:40:03
mid string 8..32 商户号 898201612345678
tid string 2..32 终端号 88880001
merOrderId string 6..64 商户订单号 这里需要填入原交易订单号 327M202204141724489725391331
msgId string <=64 消息ID 001
srcReserve string <=255 请求系统预留字段 保留字段
instMid string 8..32 业务类型 H5DEFAULT WGDEFAULT

响应示例

{
  "errCode":"",
  "errMsg":"",
  "responseTimestamp":"",
  "bizTp":"",
  "transSsn":"",
  "settleDate":"",
  "stlDesc":"",
  "mchntNo":"",
  "voucherBatchNo":"",
  "voucherNo":"",
  "voucherType":"",
  "voucherName":"",
  "oriTransType":"",
  "orgTransDate":"",
  "oriTransSsn":"",
  "oriBizFunc":"",
  "msgId":"",
  "srcReserve":""
}

响应参数

名称 类型 必填 最大长度 描述 示例值
errCode string <=64 错误代码
平台错误码
业务错误码
errMsg string <=255 错误信息
responseTimestamp string 报文响应时间 格式yyyy-MM-dd HH:mm:ss
bizTp string 业务种类
transSsn string 交易流水号
settleDate string 清算日期
stlDesc string 清算信息
mchntNo string 商户编码
voucherBatchNo string 凭证批次号
voucherNo string 凭证编号
voucherType string 凭证类型
voucherName string 凭证名称
oriTransType string 原交易类型
orgTransDate string 原交易日期时间
oriTransSsn string 原交易流水号
oriBizFunc string 原业务功能
msgId string <=64 消息ID,原样返回
srcReserve string <=255 请求系统预留字段

错误码