视频一区二区三区自拍_千金肉奴隷1985未删减版在线观看_国产成人黄色视频在线播放_少女免费播放片高清在线观看_国产精品v欧美精品v

商戶進(jìn)件
特約商戶進(jìn)件
基礎(chǔ)支付
JSAPI支付
APP支付
H5支付
Native支付
小程序支付
合單支付
付款碼支付
經(jīng)營(yíng)能力
支付即服務(wù)
點(diǎn)金計(jì)劃
行業(yè)方案
平臺(tái)收付通
智慧商圈
微信支付分停車服務(wù)
電子發(fā)票
營(yíng)銷工具
代金券
商家券
委托營(yíng)銷
支付有禮
小程序發(fā)券插件
H5發(fā)券
圖片上傳(營(yíng)銷專用)
現(xiàn)金紅包
資金應(yīng)用
分賬
連鎖品牌分賬
風(fēng)險(xiǎn)合規(guī)
商戶開(kāi)戶意愿確認(rèn)
消費(fèi)者投訴2.0
商戶平臺(tái)處置通知
其他能力
圖片上傳
視頻上傳
微信支付平臺(tái)證書(shū)

特約商戶進(jìn)件開(kāi)發(fā)指引

1. 接口規(guī)則

為了在保證支付安全的前提下,帶給商戶簡(jiǎn)單、一致且易用的開(kāi)發(fā)體驗(yàn),我們推出了全新的微信支付APIv3接口。該版本API的具體規(guī)則請(qǐng)參考“APIv3接口規(guī)則

2. 開(kāi)發(fā)準(zhǔn)備

2.1. 搭建和配置開(kāi)發(fā)環(huán)境

