银联商务天满服务平台
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/app-pre-order";
        //开发者ID
        String appId = "平台分配";
        //开发者秘钥
        String appKey = "平台分配";
        //实例化客户端
        ConfigBean configBean = new ConfigBean();
        OpenApiContext context = new OpenApiContext();
        String request = "{\"requestTimestamp\":\"2022-04-19 15:40:03\",
                    \"merOrderId\":\"327M202204141722322222\",
                    \"mid\":\"898201612345678\",
                    \"tid\":\"88880001\",
                    \"instMid\":\"WGDEFAULT\",
                    \"totalAmount\":\"1\",
                    \"msgId\":\"001\",
                    \"srcReserve\":\"保留字段\",
                    \"goods\":\"[{\"goodsId\":\"\",\"goodsName\":\"\",\"quantity\":\"\",\"price\":\"\",\"goodsCategory\":\"\",\"body\":\"\",\"subMerchantId\":\"\",\"merOrderId\":\"ZS2022041417223222\",\"subOrderAmount\":\"\"}]\",
                    \"attachedData\":\"\",
                    \"orderDesc\":\"\",
                    \"goodsTag\":\"\",
                    \"originalAmount\":\"\",
                    \"expireTime\":\"\",
                    \"notifyUrl\":\"\",
                    \"returnUrl\":\"\",
                    \"systemId\":\"\",
                    \"limitCreditCard\":\"\",
                    \"divisionFlag\":\"\",
                    \"platformAmount\":\"\",
                    \"subOrders\":\"[{\"mid\":\"\",\"merOrderId\":\"\",\"totalAmount\":\"\"}]\",
                    \"name\":\"\",
                    \"mobile\":\"\",
                    \"certType\":\"\",
                    \"certNo\":\"\",
                    \"fixBuyer\":\"\",
                    \"transType\":\"\",
                    \"bizType\":\"\",
                    \"chnlNo\":\"\",
                    \"chnlType\":\"\"}";
        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/app-pre-order";
        $data = json_encode(array("requestTimestamp"=>"2022-04-19 15=>40=>03",
                    "merOrderId"=>"327M202204141722322222",
                    "mid"=>"898201612345678",
                    "tid"=>"88880001",
                    "instMid"=>"WGDEFAULT",
                    "totalAmount"=>"1",
                    "msgId"=>"001",
                    "srcReserve"=>"保留字段",
                    "goods"=>"json_encode(array([{"goodsId"=>"","goodsName"=>"","quantity"=>"","price"=>"","goodsCategory"=>"","body"=>"","subMerchantId"=>"","merOrderId"=>"ZS2022041417223222","subOrderAmount"=>""}]))",
                    "attachedData"=>"",
                    "orderDesc"=>"",
                    "goodsTag"=>"",
                    "originalAmount"=>"",
                    "expireTime"=>"",
                    "notifyUrl"=>"",
                    "returnUrl"=>"",
                    "systemId"=>"",
                    "limitCreditCard"=>"",
                    "divisionFlag"=>"",
                    "platformAmount"=>"",
                    "subOrders"=>"json_encode(array([{"mid"=>"","merOrderId"=>"","totalAmount"=>""}]))",
                    "name"=>"",
                    "mobile"=>"",
                    "certType"=>"",
                    "certNo"=>"",
                    "fixBuyer"=>"",
                    "transType"=>"",
                    "bizType"=>"",
                    "chnlNo"=>"",
                    "chnlType"=>""));
        $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/app-pre-order"

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\",
                    \"merOrderId\":\"327M202204141722322222\",
                    \"mid\":\"898201612345678\",
                    \"tid\":\"88880001\",
                    \"instMid\":\"WGDEFAULT\",
                    \"totalAmount\":\"1\",
                    \"msgId\":\"001\",
                    \"srcReserve\":\"保留字段\",
                    \"goods\":\"[{\"goodsId\":\"\",\"goodsName\":\"\",\"quantity\":\"\",\"price\":\"\",\"goodsCategory\":\"\",\"body\":\"\",\"subMerchantId\":\"\",\"merOrderId\":\"ZS2022041417223222\",\"subOrderAmount\":\"\"}]\",
                    \"attachedData\":\"\",
                    \"orderDesc\":\"\",
                    \"goodsTag\":\"\",
                    \"originalAmount\":\"\",
                    \"expireTime\":\"\",
                    \"notifyUrl\":\"\",
                    \"returnUrl\":\"\",
                    \"systemId\":\"\",
                    \"limitCreditCard\":\"\",
                    \"divisionFlag\":\"\",
                    \"platformAmount\":\"\",
                    \"subOrders\":\"[{\"mid\":\"\",\"merOrderId\":\"\",\"totalAmount\":\"\"}]\",
                    \"name\":\"\",
                    \"mobile\":\"\",
                    \"certType\":\"\",
                    \"certNo\":\"\",
                    \"fixBuyer\":\"\",
                    \"transType\":\"\",
                    \"bizType\":\"\",
                    \"chnlNo\":\"\",
                    \"chnlType\":\"\"})
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"))

