法币(卢比)代收UTR补单

# 代码示例

TopPaySignUtil点击获取代码示例

import com.google.gson.Gson;
import java.util.HashMap;
import java.util.Map;

public class PayOrderQuery {
    //MCH_ID: 商户ID
    //请登录商户后台,点击 个人中心 > 个人信息 在基本信息中获取商户ID
    private static final String MCH_ID = "S820211021094748000001";
    private static final String MCH_PRIVATE_KEY = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAJU8gKFKD0luIYx7X8+JRdCIE0UDBctS6LjXxWLEv/EO7jDBTid6zYP1KmNgpd2DAWWtBFBSQ+gcNwVZZSBHJiSDqVvvJVs2FEbeBvfdv4X93+IYRAXksBasSW5Tpdshbo82pVL4V7wuKCuFLk9UxBHbpQjWAbfyF66RmwIbZD71AgMBAAECgYBjPe7UU2nDDSfmQg0++CyjNjqKRC5QPfxhH6w1uF1kMueXKJWOj42n2RutJpJmsj31nY8m0u4xpsG4HvCu/GGSFhhKZCHLvzp41oY2ubYj9nuFNU//81LycQjulWo2y0UUBY0k2piEt+SwPaiUNbT6nMxNMjlnjRe2okp/3rw+KQJBANG3YlZWoVbCEqzy64bJJLxiPsCA5ErGB0NzRGitq44xkhqGtR8ZZQyVz40pruNa58d73O2xyJSy5+fmZGn4E+sCQQC2LBnguj0CSCKub0mPDcunTTz9V79VXBBZdlB1/YGmRUx2s4sQrJNZS7rL4EqBQ3maIRnG+s+AXCSTfsYrV6CfAkEAxugnVfpelhoGepEAgNuggyivmgfl/2Gpm/jk5l/qOjib+ZrQiQmeBPzGWX4yiSM8eMDrP2sC8r5pJFMp5DRONwJBAJ4n4XuSFJ9jgwCPy3vvzSv9SYLk6E6yM9uHdUlKgoGYzk6Lh6M9QFuY/J49plFdBDiEnj16yCU3WeXXfTJpzB8CQQDMNMR/rIOTE9xGybS3mlQbt22AUnO6XhupWcckEKW4nPGxATwYBQzCY3i/9FTGN0vA+9ZPC2cwHtNxI2kXf3Vp";  // 商户私钥
    private static final String REQ_URL = "https://india-openapi.toppay.asia/pay/supplementOrder";

    public static void main(String[] args) throws Exception {
        supplementOrder();
    }

    private static void supplementOrder() throws Exception {
        //根据接口要求组装参数
        Map<String, String> requestParams = new HashMap<>();
        requestParams.put("merchantCode", MCH_ID);
        requestParams.put("orderNum", "T1642593166888");
        requestParams.put("timestamp", "1745377181");
        requestParams.put("utr", "123456789012");

        //参数格式化并计算签名 并将签名值加入到请求参数中
        String source = TopPaySignUtil.paramFormat(requestParams);
        requestParams.put("sign", TopPaySignUtil.sign(MCH_PRIVATE_KEY, source));

        //参数序列化成Json 并发起post请求
        String postJson = new Gson().toJson(requestParams);
        System.out.println("Post Json Params:" + postJson);
        String responseJson = TopPaySignUtil.doPost(REQ_URL, postJson);  
        System.out.println("Response Msg:" + responseJson);
    }
}
<?php
require_once 'TopPaySignUtil.php';
class PayOrderQuery
{
    // Merchant ID
    const MCH_ID = "S820211021094748000001";