為了幫助開(kāi)發(fā)者調(diào)用開(kāi)放接口,我們提供了JAVA、PHP、GO三種語(yǔ)言版本的開(kāi)發(fā)庫(kù),封裝了簽名生成、簽名驗(yàn)證、敏感信息加/解密、媒體文件上傳等基礎(chǔ)功能(更多語(yǔ)言版本的開(kāi)發(fā)庫(kù)將在近期陸續(xù)提供

測(cè)試步驟

1、根據(jù)自身開(kāi)發(fā)語(yǔ)言,選擇對(duì)應(yīng)的開(kāi)發(fā)庫(kù)并構(gòu)建項(xiàng)目,具體配置請(qǐng)參考下面鏈接的詳細(xì)說(shuō)明:

    ? wechatpay-java(推薦)wechatpay-apache-httpclient,適用于Java開(kāi)發(fā)者。

    ? wechatpay-php(推薦)、wechatpay-guzzle-middleware,適用于PHP開(kāi)發(fā)者

    注:當(dāng)前開(kāi)發(fā)指引接口PHP示例代碼采用wechatpay-guzzle-middleware版本

    ? wechatpay-go,適用于Go開(kāi)發(fā)者

更多資源可前往微信支付開(kāi)發(fā)者社區(qū)搜索查看

2、創(chuàng)建加載商戶私鑰、加載平臺(tái)證書(shū)、初始化httpClient的通用方法


@Before
public void setup() throws IOException {
    // 加載商戶私鑰(privateKey:私鑰字符串)
    PrivateKey merchantPrivateKey = PemUtil
            .loadPrivateKey(new ByteArrayInputStream(privateKey.getBytes("utf-8")));
 
    // 加載平臺(tái)證書(shū)(mchId:商戶號(hào),mchSerialNo:商戶證書(shū)序列號(hào),apiV3Key:V3密鑰)
    AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(
            new WechatPay2Credentials(mchId, new PrivateKeySigner(mchSerialNo, merchantPrivateKey)),apiV3Key.getBytes("utf-8"));
 
    // 初始化httpClient
    httpClient = WechatPayHttpClientBuilder.create()
            .withMerchant(mchId, mchSerialNo, merchantPrivateKey)
            .withValidator(new WechatPay2Validator(verifier)).build();
}
 
@After
public void after() throws IOException {
    httpClient.close();
}

use GuzzleHttp\Exception\RequestException;
use WechatPay\GuzzleMiddleware\WechatPayMiddleware;
use WechatPay\GuzzleMiddleware\Util\PemUtil;
use GuzzleHttp\HandlerStack;
 
// 商戶相關(guān)配置,
$merchantId = '1000100'; // 商戶號(hào)
$merchantSerialNumber = 'XXXXXXXXXX'; // 商戶API證書(shū)序列號(hào)
$merchantPrivateKey = PemUtil::loadPrivateKey('./path/to/mch/private/key.pem'); // 商戶私鑰文件路徑
 
// 微信支付平臺(tái)配置
$wechatpayCertificate = PemUtil::loadCertificate('./path/to/wechatpay/cert.pem'); // 微信支付平臺(tái)證書(shū)文件路徑
 
// 構(gòu)造一個(gè)WechatPayMiddleware
$wechatpayMiddleware = WechatPayMiddleware::builder()
    ->withMerchant($merchantId, $merchantSerialNumber, $merchantPrivateKey) // 傳入商戶相關(guān)配置
    ->withWechatPay([ $wechatpayCertificate ]) // 可傳入多個(gè)微信支付平臺(tái)證書(shū),參數(shù)類型為array
    ->build();
 
// 將WechatPayMiddleware添加到Guzzle的HandlerStack中
$stack = GuzzleHttp\HandlerStack::create();
$stack->push($wechatpayMiddleware, 'wechatpay');
 
// 創(chuàng)建Guzzle HTTP Client時(shí),將HandlerStack傳入,接下來(lái),正常使用Guzzle發(fā)起API請(qǐng)求,WechatPayMiddleware會(huì)自動(dòng)地處理簽名和驗(yàn)簽
$client = new GuzzleHttp\Client(['handler' => $stack]);

/*
    Package core 微信支付api v3 go http-client 基礎(chǔ)庫(kù),你可以使用它來(lái)創(chuàng)建一個(gè)client,并向微信支付發(fā)送http請(qǐng)求
    只需要你在初始化客戶端的時(shí)候,傳遞credential以及validator
    credential用來(lái)生成http header中的authorization信息
    validator則用來(lái)校驗(yàn)回包是否被篡改
    如果http請(qǐng)求返回的err為nil,一般response.Body 都不為空,你可以嘗試對(duì)其進(jìn)行序列化
    請(qǐng)注意及時(shí)關(guān)閉response.Body
    注意:使用微信支付apiv3 go庫(kù)需要引入相關(guān)的包,該示例代碼必須引入的包名有以下信息

    "context"
    "crypto/x509"
    "fmt"
    "io/ioutil"
    "log"
    "github.com/wechatpay-apiv3/wechatpay-go/core"
    "github.com/wechatpay-apiv3/wechatpay-go/core/option"
    "github.com/wechatpay-apiv3/wechatpay-go/utils"

    */
func SetUp() (opt []option.ClientOption, err error) {
    //商戶號(hào)
    mchID := ""
    //商戶證書(shū)序列號(hào)
    mchCertSerialNumber := ""
    //商戶私鑰文件路徑
    privateKeyPath := ""
    //平臺(tái)證書(shū)文件路徑
    wechatCertificatePath := ""

    // 加載商戶私鑰
    privateKey, err := utils.LoadPrivateKeyWithPath(privateKeyPath)
    if err != nil {
        log.Printf("load private err:%s", err.Error())
        return nil, err
    }
    // 加載微信支付平臺(tái)證書(shū)
    wechatPayCertificate, err := utils.LoadCertificateWithPath(wechatCertificatePath)
    if err != nil {
        log.Printf("load certificate err:%s",err)
        return nil, err
    }
    //設(shè)置header頭中authorization信息
    opts := []option.ClientOption{
        option.WithMerchant(mchID, mchCertSerialNumber, privateKey), // 設(shè)置商戶相關(guān)配置
        option.WithWechatPay([]*x509.Certificate{wechatPayCertificate}), // 設(shè)置微信支付平臺(tái)證書(shū),用于校驗(yàn)回包信息用
    }
    return opts, nil
}

3、基于接口的示例代碼,替換請(qǐng)求參數(shù)后可發(fā)起測(cè)試

說(shuō)明:

? 上面的開(kāi)發(fā)庫(kù)為微信支付官方開(kāi)發(fā)庫(kù),其它沒(méi)有審核或者控制下的第三方工具和庫(kù),微信支付不保證它們的安全性和可靠性

通過(guò)包管理工具引入SDK后,可根據(jù)下面每個(gè)接口的示例代碼替換相關(guān)參數(shù)后進(jìn)行快速測(cè)試

? 開(kāi)發(fā)者如果想詳細(xì)了解簽名生成、簽名驗(yàn)證、敏感信息加/解密、媒體文件上傳等常用方法的具體代碼實(shí)現(xiàn),可閱讀下面的詳細(xì)說(shuō)明:

    1.簽名生成

    2.簽名驗(yàn)證

    3.敏感信息加解密

    4.merchantPrivateKey(私鑰)

    5.wechatpayCertificates(平臺(tái)證書(shū))

    6.APIV3Key(V3 key)

? 如想更詳細(xì)的了解我們的接口規(guī)則,可查看我們的接口規(guī)則指引文檔

3. 快速接入

3.1. 業(yè)務(wù)流程圖

業(yè)務(wù)流程時(shí)序圖:


申請(qǐng)單狀態(tài)變化如下:

重點(diǎn)步驟說(shuō)明:

步驟3 商戶入駐,服務(wù)商收集商戶資料后,調(diào)用提交申請(qǐng)單接口,提交創(chuàng)建入駐申請(qǐng)單。

步驟5 創(chuàng)建申請(qǐng)單后,可通過(guò)查詢申請(qǐng)單狀態(tài)接口,獲取特約商戶簽約鏈接,讓商戶掃碼確認(rèn)聯(lián)系信息,后續(xù)申請(qǐng)單進(jìn)度可通過(guò)公眾號(hào)自動(dòng)通知超級(jí)管理員(簡(jiǎn)稱超管)。

步驟10 進(jìn)件成功后,若特約商戶需修改結(jié)算賬號(hào)時(shí),服務(wù)商可調(diào)用修改結(jié)算賬號(hào)接口來(lái)幫助特約商戶修改結(jié)算信息,修改后通過(guò)狀態(tài)碼判斷是否修改成功。也可通過(guò)調(diào)用查詢結(jié)算賬號(hào)接口來(lái)查詢核查結(jié)算賬號(hào)信息。

3.2. API接入(含示例代碼)

文檔展示了如何使用微信支付服務(wù)端 SDK 快速接入特約商戶進(jìn)件,完成與微信支付對(duì)接的部分。

注意

  • 文檔中的代碼示例是用來(lái)闡述 API 基本使用方法,代碼中的示例參數(shù)需替換成商戶自己賬號(hào)及請(qǐng)求參數(shù)才能跑通
  • 以下接入步驟僅提供參考,請(qǐng)商戶結(jié)合自身業(yè)務(wù)需求進(jìn)行評(píng)估、修改。
3.2.1. 【服務(wù)端】提交申請(qǐng)單

步驟說(shuō)明:服務(wù)商收集商戶資料后,調(diào)用提交申請(qǐng)單接口,提交創(chuàng)建入駐申請(qǐng)單。

示例代碼


public void ApplymentSubMch() throws Exception {
    //請(qǐng)求URL
    HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/applyment4sub/applyment/");
    // 請(qǐng)求body參數(shù)
    String reqdata = "{"
            + "\"business_info\": {"
            + "\"merchant_shortname\":\"上海XXX有限公司\","
            + "\"service_phone\":\"139XXXX\","
            + "\"sales_info\": {"
            + "\"mini_program_info\": {"
            + "\"mini_program_pics\": ["
            + "\"0\":\"F8O5MNAOlYZyxZcLnWXkyk72coZ3CVX3XobPZng-xepKPTrcH_XMfrGGYLi1XFogMG9P25LSUX6gjXU5iPI74YqiRUDfORyw2d76wK3vzuQ\""
            + "],"
            + "\"mini_program_sub_appid\":\"wx76c3f74c108876c2\""
            + "},"
            + "\"mp_info\": {"
            + "\"mp_pics\": ["
            + "\"0\":\"F8O5MNAOlYZyxZcLnWXkys5TBxf0dyfesnyfNuquBMArHRfgCq8hDRdscDpblCcEgvgV5MkVch9IBEX7aatZCmI8k5Wdb_M8a4bYcmlg6V8\""
            + "],"
            + "\"mp_sub_appid\":\"wx85c88c63bd22651f\""
            + "},"
            + "\"sales_scenes_type\": ["
            + "\"0\":\"SALES_SCENES_MP\","
            + "\"1\":\"SALES_SCENES_MINI_PROGRAM\""
            + "]"
            + "}"
            + "},"
            + "\"subject_info\": {"
            + "\"business_license_info\": {"
            + "\"legal_person\":\"江XX\","
            + "\"license_copy\":\"F8O5MNAOlYZyxZcLnWXkysZ5xo8fE3SHJ1pHUe6OJKmNIWtqUVyv4aY2-JLTgjDOSovWaKkBu3AbkjGuQXhesDzREu2pT_Yf_hxlFKPJMwQ\","
            + "\"merchant_name\":\"上海XXX有限公司\","
            + "\"license_number\":\"91310118MA1JXXXX\""
            + "},"
            + "\"subject_type\":\"SUBJECT_TYPE_ENTERPRISE\","
            + "\"identity_info\": {"
            + "\"owner\":true,"
            + "\"id_doc_type\":\"IDENTIFICATION_TYPE_IDCARD\","
            + "\"id_card_info\": {"
            + "\"id_card_copy\":\"F8O5MNAOlYZyxZcLnWXkyvLpqoz7MNRULxju0NqUCtLGBl_vm8Bhj9uAyuLyDART9UsA10spF9gbT3DEoM85HxPQOhMuilK0zLtOxAjPx58\","
            + "\"card_period_end\":\"2035-12-28\","
            + "\"card_period_begin\":\"2015-12-28\","
            + "\"id_card_name\":\"JRMJGA7B7oSVS+krFeaQn4AvYZE2LL9tTwA+XXa9lYJU4AhS+Qheb7fhgo+D+hfa0v+ykU1BVvVo7NpCfgOYQqmYDyYF27Q/p4hB7IoqZLhJUE+hTG45VNoa9ASaKG79Hg+eGz4YTIHFGMFm1ljyg4fd5lGJixCqn38/gCfwm5x6vDOMVkFpqbUdR7klQwReGoG7iSlEpr4gZPqzItcBHiuXidMToKZTX1Lol1Lx52DHk0blcdh1CMRhv+wxQzF0lJMy/WtVyjKuB8daDbLJKTEwDx5KfkTZGHmGiaJnWY0qFX03sXsufvfB0Wj6Z37+nJnV16fplPmdr1/KEHamLw==\","
            + "\"id_card_national\":\"F8O5MNAOlYZyxZcLnWXkyvcmQrkBXCIo2vZGUoM6ER-skL5k6IOhzeJ34tNNUggQIPfJbM_pzdg9jM4pQbkIm84_bKfi2JKNn99xIurNgwI\","
            + "\"id_card_number\":\"V0quwnIu/PLbdQQ3/nzMqjvHtChDqed4Jpc3Iy2lgnFoWVNXguRWBHMYKHaLgLvnxLvO6TciMnrSw13QzUJD4ZnEIiks8gGTd+OCzl5Jl3F+sneQ+Js4akBnCSBQso/SERvi6vUqCeRhX1vtiFsmKtqlL8r/ssrFev4FoJEka5gGME1osTgcpMMTIR8rolIO1oXbl3e8z5RDics5xKH2Ogjzis73yq9M18ap0uRRdLWoX/cxeG3tbU1bi5jZsAU9hGHXs4BKTaHfrslsKIkqXR0f2Jpk7H5qtwAyP8glcALN7gB5DIOmBEIZ5zx2PrDm38CsZHstu0hF8beXV/PG2w==\""
            + "}"
            + "}"
            + "},"
            + "\"business_code\":\"20201126100507000003\","
            + "\"contact_info\": {"
            + "\"contact_name\":\"AD2jwe8eYFYfeoSmBpyRYUawyQgQkUoAajOlHnQM/JzproDF7hikLDouMr5Mb1W5otvdJZYEipG0HzwLpG9NXbqP6SXSpzQFb8fY5cpuXZsIbDy70lAybF0bbxJiJw1PHSd7KpMbu0XHqwlicePLUOw7HCNV6euQsKEvtusiWsaVrNNdKXpj3ONhyAg2ws4ibc56GUVoNll3osmGLPi6/bIn3pD6sjNThgPE9UzRQax0XPwgIpafIewQiVy0GNtv5P33wqPa9pAsdEmaLXNtQr2Ddjw5SYMInen1qbVO8NP0VhuWmYiAjd1WbkNnR+gbwsilBCYYeRuFbKfqatASnA==\","
            + "\"mobile_phone\":\"GLc5+TuqJbxLeQO+CrKeDWF+7lZq9IsidIU4zcMpus4qsE8r1qNyvVMjrZfWLrjOItiQhXqkiKZs0B4M0UWAviWwmBhNWW0BJrauBjZbGZU+pLHC/2eOetdDC4sQqHN7Xw0N4tizqeQNu49n+DbSiv0TL09EcmNUUV9rImfjpVyo77MxKhPvdg3ODwS+IVvY2Tc9q11iBgaPIQ+XwoBaJGth1wdw0GLgEFUmX02TWxjHxq7f5O1RU3LjBlt1O+56ZZYpA+zr+IjQ/TwrIDp+4nk9v1oW2wtHuwrdqKrlLyJ1/zdoqwSddLuGxp8PwSM8CKobQP8TXhJu0S9pwLbNyg==\","
            + "\"contact_id_number\":\"iC35X6SaOx4A4BEJ4fmM2oOkYRO5rEzRh2QRdrxFD3+HwmNjxddsm1LoqfhSiV34DAO2x3Ded3q2c1LJ7NHqa3/IGCDss4FKlgIyiu5AmzQTTYwsobmvVFxeSUXA4PnH/tUTfatJOuj+9Emt7fmnpO9uWeCLIn5CXaaABrXpO4mUu8qPBaoF2jTfbwBm6QiYX58kATyRrIvBRs6VorHJydXkz3P1hCejh8sAYoJXlNHnoajI+NEwiWX9RhwUadYLbMwww68cc7Yzehp3s6an0NWuC76Y4e7FQ/i5D9ZpUvLKUoYfFsZMnHrv/PhLxmv5l8gQs9/IkmOdYfRujKZJwQ==\","
            + "\"contact_email\":\"ggK2ABtJ8bBiBo1iM7I6R2yEvhD6WC96d07gthnPGajc4lBCKpIqXjyNX8B97vc0OilyLRNUcySbT/KUejPyu4x9W6Ok6iS4zcerfKfIQkKs+3JXIMo0bu+GyI5O0fzRrPg1Mek2okfIjVK9wiTNJTzoGyz9twMXEaqqrOTbysyhnkqfrol5dad/TPg8qNWaBO3+Ma/hr1Tr0xeHWkKX3mBySC3NW49HM51x0PvFAwnStHr/8hiGzGpqAA3yJuYdlEwey3Lv+/bMmbTq+AyrYq9xX3q+n0VHuiSnzgICPwQiP4zXsoivA0bm7DSgcP1Oa6MjpGqMOS7AU1dHyak2GQ==\""
            + "},"
            + "\"bank_account_info\": {"
            + "\"account_number\":\"Bfu6CzrRWlVTLZwjEK2CCXG0KRfGoIsbYs9IYmtFcV9FTEVLCcVCRGW6DVE2hMMr7U9tSdo7QqsptXZ7Zhciandyx9kRkY/VmPywurySvCbqpOLbx3AgmQY7H6/Ye542R0uloi6Pdp5FjqY/TdnlDcTS4cqv9iqU0DqKAUt7q+L6jZ8lrSlGFPI/1RkXCGAhlTSZ/iAJYDWzcN/E0cno9BQPYCmEIWldzj7W3Tmhi1eaZYX5mlLWnTOuVmMsRXIehb4y6LCi6T0kS7/c3GOFwlTzHVaaUgFqZhOL00h2G4Cl94uZfuVNO7KTiFaWtV61muEN6JfaSnFwRDSHxhtsRg==\","
            + "\"bank_address_code\":\"310101\","
            + "\"account_name\":\"RVBRWZKlmzrjkDmz4uEkaLQLU5q5xErXGoWhzDNdnQjRlfn1NVHL2EtIE+B0BULFNOHrX61q13lcgo9CDal9YJ/LjZkzAAsivwJZpNSRZbAsNNjqbYiiVhdnxYpwMqtukVgZAFgx0XMovOeSGX1+Dosc2vKJSsxtUw6wJXcZbMjvsX5/xamFTvRIx1J2a/q3ODBJ9URO5O2FDhGwLx8LQnFIv7xUDM3JXw7c6+eNy1OYTVwlj3/MIDQVw2eiPjpG1vC6K6PRwCI4wFZk1QwH99Xa3Wwvf+ek54j7FQTh0N703dK6jjonL5L6Lh9ZsckLx45InkARlPnU0KQpoK5g9w==\","
            + "\"bank_account_type\":\"BANK_ACCOUNT_TYPE_CORPORATE\","
            + "\"account_bank\":\"招商銀行\(zhòng)""
            + "},"
            + "\"settlement_info\": {"
            + "\"settlement_id\":\"716\","
            + "\"qualification_type\":\"零售批發(fā)/生活?yuàn)蕵?lè)/網(wǎng)上商城/其他\""
            + "}"
            + "}";
    StringEntity entity = new StringEntity(reqdata,"utf-8");
    entity.setContentType("application/json");
    httpPost.setEntity(entity);
    httpPost.setHeader("Accept", "application/json");
    httpPost.setHeader("Wechatpay-Serial", "XXXXXXXXXXXXXX");
    //完成簽名并執(zhí)行請(qǐng)求
    CloseableHttpResponse response = httpClient.execute(httpPost);

    try {
        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode == 200) { //處理成功
            System.out.println("success,return body = " + EntityUtils.toString(response.getEntity()));
        } else if (statusCode == 204) { //處理成功,無(wú)返回Body
            System.out.println("success");
        } else {
            System.out.println("failed,resp code = " + statusCode+ ",return body = " + EntityUtils.toString(response.getEntity()));
            throw new IOException("request failed");
        }
    } finally {
        response.close();
    }
}  

