银联商务天满服务平台
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/webpay/pay";
        //开发者ID
        String appId = "平台分配";
        //开发者秘钥
        String appKey = "平台分配";
        //实例化客户端
        ConfigBean configBean = new ConfigBean();
        OpenApiContext context = new OpenApiContext();
        String request = "{\"requestTimestamp\":\"2022-03-20 15:50:10\",
                    \"merOrderId\":\"327M202204141724489725391331\",
                    \"mid\":\"898201612345678\",
                    \"tid\":\"88880001\",
                    \"instMid\":\"YUEDANDEFAULT\",
                    \"totalAmount\":\"1\",
                    \"msgId\":\"001\",
                    \"expireTime\":\"\",
                    \"srcReserve\":\"webpay\",
                    \"divisionFlag\":\"\",
                    \"platformAmount\":\"\",
                    \"goods\":\"[{\"goodsId\":\"\",\"goodsName\":\"\",\"quantity\":\"\",\"price\":\"\",\"goodsCategory\":\"\",\"body\":\"\",\"subMerchantId\":\"\",\"merOrderId\":\"\",\"subOrderAmount\":\"\"}]\",
                    \"subOrders\":\"[{\"mid\":\"898201612345678\",\"merOrderId\":\"\",\"totalAmount\":\"\"}]\",
                    \"attachedData\":\"336000_0003\",
                    \"orderDesc\":\"\",
                    \"goodsTag\":\"\",
                    \"originalAmount\":\"\",
                    \"notifyUrl\":\"\",
                    \"returnUrl\":\"\",
                    \"systemId\":\"\",
                    \"subOpenId\":\"\",
                    \"subAppId\":\"\",
                    \"name\":\"\",
                    \"mobile\":\"\",
                    \"certType\":\"\",
                    \"certNo\":\"\",
                    \"fixBuyer\":\"\",
                    \"limitCreditCard\":\"\",
                    \"secureTransaction\":\"\",
                    \"installmentNumber\":\"\",
                    \"preauthFlag\":\"\",
                    \"retCommParams\":\"{\"foodOrderType\":\"\",\"brandId\":\"\",\"storeId\":\"\",\"tableNo\":\"\",\"parkId\":\"\",\"vehicleNo\":\"\"}\",
                    \"thirdPartyInstalSubsFlag\":\"\",
                    \"feeRatio\":\"\",
                    \"costSubsidy\":\"\",
                    \"asynDivisionFlag\":\"\",
                    \"rstMipPay\":\"\",
                    \"qrCode\":\"\",
                    \"qrCodeType\":\"\",
                    \"disablePayChnl\":\"balance-余额 moneyFund-余额宝 debitCardExpress-借记卡快捷 creditCard-信用卡 pcredit-花呗 pcreditpayInstallment-花呗分期 coupon-红包 point-积分 promotion-优惠(包含实时优惠+商户优惠) voucher-营销券 mdiscount-商户优惠\",
                    \"authProtocolVersion\":\"\",
                    \"authProtocolNo\":\"\"}";
        context.setApiServiceUrl(url);
        context.setAppId(appId);
        context.setAppKey(appKey);
        context.setConfigBean(configBean);
        System.out.println(HttpTransport.getInstance().doGet(context, request));
    }
}
<?php
require_once "../utils/Log.php";
require_once "../DefaultOpenApiClient.php";