    // Merchant Private Key
    const MCH_PRIVATE_KEY = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAJU8gKFKD0luIYx7X8+JRdCIE0UDBctS6LjXxWLEv/EO7jDBTid6zYP1KmNgpd2DAWWtBFBSQ+gcNwVZZSBHJiSDqVvvJVs2FEbeBvfdv4X93+IYRAXksBasSW5Tpdshbo82pVL4V7wuKCuFLk9UxBHbpQjWAbfyF66RmwIbZD71AgMBAAECgYBjPe7UU2nDDSfmQg0++CyjNjqKRC5QPfxhH6w1uF1kMueXKJWOj42n2RutJpJmsj31nY8m0u4xpsG4HvCu/GGSFhhKZCHLvzp41oY2ubYj9nuFNU//81LycQjulWo2y0UUBY0k2piEt+SwPaiUNbT6nMxNMjlnjRe2okp/3rw+KQJBANG3YlZWoVbCEqzy64bJJLxiPsCA5ErGB0NzRGitq44xkhqGtR8ZZQyVz40pruNa58d73O2xyJSy5+fmZGn4E+sCQQC2LBnguj0CSCKub0mPDcunTTz9V79VXBBZdlB1/YGmRUx2s4sQrJNZS7rL4EqBQ3maIRnG+s+AXCSTfsYrV6CfAkEAxugnVfpelhoGepEAgNuggyivmgfl/2Gpm/jk5l/qOjib+ZrQiQmeBPzGWX4yiSM8eMDrP2sC8r5pJFMp5DRONwJBAJ4n4XuSFJ9jgwCPy3vvzSv9SYLk6E6yM9uHdUlKgoGYzk6Lh6M9QFuY/J49plFdBDiEnj16yCU3WeXXfTJpzB8CQQDMNMR/rIOTE9xGsybS3mlQbt22AUnO6XhupWcckEKW4nPGxATwYBQzCY3i/9FTGN0vA+9ZPC2cwHtNxI2kXf3Vp";

    const REQ_URL = "https://india-openapi.toppay.asia/pay/supplementOrder";

    public static function main()
    {
        self::supplementOrder();
    }

    private static function supplementOrder()
    {
        // 1️⃣ 组装请求参数
        $requestParams = [
            'merchantCode' => self::MCH_ID,
            'orderNum'     => 'T1642593166888',
            'timestamp'    => '1745377181',
            'utr'          => '123456789012'
        ];

        // 2️⃣ 参数格式化 & 生成签名
        $source = TopPaySignUtil::paramFormat($requestParams);
        $sign   = TopPaySignUtil::sign(self::MCH_PRIVATE_KEY, $source);
        $requestParams['sign'] = $sign;

        // 3️⃣ JSON 序列化
        $postJson = json_encode($requestParams, JSON_UNESCAPED_SLASHES);
        echo "Post Json Params:\n$postJson\n\n";

        // 4️⃣ 发送 POST 请求
        $responseJson = TopPaySignUtil::doPost(self::REQ_URL, $postJson);
        echo "Response Msg:\n$responseJson\n";
    }
}