try {
    $resp = $client->request(
        'POST',
        'https://api.mch.weixin.qq.com/v3/applyment4sub/applyment/', //請(qǐng)求URL
        [
            // JSON請(qǐng)求體
            'json' => [
                "business_info" => [
                    "merchant_shortname" => "上海XXX有限公司", 
                    "service_phone" => "139XXXX", 
                    "sales_info" => [
                        "mini_program_info" => [
                            "mini_program_pics" => [
                                "0" => "F8O5MNAOlYZyxZcLnWXkyk72coZ3CVX3XobPZng-xepKPTrcH_XMfrGGYLi1XFogMG9P25LSUX6gjXU5iPI74YqiRUDfORyw2d76wK3vzuQ", 
                            ],
                            "mini_program_sub_appid" => "wx76c3f74c108876c2", 
                        ],
                        "mp_info" => [
                            "mp_pics" => [
                                "0" => "F8O5MNAOlYZyxZcLnWXkys5TBxf0dyfesnyfNuquBMArHRfgCq8hDRdscDpblCcEgvgV5MkVch9IBEX7aatZCmI8k5Wdb_M8a4bYcmlg6V8", 
                            ],
                            "mp_sub_appid" => "wx85c88c63bd22651f", 
                        ],
                        "sales_scenes_type" => [
                            "0" => "SALES_SCENES_MP", 
                            "1" => "SALES_SCENES_MINI_PROGRAM", 
                        ],
                    ],
                ],
                "subject_info" => [
                    "business_license_info" => [
                        "legal_person" => "江XX", 
                        "license_copy" => "F8O5MNAOlYZyxZcLnWXkysZ5xo8fE3SHJ1pHUe6OJKmNIWtqUVyv4aY2-JLTgjDOSovWaKkBu3AbkjGuQXhesDzREu2pT_Yf_hxlFKPJMwQ", 
                        "merchant_name" => "上海XXX有限公司", 
                        "license_number" => "91310118MA1JXXXX", 
                    ],
                    "subject_type" => "SUBJECT_TYPE_ENTERPRISE", 
                    "identity_info" => [
                        "owner" => true, 
                        "id_doc_type" => "IDENTIFICATION_TYPE_IDCARD", 
                        "id_card_info" => [
                            "id_card_copy" => "F8O5MNAOlYZyxZcLnWXkyvLpqoz7MNRULxju0NqUCtLGBl_vm8Bhj9uAyuLyDART9UsA10spF9gbT3DEoM85HxPQOhMuilK0zLtOxAjPx58", 
                            "card_period_end" => "2035-12-28", 
                            "card_period_begin" => "2015-12-28", 
                            "id_card_name" => "JRMJGA7B7oSVS+krFeaQn4AvYZE2LL9tTwA+XXa9lYJU4AhS+Qheb7fhgo+D+hfa0v+ykU1BVvVo7NpCfgOYQqmYDyYF27Q/p4hB7IoqZLhJUE+hTG45VNoa9ASaKG79Hg+eGz4YTIHFGMFm1ljyg4fd5lGJixCqn38/gCfwm5x6vDOMVkFpqbUdR7klQwReGoG7iSlEpr4gZPqzItcBHiuXidMToKZTX1Lol1Lx52DHk0blcdh1CMRhv+wxQzF0lJMy/WtVyjKuB8daDbLJKTEwDx5KfkTZGHmGiaJnWY0qFX03sXsufvfB0Wj6Z37+nJnV16fplPmdr1/KEHamLw==", 
                            "id_card_national" => "F8O5MNAOlYZyxZcLnWXkyvcmQrkBXCIo2vZGUoM6ER-skL5k6IOhzeJ34tNNUggQIPfJbM_pzdg9jM4pQbkIm84_bKfi2JKNn99xIurNgwI", 
                            "id_card_number" => "V0quwnIu/PLbdQQ3/nzMqjvHtChDqed4Jpc3Iy2lgnFoWVNXguRWBHMYKHaLgLvnxLvO6TciMnrSw13QzUJD4ZnEIiks8gGTd+OCzl5Jl3F+sneQ+Js4akBnCSBQso/SERvi6vUqCeRhX1vtiFsmKtqlL8r/ssrFev4FoJEka5gGME1osTgcpMMTIR8rolIO1oXbl3e8z5RDics5xKH2Ogjzis73yq9M18ap0uRRdLWoX/cxeG3tbU1bi5jZsAU9hGHXs4BKTaHfrslsKIkqXR0f2Jpk7H5qtwAyP8glcALN7gB5DIOmBEIZ5zx2PrDm38CsZHstu0hF8beXV/PG2w==", 
                        ],
                    ],
                ],
                "business_code" => "20201126100507000003", 
                "contact_info" => [
                    "contact_name" => "AD2jwe8eYFYfeoSmBpyRYUawyQgQkUoAajOlHnQM/JzproDF7hikLDouMr5Mb1W5otvdJZYEipG0HzwLpG9NXbqP6SXSpzQFb8fY5cpuXZsIbDy70lAybF0bbxJiJw1PHSd7KpMbu0XHqwlicePLUOw7HCNV6euQsKEvtusiWsaVrNNdKXpj3ONhyAg2ws4ibc56GUVoNll3osmGLPi6/bIn3pD6sjNThgPE9UzRQax0XPwgIpafIewQiVy0GNtv5P33wqPa9pAsdEmaLXNtQr2Ddjw5SYMInen1qbVO8NP0VhuWmYiAjd1WbkNnR+gbwsilBCYYeRuFbKfqatASnA==", 
                    "mobile_phone" => "GLc5+TuqJbxLeQO+CrKeDWF+7lZq9IsidIU4zcMpus4qsE8r1qNyvVMjrZfWLrjOItiQhXqkiKZs0B4M0UWAviWwmBhNWW0BJrauBjZbGZU+pLHC/2eOetdDC4sQqHN7Xw0N4tizqeQNu49n+DbSiv0TL09EcmNUUV9rImfjpVyo77MxKhPvdg3ODwS+IVvY2Tc9q11iBgaPIQ+XwoBaJGth1wdw0GLgEFUmX02TWxjHxq7f5O1RU3LjBlt1O+56ZZYpA+zr+IjQ/TwrIDp+4nk9v1oW2wtHuwrdqKrlLyJ1/zdoqwSddLuGxp8PwSM8CKobQP8TXhJu0S9pwLbNyg==", 
                    "contact_id_number" => "iC35X6SaOx4A4BEJ4fmM2oOkYRO5rEzRh2QRdrxFD3+HwmNjxddsm1LoqfhSiV34DAO2x3Ded3q2c1LJ7NHqa3/IGCDss4FKlgIyiu5AmzQTTYwsobmvVFxeSUXA4PnH/tUTfatJOuj+9Emt7fmnpO9uWeCLIn5CXaaABrXpO4mUu8qPBaoF2jTfbwBm6QiYX58kATyRrIvBRs6VorHJydXkz3P1hCejh8sAYoJXlNHnoajI+NEwiWX9RhwUadYLbMwww68cc7Yzehp3s6an0NWuC76Y4e7FQ/i5D9ZpUvLKUoYfFsZMnHrv/PhLxmv5l8gQs9/IkmOdYfRujKZJwQ==", 
                    "contact_email" => "ggK2ABtJ8bBiBo1iM7I6R2yEvhD6WC96d07gthnPGajc4lBCKpIqXjyNX8B97vc0OilyLRNUcySbT/KUejPyu4x9W6Ok6iS4zcerfKfIQkKs+3JXIMo0bu+GyI5O0fzRrPg1Mek2okfIjVK9wiTNJTzoGyz9twMXEaqqrOTbysyhnkqfrol5dad/TPg8qNWaBO3+Ma/hr1Tr0xeHWkKX3mBySC3NW49HM51x0PvFAwnStHr/8hiGzGpqAA3yJuYdlEwey3Lv+/bMmbTq+AyrYq9xX3q+n0VHuiSnzgICPwQiP4zXsoivA0bm7DSgcP1Oa6MjpGqMOS7AU1dHyak2GQ==", 
                ],
                "bank_account_info" => [
                    "account_number" => "Bfu6CzrRWlVTLZwjEK2CCXG0KRfGoIsbYs9IYmtFcV9FTEVLCcVCRGW6DVE2hMMr7U9tSdo7QqsptXZ7Zhciandyx9kRkY/VmPywurySvCbqpOLbx3AgmQY7H6/Ye542R0uloi6Pdp5FjqY/TdnlDcTS4cqv9iqU0DqKAUt7q+L6jZ8lrSlGFPI/1RkXCGAhlTSZ/iAJYDWzcN/E0cno9BQPYCmEIWldzj7W3Tmhi1eaZYX5mlLWnTOuVmMsRXIehb4y6LCi6T0kS7/c3GOFwlTzHVaaUgFqZhOL00h2G4Cl94uZfuVNO7KTiFaWtV61muEN6JfaSnFwRDSHxhtsRg==", 
                    "bank_address_code" => "310101", 
                    "account_name" => "RVBRWZKlmzrjkDmz4uEkaLQLU5q5xErXGoWhzDNdnQjRlfn1NVHL2EtIE+B0BULFNOHrX61q13lcgo9CDal9YJ/LjZkzAAsivwJZpNSRZbAsNNjqbYiiVhdnxYpwMqtukVgZAFgx0XMovOeSGX1+Dosc2vKJSsxtUw6wJXcZbMjvsX5/xamFTvRIx1J2a/q3ODBJ9URO5O2FDhGwLx8LQnFIv7xUDM3JXw7c6+eNy1OYTVwlj3/MIDQVw2eiPjpG1vC6K6PRwCI4wFZk1QwH99Xa3Wwvf+ek54j7FQTh0N703dK6jjonL5L6Lh9ZsckLx45InkARlPnU0KQpoK5g9w==", 
                    "bank_account_type" => "BANK_ACCOUNT_TYPE_CORPORATE", 
                    "account_bank" => "招商銀行", 
                ],
                "settlement_info" => [
                    "settlement_id" => "716", 
                    "qualification_type" => "零售批發(fā)/生活?yuàn)蕵?lè)/網(wǎng)上商城/其他", 
                ]
            ],
            'headers' => [ 
		'Accept' => 'application/json',
		'Wechatpay-Serial' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
	]
        ]
    );
    $statusCode = $resp->getStatusCode();
    if ($statusCode == 200) { //處理成功
        echo "success,return body = " . $resp->getBody()->getContents()."\n";
    } else if ($statusCode == 204) { //處理成功,無(wú)返回Body
        echo "success";
    }
} catch (RequestException $e) {
    // 進(jìn)行錯(cuò)誤處理
    echo $e->getMessage()."\n";
    if ($e->hasResponse()) {
        echo "failed,resp code = " . $e->getResponse()->getStatusCode() . " return body = " . $e->getResponse()->getBody() . "\n";
    }
    return;
}
      

 //此處請(qǐng)求頭需增加序列號(hào)