class DataDemo{
    public function main(){

        $appid = "平台分配";
        $appkey = "平台分配";
        $url = "https://api-mop.chinaums.com/v1/netpay/webpay/pay";
        $data = json_encode(array("requestTimestamp"=>"2022-03-20 15=>50=>10",
                    "merOrderId"=>"327M202204141724489725391331",
                    "mid"=>"898201612345678",
                    "tid"=>"88880001",
                    "instMid"=>"YUEDANDEFAULT",
                    "totalAmount"=>"1",
                    "msgId"=>"001",
                    "expireTime"=>"",
                    "srcReserve"=>"webpay",
                    "divisionFlag"=>"",
                    "platformAmount"=>"",
                    "goods"=>"json_encode(array([{"goodsId"=>"","goodsName"=>"","quantity"=>"","price"=>"","goodsCategory"=>"","body"=>"","subMerchantId"=>"","merOrderId"=>"","subOrderAmount"=>""}]))",
                    "subOrders"=>"json_encode(array([{"mid"=>"898201612345678","merOrderId"=>"","totalAmount"=>""}]))",
                    "attachedData"=>"336000_0003",
                    "orderDesc"=>"",
                    "goodsTag"=>"",
                    "originalAmount"=>"",
                    "notifyUrl"=>"",
                    "returnUrl"=>"",
                    "systemId"=>"",
                    "subOpenId"=>"",
                    "subAppId"=>"",
                    "name"=>"",
                    "mobile"=>"",
                    "certType"=>"",
                    "certNo"=>"",
                    "fixBuyer"=>"",
                    "limitCreditCard"=>"",
                    "secureTransaction"=>"",
                    "installmentNumber"=>"",
                    "preauthFlag"=>"",
                    "retCommParams"=>"{"foodOrderType"=>"","brandId"=>"","storeId"=>"","tableNo"=>"","parkId"=>"","vehicleNo"=>""}",
                    "thirdPartyInstalSubsFlag"=>"",
                    "feeRatio"=>"",
                    "costSubsidy"=>"",
                    "asynDivisionFlag"=>"",
                    "rstMipPay"=>"",
                    "qrCode"=>"",
                    "qrCodeType"=>"",
                    "disablePayChnl"=>"balance-余额 moneyFund-余额宝 debitCardExpress-借记卡快捷 creditCard-信用卡 pcredit-花呗 pcreditpayInstallment-花呗分期 coupon-红包 point-积分 promotion-优惠(包含实时优惠+商户优惠) voucher-营销券 mdiscount-商户优惠",
                    "authProtocolVersion"=>"",
                    "authProtocolNo"=>""));
        $client = new DefaultOpenApiClient();
        $content = $client->executeGet($appid,$appkey,$url,$data);
        $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/webpay/pay"

class DataRequest(object):
    def __init__(self, data: dict) -> dict:
        self.data = data
appId = "平台分配"
appKey = "平台分配"
client = DefaultOpenApiClient(appId, appKey,url)
cls = DataRequest({\"requestTimestamp\":\"2022-03-20 15:50:10\",
                    \"merOrderId\":\"327M202204141724489725391331\",
                    \"mid\":\"898201612345678\",
                    \"tid\":\"88880001\",
                    \"instMid\":\"YUEDANDEFAULT\",
                    \"totalAmount\":\"1\",
                    \"msgId\":\"001\",
                    \"expireTime\":\"\",
                    \"srcReserve\":\"webpay\",
                    \"divisionFlag\":\"\",
                    \"platformAmount\":\"\",
                    \"goods\":\"[{\"goodsId\":\"\",\"goodsName\":\"\",\"quantity\":\"\",\"price\":\"\",\"goodsCategory\":\"\",\"body\":\"\",\"subMerchantId\":\"\",\"merOrderId\":\"\",\"subOrderAmount\":\"\"}]\",
                    \"subOrders\":\"[{\"mid\":\"898201612345678\",\"merOrderId\":\"\",\"totalAmount\":\"\"}]\",
                    \"attachedData\":\"336000_0003\",
                    \"orderDesc\":\"\",
                    \"goodsTag\":\"\",
                    \"originalAmount\":\"\",
                    \"notifyUrl\":\"\",
                    \"returnUrl\":\"\",
                    \"systemId\":\"\",
                    \"subOpenId\":\"\",
                    \"subAppId\":\"\",
                    \"name\":\"\",
                    \"mobile\":\"\",
                    \"certType\":\"\",
                    \"certNo\":\"\",
                    \"fixBuyer\":\"\",
                    \"limitCreditCard\":\"\",
                    \"secureTransaction\":\"\",
                    \"installmentNumber\":\"\",
                    \"preauthFlag\":\"\",
                    \"retCommParams\":\"{\"foodOrderType\":\"\",\"brandId\":\"\",\"storeId\":\"\",\"tableNo\":\"\",\"parkId\":\"\",\"vehicleNo\":\"\"}\",
                    \"thirdPartyInstalSubsFlag\":\"\",
                    \"feeRatio\":\"\",
                    \"costSubsidy\":\"\",
                    \"asynDivisionFlag\":\"\",
                    \"rstMipPay\":\"\",
                    \"qrCode\":\"\",
                    \"qrCodeType\":\"\",
                    \"disablePayChnl\":\"balance-余额 moneyFund-余额宝 debitCardExpress-借记卡快捷 creditCard-信用卡 pcredit-花呗 pcreditpayInstallment-花呗分期 coupon-红包 point-积分 promotion-优惠(包含实时优惠+商户优惠) voucher-营销券 mdiscount-商户优惠\",
                    \"authProtocolVersion\":\"\",
                    \"authProtocolNo\":\"\"})
response = client.executeGet(cls)
print(str(response.text))

下单

URL

  • 生产环境: GET https://api-mop.chinaums.com/v1/netpay/webpay/pay
  • 测试环境: GET https://test-api-open.chinaums.com/v1/netpay/webpay/pay

描述:本接口为商户的订单H5页面向银商网络支付前置系统发起的支付跳转商户需遵循商户订单号生成规范,即以银商分配的4位来源编号作为账单号的前4位,且在商户系统中此账单号保证唯一。总长度需大于6位,小于32位。银商的推荐规则为(无特殊情况下,建议遵守此规则) 如果需要实名认证,微信公众号下单时必传姓名name和证件号certNo,强制校验位fixBuyer=T;支付宝服务窗必传姓名name,证件类型certType,证件号certNo,强制校验位fixBuyer=T。 注意:微信实名认证暂时只支持身份证,支付宝支持的证件类型包括:身份证IDENTITY_CARD、护照PASSPORT、军官证OFFICER_CARD、士兵证SOLDIER_CARD、户口本HOKOU".敏感信息如姓名、证件号和手机号信息需要 base64编码。同时微信实名认证时必须传 name 和 certNo 字段,否则无法进行实名认证。{来源编号(4位)}{时间(yyyyMMddmmHHssSSS)(17位)}{11位随机数}

ContentType:HTTP(S)

URL参数

参数名称 说明 类型 长度 必填 备注
authorization 认证方式 string 值为OPEN-FORM-PARAM
appId AppId string <=32
timestamp 时间戳 string 14 yyyyMMddHHmmss
nonce 随机数 string <=128
content 业务内容 string
signature 签名 string Base64_Encode(HmacSHA256(appId + timestamp + nonce + SHA256_HEX(content), AppKey))

业务内容

名称 类型 必填 最大长度 描述 示例值
requestTimestamp string 报文请求时间 格式yyyy-MM-dd HH:mm:ss 2022-03-20 15:50:10
merOrderId string 6..32 商户订单号 商户自行生成 327M202204141724489725391331
mid string 15 商户号 898201612345678
tid string 8 终端号 88880001
instMid string 8..32 业务类型 YUEDANDEFAULT YUEDANDEFAULT
totalAmount number 1..100000000 支付总金额 单位分 若divisionFlag为true,则:
totalAmount =subOrders字段中的所有totalAmount值之和
platformAmount值 =goods中的所有subOrderAmount值之和。
1
msgId string <=64 消息ID 原样返回 001
expireTime string 订单过期时间 为空则使用系统默认过期时间(30分钟),格式yyyy-MM-dd HH:mm:ss
srcReserve string <=255 请求系统预留字段 webpay
divisionFlag boolean 分账标记 暂时只支持微信、支付宝支付和银联云闪付。 若为true,则goods字段和subOrders字段不能同时为空,且secureTransaction字段上送false或不上送。
platformAmount number 0..100000000 平台商户分账金额 若分账标记传,则分账金额必传
goods array 商品信息 在传分账标记的情况下,若传子商户号,子商户商品金额必传,即goods字段中每个元素中subMerchantId与subOrderAmount不能为空,元素不能超过20个。(goods里所有子商户商品总额要与支付总额totalAmount相等)
   goodsId string 商品ID
   goodsName string 商品名称
   quantity string 商品数量
   price string 商品单价(分)
   goodsCategory string 商品分类
   body string 商品说明
   subMerchantId string 15 子商户号
   merOrderId string 6..32 商户子订单号
   subOrderAmount number 0..100000000 子商户商品总额
subOrders array 子订单信息 在传分账标记的情况下,若传子商户号,子商户分账金额必传,即ubOrders每个元素的mid和totalAmount非空且mid不超过20个。(分账方案subOrders里子商户分账总额+platformAmount要与支付总额totalAmount相等)。 在传分账标记的情况下,接口中goods和subOrders二者必传其一;若传goods则分账信息会按goods中每个商品的总额占支付总额减平台分账金额等比例生成;若传subOrders,则分账信息则严格按subOrders里的分账方案生成。
   mid string 15 子商户号 898201612345678
   merOrderId string 6..32 商户子订单号
   totalAmount number 0..100000000 子商户分账金额
attachedData string <=255 商户附加数据 336000_0003
orderDesc string <=255 账单描述
goodsTag string <=32 商品标记 用于优惠活动
originalAmount number 1..100000000 订单原始金额 单位分,用于记录前端系统打折前的金额
notifyUrl string <=255 支付结果通知地址
returnUrl string <=255 网页跳转地址
systemId string <=32 系统ID
subOpenId string 用户子标识 (重要)商户自己公众号appid下的用户openid,可以通过微信oauth接口获取。
subAppId string <=32 微信子商户appId
name string <=32 实名认证姓名 Base64编码
mobile string <=20 实名认证手机号 Base64编码
certType string 实名认证证件类型 证件类型,
微信支持身份证、支付宝支持身份证:IDENTITY_CARD、
护照:PASSPORT、
军官证:OFFICER_CARD、
士兵证:SOLDIER_CARD、
户口本:HOKOU
certNo string <=32 实名认证证件号 Base64编码
fixBuyer string <=32 是否需要实名认证 需要实名认证时置为T
limitCreditCard string 是否需要限制信用卡支付 取值:true或false,默认false
secureTransaction string 担保交易标识 取值:true或false,默认false若上送为true,则交易的金额将会被暂缓结算。调用担保完成接口后,完成部分金额会在t+1日结算给商户,剩余部分金额退还用户。调用担保撤销接口,则全部资金退还给用户。30天后没有主动调用担保完成 且 没有主动调用担保撤销的交易 将会自动按撤销处理。
installmentNumber number 花呗分期数 取值:仅支持3、6、12
preauthFlag string 预授权交易标识 取值:true或false,默认false。(目前仅支持银联互联互通APP)若上送为true,则交易的金额将会被银行冻结。调用预授权完成接口后,完成部分金额会在t+1日结算给商户,剩余部分金额在用户银行卡中解冻
retCommParams object 扫码点餐信息
扫码点餐信息,支付宝只需上送扫码foodOrderType字段,云闪付只需上送brandId、storeId、tableNo字段提醒:
1.请求报文中retCommParams字段示例如{"brandId":"MY_STYLE","storeId":"S001","tableNo":"T001"}(见文档请求示例报文)
2.二级字段foodOrderType最大长度为32位。
   foodOrderType string <=32 扫码点餐字段 扫码点餐类型取值:
qr_order:店内扫码点餐
pre_order:预点到店自提
home_delivery:外送到家
direct_payment:直接付款
other:其他
   brandId string <=32 品牌标识
   storeId string <=32 门店标识
   tableNo string <=32 桌号
   parkId string 32 停车场ID,用于支付宝停车场活动
   vehicleNo string 32 车牌号,用于支付宝停车场活动
thirdPartyInstalSubsFlag boolean 是否开启第三方分期交易贴息 true为本笔交易启用第三方贴息,false或者不传为本笔交易不启用第三方贴息。目前只针对花呗分期交易。
feeRatio string 手续费比例 新悦融益业务 该字段必传
costSubsidy string 确认成本补贴 新悦融益业务 该字段必传;
是否成本补贴,
true为不判断手续费比例,
false按正常判断,
默认false
asynDivisionFlag boolean 异步分账标记 若为true,则goods字段和subOrders字段不能同时为空;且secureTransaction字段上送false或不上送。 退货订单不允许做子订单操作 已确认的子订单,不允许隔天再确认
rstMipPay boolean 默认为false。 true:限制未成年人支付 false:不限 支持微信,支付宝渠道
qrCode string <=500 二维码 云闪付交易,必传商户前端二维码地址
qrCodeType string - 二维码类型 云闪付交易,必传商户二维码类型 0: 动态码 1: 静态码
disablePayChnl string - 商户可通过上传该字段,禁用支付方式(仅支持支付宝交易),支持多个,中间逗号分隔,例balance,creditCard。上传的枚举值参见附录:支付宝支付方式取值说明 balance-余额 moneyFund-余额宝 debitCardExpress-借记卡快捷 creditCard-信用卡 pcredit-花呗 pcreditpayInstallment-花呗分期 coupon-红包 point-积分 promotion-优惠(包含实时优惠+商户优惠) voucher-营销券 mdiscount-商户优惠
authProtocolVersion string 64 实名认证合同版本号,云闪付实名必传,由前端按实际版本号传,示例“V1”
authProtocolNo string - 实名认证合同协议号,云闪付实名必传,商户采集用户信息的授权协议信息,协议号唯一