// 执行
PayOrderQuery::main();

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class PayOrderQuery
{
    // Merchant ID
    private const string MCH_ID = "S820211021094748000001";

    // Merchant Private Key
    private const string MCH_PRIVATE_KEY = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAJU8gKFKD0luIYx7X8+JRdCIE0UDBctS6LjXxWLEv/EO7jDBTid6zYP1KmNgpd2DAWWtBFBSQ+gcNwVZZSBHJiSDqVvvJVs2FEbeBvfdv4X93+IYRAXksBasSW5Tpdshbo82pVL4V7wuKCuFLk9UxBHbpQjWAbfyF66RmwIbZD71AgMBAAECgYBjPe7UU2nDDSfmQg0++CyjNjqKRC5QPfxhH6w1uF1kMueXKJWOj42n2RutJpJmsj31nY8m0u4xpsG4HvCu/GGSFhhKZCHLvzp41oY2ubYj9nuFNU//81LycQjulWo2y0UUBY0k2piEt+SwPaiUNbT6nMxNMjlnjRe2okp/3rw+KQJBANG3YlZWoVbCEqzy64bJJLxiPsCA5ErGB0NzRGitq44xkhqGtR8ZZQyVz40pruNa58d73O2xyJSy5+fmZGn4E+sCQQC2LBnguj0CSCKub0mPDcunTTz9V79VXBBZdlB1/YGmRUx2s4sQrJNZS7rL4EqBQ3maIRnG+s+AXCSTfsYrV6CfAkEAxugnVfpelhoGepEAgNuggyivmgfl/2Gpm/jk5l/qOjib+ZrQiQmeBPzGWX4yiSM8eMDrP2sC8r5pJFMp5DRONwJBAJ4n4XuSFJ9jgwCPy3vvzSv9SYLk6E6yM9uHdUlKgoGYzk6Lh6M9QFuY/J49plFdBDiEnj16yCU3WeXXfTJpzB8CQQDMNMR/rIOTE9xGsybS3mlQbt22AUnO6XhupWcckEKW4nPGxATwYBQzCY3i/9FTGN0vA+9ZPC2cwHtNxI2kXf3Vp";

    private const string REQ_URL = "https://india-openapi.toppay.asia/pay/supplementOrder";

    static async Task Main(string[] args)
    {
        await SupplementOrder();
    }

    private static async Task SupplementOrder()
    {
        // 1️⃣ 组装请求参数
        Dictionary<string, string> requestParams = new Dictionary<string, string>
        {
            { "merchantCode", MCH_ID },
            { "orderNum", "T1642593166888" },
            { "timestamp", "1745377181" },
            { "utr", "123456789012" }
        };

        // 2️⃣ 参数格式化 + 私钥加密生成 sign
        string source = TopPaySignUtil.ParamFormat(requestParams);
        string sign = TopPaySignUtil.Sign(MCH_PRIVATE_KEY, source);
        requestParams["sign"] = sign;

        // 3️⃣ JSON 序列化
        string postJson = JsonConvert.SerializeObject(requestParams);
        Console.WriteLine("Post Json Params:");
        Console.WriteLine(postJson);

        // 4️⃣ POST 请求
        string responseJson = await TopPaySignUtil.DoPost(REQ_URL, postJson);
        Console.WriteLine("Response Msg:");
        Console.WriteLine(responseJson);
    }
}



package main

import (
	"encoding/json"
	"fmt"
)

const (
	MCH_ID = "S820211021094748000001"

	MCH_PRIVATE_KEY = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAJU8gKFKD0luIYx7X8+JRdCIE0UDBctS6LjXxWLEv/EO7jDBTid6zYP1KmNgpd2DAWWtBFBSQ+gcNwVZZSBHJiSDqVvvJVs2FEbeBvfdv4X93+IYRAXksBasSW5Tpdshbo82pVL4V7wuKCuFLk9UxBHbpQjWAbfyF66RmwIbZD71AgMBAAECgYBjPe7UU2nDDSfmQg0++CyjNjqKRC5QPfxhH6w1uF1kMueXKJWOj42n2RutJpJmsj31nY8m0u4xpsG4HvCu/GGSFhhKZCHLvzp41oY2ubYj9nuFNU//81LycQjulWo2y0UUBY0k2piEt+SwPaiUNbT6nMxNMjlnjRe2okp/3rw+KQJBANG3YlZWoVbCEqzy64bJJLxiPsCA5ErGB0NzRGitq44xkhqGtR8ZZQyVz40pruNa58d73O2xyJSy5+fmZGn4E+sCQQC2LBnguj0CSCKub0mPDcunTTz9V79VXBBZdlB1/YGmRUx2s4sQrJNZS7rL4EqBQ3maIRnG+s+AXCSTfsYrV6CfAkEAxugnVfpelhoGepEAgNuggyivmgfl/2Gpm/jk5l/qOjib+ZrQiQmeBPzGWX4yiSM8eMDrP2sC8r5pJFMp5DRONwJBAJ4n4XuSFJ9jgwCPy3vvzSv9SYLk6E6yM9uHdUlKgoGYzk6Lh6M9QFuY/J49plFdBDiEnj16yCU3WeXXfTJpzB8CQQDMNMR/rIOTE9xGsybS3mlQbt22AUnO6XhupWcckEKW4nPGxATwYBQzCY3i/9FTGN0vA+9ZPC2cwHtNxI2kXf3Vp"

	REQ_URL = "https://india-openapi.toppay.asia/pay/supplementOrder"
)

func main() {
	supplementOrder()
}