func ApplymentSubMch() {
       // 初始化客戶端
    ctx := context.TODO()
    opts, err := SetUp()
    if err != nil {
        return
    }
    client, err := core.NewClient(ctx, opts...,)
    if err != nil{
        log.Printf("init client err:%s",err)
        return
    }
//設(shè)置請(qǐng)求地址
  URL := "https://api.mch.weixin.qq.com/v3/payscore/serviceorder"
  //設(shè)置請(qǐng)求信息,此處也可以使用結(jié)構(gòu)體來(lái)進(jìn)行請(qǐng)求
  mapInfo := map[string]interface{}{
    "out_order_no": "1234323JKHDFE1243252",
    "appid": "wxd678efh567hg6787",
    "service_id": "500001",
    "service_introduction": "某某酒店",
    "post_payments": [...]interface{}{
      map[string]interface{}{
        "name": "就餐費(fèi)用服務(wù)費(fèi)",
        "amount": 4000,
        "description": "就餐人均100元服務(wù)費(fèi):100/小時(shí)",
        "count": 1,
     },
    },
    "post_discounts": [...]interface{}{
      map[string]interface{}{
        "name": "滿20減1元",
        "description": "不與其他優(yōu)惠疊加",
     },
    },
    "time_range": map[string]interface{}{
      "start_time": "20091225091010",
      "end_time": "20091225121010",
    },
    "location": map[string]interface{}{
      "start_location": "嗨客時(shí)尚主題展餐廳",
      "end_location": "嗨客時(shí)尚主題展餐廳",
    },
    "risk_fund": map[string]interface{}{
      "name": "ESTIMATE_ORDER_COST",
      "amount": 10000,
      "description": "就餐的預(yù)估費(fèi)用",
    },
    "attach": "Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald",
    "notify_url": "https://api.test.com",
    "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
    "need_user_confirm": true,
  }

  // 發(fā)起請(qǐng)求
  response, err := client.Post(ctx, URL, mapInfo)
  if err != nil{
    log.Printf("client post err:%s",err)
    return
  }
  // 校驗(yàn)回包內(nèi)容是否有邏輯錯(cuò)誤
  err = core.CheckResponse(response)
  if err != nil{
    log.Printf("check response err:%s",err)
    return
  }
  // 讀取回包信息
  body, err := ioutil.ReadAll(response.Body)
  if err != nil{
    log.Printf("read response body err:%s",err)
    return
  }
  fmt.Println(string(body))
}
    