APP下单

URL

  • 生产环境: POST https://api-mop.chinaums.com/v1/netpay/upg/app-pre-order
  • 测试环境: POST https://test-api-open.chinaums.com/v1/netpay/upg/app-pre-order

描述:本接口为商户的订单信息发向银商网络支付前置系统以获取支付要素

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
merOrderId string 6..32 商户订单号 商户自行生成 327M202204141722322222
mid string 15 商户号 898201612345678
tid string 8 终端号 88880001
instMid string 8..32 业务类型 固定值:APPDEFAULT WGDEFAULT
totalAmount number 1..100000000 支付总金额 单位分 若divisionFlag为true,则:
totalAmount =subOrders字段中的所有totalAmount值之和
platformAmount值 =goods中的所有subOrderAmount值之和。
1
msgId string <=64 消息ID 原样返回 001
srcReserve string <=255 请求系统预留字段 保留字段
goods array 商品信息
   goodsId string 商品ID
   goodsName string 商品名称
   quantity string 商品数量
   price string 商品单价(分)
   goodsCategory string 商品分类
   body string 商品说明
   subMerchantId string 8..32 子商户号
   merOrderId string 6..32 商户子订单号 ZS2022041417223222
   subOrderAmount number 0..100000000 子商户商品总额
attachedData string <=255 商户附加数据
orderDesc string <=255 账单描述 不超过255个字节(微信支付:上送值不大于128个字节,超过128字节后的部分会被截掉;银联网关支付上送值不大于64个字节,超过64字节部分会被截断。)
goodsTag string <=32 商品标记 用于优惠活动
originalAmount number 1..100000000 订单原始金额 单位分,用于记录前端系统打折前的金额
expireTime string 订单过期时间 yyyy-MM-dd HH:mm:ss
notifyUrl string <=255 支付结果通知地址 异步往该地址发送支付结果通知
returnUrl string <=255 网页跳转地址 支付完成后将回跳该地址
systemId string <=32 系统ID
limitCreditCard string 是否需要限制信用卡支付 取值:true或false,默认false
divisionFlag boolean 分账标记 暂时只支持微信、支付宝支付、银联云闪付和网关支付。 若为true,则goods字段和subOrders字段不能同时为空,且secureTransaction字段上送false或不上送。
platformAmount number 0..100000000 平台商户分账金额 若分账标记传,则分账金额必传
subOrders array 子订单信息 在传分账标记的情况下,若传子商户号,子商户分账金额必传,即ubOrders每个元素的mid和totalAmount非空且mid不超过20个。(分账方案subOrders里子商户分账总额+platformAmount要与支付总额totalAmount相等)。 +详见接口下方备注部分
   mid string 8..32 子商户号
   merOrderId string 6..32 商户子订单号
   totalAmount number 0..100000000 子商户分账金额
name string <=32 姓名
1.无卡支付指定付款人时必传
2.支付宝实名认证时必传,
Base64编码
mobile string <=20 手机号
certType string <=32 证件类型
certNo string <=32 证件号
1.无卡支付指定付款人时必传
2.支付宝实名认证时必传,
Base64编码
fixBuyer string <=32 是否需要实名认证 需要实名认证时置为 T
transType string <=30 银联网关交易类型 注意:银联网关交易时需要填写。
个人网关支付:UPG_PERSONAL;
个人网关预授权:UPG_PERSONAL_PREAUTH;
企业网关支付:UPG_BUSINESS
bizType string <=30 银联网关业务种类 注意:银联网关交易时需要填写
chnlNo string <=16 网关渠道标识 注意:银联网关交易时需要填写
chnlType string <=10 受理渠道 注意:银联网关交易时需要填写。手机APP:APP

响应示例

{
  "errCode":"",
  "errMsg":"",
  "responseTimeStamp":"",
  "mid":"",
  "tid":"",
  "msgId":"",
  "srcReserve":"",
  "merName":0,
  "seqId":"",
  "settleRefId":"",
  "status":"",
  "totalAmount":0,
  "targetOrderId":"",
  "targetSys":"",
  "targetStatus":"",
  "payUrl":"",
  "payData":"",
  "targetMid":""
}

响应参数

名称 类型 必填 最大长度 描述 示例值
errCode string 错误代码
平台错误码
业务错误码
errMsg string 错误信息
responseTimeStamp string 报文应答时间 格式yyyy-MM-dd HH:mm:ss
mid string 15 商户号,原样返回
tid string 8 终端号,原样返回
msgId string <=64 消息ID,原样返回
srcReserve string <=255 请求系统预留字段
merName number 商户名称
seqId string 平台流水号
settleRefId string 清分ID 如果来源方传了bankRefId就等于bankRefId,否则等于seqId
status string 交易状态
totalAmount number 支付总金额
targetOrderId string 第三方订单号
targetSys string 目标平台代码
targetStatus string 目标平台状态
payUrl string 支付地址 下单成功后返回
payData string APP支付跳转数据 下单成功后返回
targetMid string 支付渠道商户号 各渠道情况不同,酌情转换

错误码