func supplementOrder() {

	// 1️⃣ 组装请求参数
	requestParams := map[string]string{
		"merchantCode": MCH_ID,
		"orderNum":     "T1642593166888",
		"timestamp":    "1745377181",
		"utr":          "123456789012",
	}

	// 2️⃣ 参数排序 + 私钥加密生成 sign
	source := paramFormat(requestParams)
	signData := sign(MCH_PRIVATE_KEY, source)
	requestParams["sign"] = signData

	// 3️⃣ JSON 序列化
	postJsonBytes, _ := json.Marshal(requestParams)
	postJson := string(postJsonBytes)

	fmt.Println("Post Json Params:")
	fmt.Println(postJson)

	// 4️⃣ HTTP POST
	resp, err := doPost(REQ_URL, postJson)
	if err != nil {
		panic(err)
	}

	fmt.Println("Response Msg:")
	fmt.Println(resp)
}

    
import json
from TopPaySignUtil import TopPaySignUtil   # 如果在同一文件可直接用

# ================= 常量 =================
MCH_ID = "S820211021094748000001"
MCH_PRIVATE_KEY = 'MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAJU8gKFKD0luIYx7X8+JRdCIE0UDBctS6LjXxWLEv/EO7jDBTid6zYP1KmNgpd2DAWWtBFBSQ+gcNwVZZSBHJiSDqVvvJVs2FEbeBvfdv4X93+IYRAXksBasSW5Tpdshbo82pVL4V7wuKCuFLk9UxBHbpQjWAbfyF66RmwIbZD71AgMBAAECgYBjPe7UU2nDDSfmQg0++CyjNjqKRC5QPfxhH6w1uF1kMueXKJWOj42n2RutJpJmsj31nY8m0u4xpsG4HvCu/GGSFhhKZCHLvzp41oY2ubYj9nuFNU//81LycQjulWo2y0UUBY0k2piEt+SwPaiUNbT6nMxNMjlnjRe2okp/3rw+KQJBANG3YlZWoVbCEqzy64bJJLxiPsCA5ErGB0NzRGitq44xkhqGtR8ZZQyVz40pruNa58d73O2xyJSy5+fmZGn4E+sCQQC2LBnguj0CSCKub0mPDcunTTz9V79VXBBZdlB1/YGmRUx2s4sQrJNZS7rL4EqBQ3maIRnG+s+AXCSTfsYrV6CfAkEAxugnVfpelhoGepEAgNuggyivmgfl/2Gpm/jk5l/qOjib+ZrQiQmeBPzGWX4yiSM8eMDrP2sC8r5pJFMp5DRONwJBAJ4n4XuSFJ9jgwCPy3vvzSv9SYLk6E6yM9uHdUlKgoGYzk6Lh6M9QFuY/J49plFdBDiEnj16yCU3WeXXfTJpzB8CQQDMNMR/rIOTE9xGybS3mlQbt22AUnO6XhupWcckEKW4nPGxATwYBQzCY3i/9FTGN0vA+9ZPC2cwHtNxI2kXf3Vp'
REQ_URL = "https://india-openapi.toppay.asia/pay/supplementOrder"


def supplement_order():
    # 1️⃣ 组装请求参数
    request_params = {
        "merchantCode": MCH_ID,
        "orderNum": "T1642593166888",
        "timestamp": "1745377181",
        "utr": "123456789012"
    }

    # 2️⃣ 参数格式化 + 私钥加密生成 sign
    source = TopPaySignUtil.param_format(request_params)
    sign = TopPaySignUtil.sign(MCH_PRIVATE_KEY, source)
    request_params["sign"] = sign

    # 3️⃣ JSON 序列化
    post_json = json.dumps(request_params, separators=(",", ":"))
    print("Post Json Params:")
    print(post_json)

    # 4️⃣ HTTP POST
    response = TopPaySignUtil.do_post(REQ_URL, post_json)
    print("Response Msg:")
    print(response)


if __name__ == "__main__":
    supplement_order()

        

const https = require('https');
const TopPaySignUtil = require('./TopPaySignUtil'); 
const MCH_ID = 'S820211021094748000001';