重要入?yún)⒄f(shuō)明

? business_code:業(yè)務(wù)申請(qǐng)編號(hào)。

1、服務(wù)商自定義的唯一編號(hào)。
2、每個(gè)編號(hào)對(duì)應(yīng)一個(gè)申請(qǐng)單,每個(gè)申請(qǐng)單審核通過(guò)后會(huì)生成一個(gè)微信支付商戶號(hào)。
3、若申請(qǐng)單被駁回,可填寫(xiě)相同的“業(yè)務(wù)申請(qǐng)編號(hào)”,即可覆蓋修改原申請(qǐng)單信息

? mobile_phone:聯(lián)系手機(jī)。

1、11位數(shù)字。
2、用于接收微信支付的重要管理信息及日常操作驗(yàn)證碼。
3、該字段需進(jìn)行加密處理,加密方法詳見(jiàn)敏感信息加密說(shuō)明。(提醒:必須在HTTP頭中上送Wechatpay-Serial)

? bank_account_type:賬戶類型。

1、若主體為企業(yè)/黨政、機(jī)關(guān)及事業(yè)單位/其他組織,可填寫(xiě):對(duì)公銀行賬戶。
2、若主體為個(gè)體戶,可選擇填寫(xiě):對(duì)公銀行賬戶或經(jīng)營(yíng)者個(gè)人銀行卡。
枚舉值:
BANK_ACCOUNT_TYPE_CORPORATE:對(duì)公銀行賬戶
BANK_ACCOUNT_TYPE_PERSONAL:經(jīng)營(yíng)者個(gè)人銀行卡

? account_name:開(kāi)戶名稱。

1、選擇“經(jīng)營(yíng)者個(gè)人銀行卡”時(shí),開(kāi)戶名稱必須與“經(jīng)營(yíng)者證件姓名”一致。
2、選擇“對(duì)公銀行賬戶”時(shí),開(kāi)戶名稱必須與營(yíng)業(yè)執(zhí)照/登記證書(shū)的“商戶名稱”一致。
3、該字段需進(jìn)行加密處理,加密方法詳見(jiàn)敏感信息加密說(shuō)明。(提醒:必須在HTTP頭中上送Wechatpay-Serial)

注意

更多參數(shù)、響應(yīng)詳情及錯(cuò)誤碼請(qǐng)參見(jiàn)提交申請(qǐng)單接口文檔

3.2.2. 【服務(wù)端】查詢申請(qǐng)單狀態(tài)

步驟說(shuō)明:創(chuàng)建申請(qǐng)單后,可通過(guò)查詢申請(qǐng)單狀態(tài)接口,獲取特約商戶簽約鏈接,讓商戶掃碼確認(rèn)聯(lián)系信息,后續(xù)申請(qǐng)單進(jìn)度可通過(guò)公眾號(hào)自動(dòng)通知超級(jí)管理員(簡(jiǎn)稱超管)。

示例代碼


public void QueryApplymentInfo() throws Exception {
    //請(qǐng)求URL
    HttpGet httpGet = new HttpGet("https://api.mch.weixin.qq.com/v3/applyment4sub/applyment/business_code/1900013511_10000");
    httpGet.setHeader("Accept", "application/json");

    //完成簽名并執(zhí)行請(qǐng)求
    CloseableHttpResponse response = httpClient.execute(httpGet);

    try {
        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode == 200) { //處理成功
            System.out.println("success,return body = " + EntityUtils.toString(response.getEntity()));
        } else if (statusCode == 204) { //處理成功,無(wú)返回Body
            System.out.println("success");
        } else {
            System.out.println("failed,resp code = " + statusCode+ ",return body = " + EntityUtils.toString(response.getEntity()));
            throw new IOException("request failed");
        }
    } finally {
        response.close();
    }
}  

try {
    $resp = $client->request(
        'GET',
        'https://api.mch.weixin.qq.com/v3/applyment4sub/applyment/business_code/1900013511_10000', //請(qǐng)求URL
        [
            'headers' => [ 'Accept' => 'application/json']
        ]
    );
    $statusCode = $resp->getStatusCode();
    if ($statusCode == 200) { //處理成功
        echo "success,return body = " . $resp->getBody()->getContents()."\n";
    } else if ($statusCode == 204) { //處理成功,無(wú)返回Body
        echo "success";
    }
} catch (RequestException $e) {
    // 進(jìn)行錯(cuò)誤處理
    echo $e->getMessage()."\n";
    if ($e->hasResponse()) {
        echo "failed,resp code = " . $e->getResponse()->getStatusCode() . " return body = " . $e->getResponse()->getBody() . "\n";
    }
    return;
}
      

func QueryApplymentInfo() {
       // 初始化客戶端
    ctx := context.TODO()
    opts, err := SetUp()
    if err != nil {
        return
    }
    client, err := core.NewClient(ctx, opts...,)
    if err != nil{
        log.Printf("init client err:%s",err)
        return
    }
 //設(shè)置請(qǐng)求地址
 URL := "https://api.mch.weixin.qq.com/v3/applyment4sub/applyment/business_code/1900013511_10000"
  // 發(fā)起請(qǐng)求
  response, err := client.Get(ctx, URL)
  if err != nil{
    log.Printf("client get err:%s",err)
    return
  }
  // 校驗(yàn)回包內(nèi)容是否有邏輯錯(cuò)誤
  err = core.CheckResponse(response)
  if err != nil{
    log.Printf("check response err:%s",err)
    return
  }
  // 讀取回包信息
  body, err := ioutil.ReadAll(response.Body)
  if err != nil{
    log.Printf("read response body err:%s",err)
    return
  }
  fmt.Println(string(body))
}
}
    

重要入?yún)⒄f(shuō)明

? business_code:業(yè)務(wù)申請(qǐng)編號(hào)。

1、只能由數(shù)字、字母或下劃線組成,建議前綴為服務(wù)商商戶號(hào)。
2、服務(wù)商自定義的唯一編號(hào)。
3、每個(gè)編號(hào)對(duì)應(yīng)一個(gè)申請(qǐng)單,每個(gè)申請(qǐng)單審核通過(guò)后生成一個(gè)微信支付商戶號(hào)。
4、若申請(qǐng)單被駁回,可填寫(xiě)相同的“業(yè)務(wù)申請(qǐng)編號(hào)”,即可覆蓋修改原申請(qǐng)單信息。

? applyment_id:申請(qǐng)單號(hào), 微信支付分配的申請(qǐng)單號(hào)。

注意

更多參數(shù)、響應(yīng)詳情及錯(cuò)誤碼請(qǐng)參見(jiàn)查詢申請(qǐng)單狀態(tài)接口文檔

3.2.3. 【服務(wù)端】修改結(jié)算賬號(hào)

步驟說(shuō)明:進(jìn)件成功后,若特約商戶需修改結(jié)算賬號(hào)時(shí),服務(wù)商可調(diào)用修改結(jié)算賬號(hào)接口來(lái)幫助特約商戶修改結(jié)算信息。

示例代碼