const MCH_PRIVATE_KEY = `
-----BEGIN PRIVATE KEY-----
MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAJU8gKFKD0luIYx7X8+JRdCIE0UDBctS6LjXxWLEv/EO7jDBTid6zYP1KmNgpd2DAWWtBFBSQ+gcNwVZZSBHJiSDqVvvJVs2FEbeBvfdv4X93+IYRAXksBasSW5Tpdshbo82pVL4V7wuKCuFLk9UxBHbpQjWAbfyF66RmwIbZD71AgMBAAECgYBjPe7UU2nDDSfmQg0++CyjNjqKRC5QPfxhH6w1uF1kMueXKJWOj42n2RutJpJmsj31nY8m0u4xpsG4HvCu/GGSFhhKZCHLvzp41oY2ubYj9nuFNU//81LycQjulWo2y0UUBY0k2piEt+SwPaiUNbT6nMxNMjlnjRe2okp/3rw+KQJBANG3YlZWoVbCEqzy64bJJLxiPsCA5ErGB0NzRGitq44xkhqGtR8ZZQyVz40pruNa58d73O2xyJSy5+fmZGn4E+sCQQC2LBnguj0CSCKub0mPDcunTTz9V79VXBBZdlB1/YGmRUx2s4sQrJNZS7rL4EqBQ3maIRnG+s+AXCSTfsYrV6CfAkEAxugnVfpelhoGepEAgNuggyivmgfl/2Gpm/jk5l/qOjib+ZrQiQmeBPzGWX4yiSM8eMDrP2sC8r5pJFMp5DRONwJBAJ4n4XuSFJ9jgwCPy3vvzSv9SYLk6E6yM9uHdUlKgoGYzk6Lh6M9QFuY/J49plFdBDiEnj16yCU3WeXXfTJpzB8CQQDMNMR/rIOTE9xGsybS3mlQbt22AUnO6XhupWcckEKW4nPGxATwYBQzCY3i/9FTGN0vA+9ZPC2cwHtNxI2kXf3Vp
-----END PRIVATE KEY-----
`;

const REQ_URL = 'https://india-openapi.toppay.asia/pay/supplementOrder';

async function supplementOrder() {

    // 1️⃣ 组装请求参数
    const requestParams = {
        merchantCode: MCH_ID,
        orderNum: 'T1642593166888',
        timestamp: '1745377181',
        utr: '123456789012'
    };

    // 2️⃣ 参数格式化 + 私钥加密生成 sign
    const source = TopPaySignUtil.paramFormat(requestParams);
    const sign = TopPaySignUtil.sign(MCH_PRIVATE_KEY, source);
    requestParams.sign = sign;

    // 3️⃣ JSON 序列化
    const postJson = JSON.stringify(requestParams);
    console.log('Post Json Params:');
    console.log(postJson);

    // 4️⃣ POST 请求
    try {
        const response = await TopPaySignUtil.doPost(REQ_URL, postJson);
        console.log('Response Msg:');
        console.log(response);
    } catch (e) {
        console.error('Request Error:', e);
    }
}
// 执行
supplementOrder();


# 请求地址

  • 请求方式 : POST
  • 请求地址 : https://india-openapi.toppay.asia/pay/supplementOrder

# 请求参数

参数 必填 描述 示例
merchantCode Y 商户ID S820190712000002
orderNum Y 商户订单号 T1231511321515
utr Y UTR 123456789012
timestamp Y 时间戳(秒),取系统实时时间戳 1745377181
sign Y RSA签名 ja6R8eukQ...

# 请求报文示例

{
  "merchantCode": "S820211021094748000001",
  "orderNum": "11642593166888",
  "utr": "123456789012",
  "timestamp": "1745377181",
  "sign": "16u1010cult@NGaIq44U2u2bFW56d11JUT/66mQMb18T9dmVAJaLwR125emPDXYSdn0tNxja8642VJ1f4eBCg2HevHo1ebvYzay3ukCguJn"
}

# 响应参数

  • 外层统一返回结构
参数 类型 必填 描述 示例
code int Y 接口响应码 0代表成功,其他的都为失败
message String Y 接口响应信息 返回具体响应信息
data Json Y 接口响应参数 接口具体响应参数

# 响应报文示例

{
  "code": 0,
  "message": "success",
  "data": "supplement order success"
}