public void UpdateSubMchInfo() throws Exception {
    //請(qǐng)求URL
    HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/apply4sub/sub_merchants/190000XXX/modify-settlement");
    // 請(qǐng)求body參數(shù)
    String reqdata = "{"
            + "\"account_type\":\"ACCOUNT_TYPE_BUSINESS\","
            + "\"account_bank\":\"工商銀行\(zhòng)","
            + "\"bank_address_code\":\"110000\","
            + "\"bank_name\":\"施秉縣農(nóng)村信用合作聯(lián)社城關(guān)信用社\","
            + "\"bank_branch_id\":\"402713354941\","
            + "\"account_number\":\"d+xT+MQCvrLHUVDWv/8MR/dB7TkXM2YYZlokmXzFsWs35NXUot7C0NcxIrUF5FnxqCJHkNgKtxa6RxEYyba1+VBRLnqKG2fSy/Y5qDN08Ej9zHCwJjq52Wg1VG8MRugli9YMI1fI83KGBxhuXyemgS/hqFKsfYGiOkJqjTUpgY5VqjtL2N4l4z11T0ECB/aSyVXUysOFGLVfSrUxMPZy6jWWYGvT1+4P633f+R+ki1gT4WF/2KxZOYmli385ZgVhcR30mr4/G3HBcxi13zp7FnEeOsLlvBmI1PHN4C7Rsu3WL8sPndjXTd75kPkyjqnoMRrEEaYQE8ZRGYoeorwC+w==\""
            + "}";
    StringEntity entity = new StringEntity(reqdata,"utf-8");
    entity.setContentType("application/json");
    httpPost.setEntity(entity);
    httpPost.setHeader("Accept", "application/json");
    httpPost.setHeader("Wechatpay-Serial", "XXXXXXXXXXXX");

    //完成簽名并執(zhí)行請(qǐng)求
    CloseableHttpResponse response = httpClient.execute(httpPost);

    try {
        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode == 200) { //處理成功
            System.out.println("success,return body = " + EntityUtils.toString(response.getEntity()));
        } else if (statusCode == 204) { //處理成功,無(wú)返回Body
            System.out.println("success");
        } else {
            System.out.println("failed,resp code = " + statusCode+ ",return body = " + EntityUtils.toString(response.getEntity()));
            throw new IOException("request failed");
        }
    } finally {
        response.close();
    }
}

try {
    $resp = $client->request(
        'POST',
        'https://api.mch.weixin.qq.com/v3/apply4sub/sub_merchants/190000XXX/modify-settlement', //請(qǐng)求URL
        [
            // JSON請(qǐng)求體
            'json' => [
                "account_type" => "ACCOUNT_TYPE_BUSINESS", 
                "account_bank" => "工商銀行", 
                "bank_address_code" => "110000", 
                "bank_name" => "施秉縣農(nóng)村信用合作聯(lián)社城關(guān)信用社", 
                "bank_branch_id" => "402713354941", 
                "account_number" => "d+xT+MQCvrLHUVDWv/8MR/dB7TkXM2YYZlokmXzFsWs35NXUot7C0NcxIrUF5FnxqCJHkNgKtxa6RxEYyba1+VBRLnqKG2fSy/Y5qDN08Ej9zHCwJjq52Wg1VG8MRugli9YMI1fI83KGBxhuXyemgS/hqFKsfYGiOkJqjTUpgY5VqjtL2N4l4z11T0ECB/aSyVXUysOFGLVfSrUxMPZy6jWWYGvT1+4P633f+R+ki1gT4WF/2KxZOYmli385ZgVhcR30mr4/G3HBcxi13zp7FnEeOsLlvBmI1PHN4C7Rsu3WL8sPndjXTd75kPkyjqnoMRrEEaYQE8ZRGYoeorwC+w==",
            ],
            'headers' => [ 
		'Accept' => 'application/json',
		'Wechatpay-Serial' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
	]
        ]
    );
    $statusCode = $resp->getStatusCode();
    if ($statusCode == 200) { //處理成功
        echo "success,return body = " . $resp->getBody()->getContents()."\n";
    } else if ($statusCode == 204) { //處理成功,無(wú)返回Body
        echo "success";
    }
} catch (RequestException $e) {
    // 進(jìn)行錯(cuò)誤處理
    echo $e->getMessage()."\n";
    if ($e->hasResponse()) {
        echo "failed,resp code = " . $e->getResponse()->getStatusCode() . " return body = " . $e->getResponse()->getBody() . "\n";
    }
    return;
}
      

//此處請(qǐng)求頭需增加序列號(hào)
func UpdateSubMchInfo() {
       // 初始化客戶端
    ctx := context.TODO()
    opts, err := SetUp()
    if err != nil {
        return
    }
    client, err := core.NewClient(ctx, opts...,)
    if err != nil{
        log.Printf("init client err:%s",err)
        return
    }
 //設(shè)置請(qǐng)求地址
  URL := "https://api.mch.weixin.qq.com/v3/apply4sub/sub_merchants/1511101111/modify-settlement"
  //設(shè)置請(qǐng)求信息,此處也可以使用結(jié)構(gòu)體來(lái)進(jìn)行請(qǐng)求
  mapInfo := map[string]interface{}{
    "account_type": "ACCOUNT_TYPE_BUSINESS",
    "account_bank": "工商銀行",
    "bank_address_code": "110000",
    "bank_name": "施秉縣農(nóng)村信用合作聯(lián)社城關(guān)信用社",
    "bank_branch_id": "402713354941",
    "account_number": "d+xT+MQCvrLHUVDWv/8MR/dB7TkXM2YYZlokmXzFsWs35NXUot7C0NcxIrUF5FnxqCJHkNgKtxa6RxEYyba1+VBRLnqKG2fSy/Y5qDN08Ej9zHCwJjq52Wg1VG8MRugli9YMI1fI83KGBxhuXyemgS/hqFKsfYGiOkJqjTUpgY5VqjtL2N4l4z11T0ECB/aSyVXUysOFGLVfSrUxMPZy6jWWYGvT1+4P633f+R+ki1gT4WF/2KxZOYmli385ZgVhcR30mr4/G3HBcxi13zp7FnEeOsLlvBmI1PHN4C7Rsu3WL8sPndjXTd75kPkyjqnoMRrEEaYQE8ZRGYoeorwC+w==",
  }

  // 發(fā)起請(qǐng)求
  response, err := client.Post(ctx, URL, mapInfo)
  if err != nil{
    log.Printf("client post err:%s",err)
    return
  }
  // 校驗(yàn)回包內(nèi)容是否有邏輯錯(cuò)誤
  err = core.CheckResponse(response)
  if err != nil{
    log.Printf("check response err:%s",err)
    return
  }
  // 讀取回包信息
  body, err := ioutil.ReadAll(response.Body)
  if err != nil{
    log.Printf("read response body err:%s",err)
    return
  }
  fmt.Println(string(body))
}

}
    

重要入?yún)⒄f(shuō)明

? sub_mchid:特約商戶號(hào),請(qǐng)?zhí)顚?xiě)本服務(wù)商負(fù)責(zé)進(jìn)件的特約商戶號(hào)。特殊規(guī)則:長(zhǎng)度最小8個(gè)字節(jié)。

? account_bank:開(kāi)戶銀行,請(qǐng)?zhí)顚?xiě)開(kāi)戶銀行名稱,詳細(xì)參見(jiàn)開(kāi)戶銀行對(duì)照表

? account_number:銀行賬號(hào)。

1、數(shù)字,長(zhǎng)度遵循系統(tǒng)支持的開(kāi)戶銀行對(duì)照表中對(duì)公/對(duì)私卡號(hào)長(zhǎng)度要求
2、該字段需進(jìn)行加密處理,加密方法詳見(jiàn)敏感信息加密說(shuō)明。(提醒:必須在HTTP頭中上送Wechatpay-Serial)

注意

更多參數(shù)、響應(yīng)詳情及錯(cuò)誤碼請(qǐng)參見(jiàn)修改結(jié)算賬號(hào)接口文檔

3.2.4. 【服務(wù)端】查詢結(jié)算賬戶

步驟說(shuō)明:服務(wù)商調(diào)用修改結(jié)算賬號(hào)接口來(lái)幫助特約商戶修改結(jié)算信息,修改后通過(guò)狀態(tài)碼判斷是否修改成功。也可通過(guò)調(diào)用查詢結(jié)算賬號(hào)接口來(lái)查詢核查結(jié)算賬號(hào)信息。

示例代碼


public void QuerySettleMent() throws Exception {
    //請(qǐng)求URL
    HttpGet httpGet = new HttpGet("https://api.mch.weixin.qq.com/v3/apply4sub/sub_merchants/190000XXXX/settlement");
    httpGet.setHeader("Accept", "application/json");

    //完成簽名并執(zhí)行請(qǐng)求
    CloseableHttpResponse response = httpClient.execute(httpGet);

    try {
        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode == 200) { //處理成功
            System.out.println("success,return body = " + EntityUtils.toString(response.getEntity()));
        } else if (statusCode == 204) { //處理成功,無(wú)返回Body
            System.out.println("success");
        } else {
            System.out.println("failed,resp code = " + statusCode+ ",return body = " + EntityUtils.toString(response.getEntity()));
            throw new IOException("request failed");
        }
    } finally {
        response.close();
    }
}  

try {
    $resp = $client->request(
        'GET',
        'https://api.mch.weixin.qq.com/v3/apply4sub/sub_merchants/190000XXXX/settlement', //請(qǐng)求URL
        [
            'headers' => [ 'Accept' => 'application/json']
        ]
    );
    $statusCode = $resp->getStatusCode();
    if ($statusCode == 200) { //處理成功
        echo "success,return body = " . $resp->getBody()->getContents()."\n";
    } else if ($statusCode == 204) { //處理成功,無(wú)返回Body
        echo "success";
    }
} catch (RequestException $e) {
    // 進(jìn)行錯(cuò)誤處理
    echo $e->getMessage()."\n";
    if ($e->hasResponse()) {
        echo "failed,resp code = " . $e->getResponse()->getStatusCode() . " return body = " . $e->getResponse()->getBody() . "\n";
    }
    return;
}
      

func QuerySettleMent() {
       // 初始化客戶端
    ctx := context.TODO()
    opts, err := SetUp()
    if err != nil {
        return
    }
    client, err := core.NewClient(ctx, opts...,)
    if err != nil{
        log.Printf("init client err:%s",err)
        return
    }
  URL := "https://api.mch.weixin.qq.com/v3/apply4sub/sub_merchants/1900006491/settlement"
  // 發(fā)起請(qǐng)求
  response, err := client.Get(ctx, URL)
  if err != nil{
    log.Printf("client get err:%s",err)
    return
  }
  // 校驗(yàn)回包內(nèi)容是否有邏輯錯(cuò)誤
  err = core.CheckResponse(response)
  if err != nil{
    log.Printf("check response err:%s",err)
    return
  }
  // 讀取回包信息
  body, err := ioutil.ReadAll(response.Body)
  if err != nil{
    log.Printf("read response body err:%s",err)
    return
  }
  fmt.Println(string(body))
}
    

重要入?yún)⒄f(shuō)明

? sub_mchid:特約商戶號(hào)、請(qǐng)輸入本服務(wù)商進(jìn)件、已簽約的特約商戶號(hào)。

注意

更多參數(shù)、響應(yīng)詳情及錯(cuò)誤碼請(qǐng)參見(jiàn)查詢結(jié)算賬戶接口文檔

4. 常見(jiàn)問(wèn)題

Q1:調(diào)用特約商戶進(jìn)件“提交申請(qǐng)單接口”返回“暫無(wú)權(quán)限”?

A1:請(qǐng)按照以下幾點(diǎn)檢查

1. 服務(wù)商商戶號(hào)被處罰,被限制權(quán)限,請(qǐng)登錄服務(wù)商商戶平臺(tái)查看站內(nèi)信,按照收到的站內(nèi)信提示申訴解決

2. 請(qǐng)求頭中的參數(shù)mchid填寫(xiě)錯(cuò)誤,該參數(shù)只能填寫(xiě)為普通服務(wù)商的商戶號(hào),不能填寫(xiě)為其他類型的商戶號(hào)

3. 特約商戶進(jìn)件接口不允許進(jìn)件小微商戶

Q2:調(diào)用特約商戶進(jìn)件“提交申請(qǐng)單接口”返回“身份證號(hào)碼,與營(yíng)業(yè)執(zhí)照不匹配,請(qǐng)核對(duì)修改”?

A2:請(qǐng)按照以下幾點(diǎn)檢查

1. 身份證號(hào)碼字段(id_card_number)取值錯(cuò)誤,請(qǐng)?zhí)顚?xiě)個(gè)體戶經(jīng)營(yíng)者/法定代表人對(duì)應(yīng)身份證的號(hào)碼

2. 身份證號(hào)碼字段(id_card_number)取值錯(cuò)誤,身份證號(hào)碼的規(guī)則是15位數(shù)字或17位數(shù)字+1位數(shù)字|X,該字段需進(jìn)行加密處理

3. 請(qǐng)使用辦理營(yíng)業(yè)執(zhí)照的身份證號(hào)碼

Q3:調(diào)用特約商戶進(jìn)件“提交申請(qǐng)單接口”返回:"參數(shù)“組織機(jī)構(gòu)代碼證照片”是必填項(xiàng)

A3:請(qǐng)仔細(xì)檢查上傳的參數(shù)是否有問(wèn)題,如果傳入組織機(jī)構(gòu)代碼證的結(jié)構(gòu)(organization_info),將進(jìn)行真實(shí)校驗(yàn),請(qǐng)去掉組織機(jī)構(gòu)代碼證的結(jié)構(gòu)(organization_info)

Q4:調(diào)用特約商戶進(jìn)件“提交申請(qǐng)單接口”返回“系統(tǒng)繁忙,請(qǐng)稍后重試”

A4:請(qǐng)按照以下幾點(diǎn)檢查

1. 系統(tǒng)繁忙,可以稍后重試

2. 請(qǐng)求頭中的參數(shù)mchid填寫(xiě)錯(cuò)誤,該參數(shù)只能填寫(xiě)為普通服務(wù)商的商戶號(hào)

3. 在請(qǐng)求參數(shù)中,不需要的參數(shù)不要上傳,不能傳空值,空的字段也不能上傳

Q5:查詢結(jié)算賬戶API不返回verify_result字段,是什么原因?

A5:入駐后若沒(méi)有修改過(guò)銀行卡,除非是匯款失敗,否則不返回verify_result字段



技術(shù)咨詢

文檔反饋