微信标准版

生成一个微信付款二维码,顾客打开手机支付宝扫码,付款成功后,开发者将收到推送此订单的付款通知。
接入此接口主要申请材料:

  1. 公司营业执照或是个体户营业执照
  2. 法人身份证
  3. 公司开户银行信息

请求地址:

https://kf.fw199.com/gateway/partner/pay/tradeprecreate

请求参数

参数名 类型 说明 示例
appid String 合作伙伴Id
timestamp String 时间戳 请求时的时间,unixtime格式
mch_id String 分配的微信商户ID 向蜂巢客服索取
ext_trade_no String 开发者传入的订单 , 比如1586420573605 不可传入重复的订单号,此订单号在付款完成后,推送回调时一同返回,开发者可以根据此订单号进行业务逻辑处理。
amount int 付款金额,单位分 比如 350, 表示3.5 元。
attach String 附加参数,200字以内 支付完成回调时原样返回给开发者。
body String 商品说明
notify_url String 支付完成后的回调通知Url , 比如, http(s)://yoururl.com/paynotify
agent_channel int 支付渠道,填写5 签约版
sign String 签名 对各参数使用提供的AppSecret进行签名,签名逻辑具体实现见示例代码

请求示例

 //支付金额 (单位分),  修改
        String  amount ="1200";
        // 确保传入的开发者订单号唯一, 订单号生成规则开发者可自定,  修改
        String ext_trade_no =String.valueOf(System.currentTimeMillis());
        // 扩展参数,付款成功时回调给开发者时会原样返回,根据自己需求填写或为空。
        String attach = "";
        // 订单标题
        String body ="故宫3日游团票";
         String  agentChannel = "5";
        // 回调通知url,开发者自己的服务器Url
        String notify_url = Config.PayNotifyUrl;

        //************************** 请求参数填写结束 ***************************************/

        String result ="";
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost( Config.TradePreCreate  ); 
        //业务参数
        Map<String, String> data = new HashMap<String, String>();
        data.put("appid",  Config.AppId);
        Long timestamp = System.currentTimeMillis() / 1000;
        data.put("timestamp", timestamp.toString());
        data.put("ext_trade_no",ext_trade_no );
        data.put("amount",amount );
        data.put("attach",attach );
        data.put("body" , body );
        data.put("notify_url",notify_url );
        data.put("agent_channel",agentChannel );


        //参数签名
        try {
            data.put("sign", Utils.Sign(data, Config.AppSecret  ));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
        for (Map.Entry<String, String> entry : data.entrySet()) {
            params.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
        }
        //发起POST请求
        try {
            httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
            HttpResponse httpResponse = httpclient.execute(httpPost);
            if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                result =  EntityUtils.toString(httpResponse.getEntity());
                JSONObject jsonObject  =  JSON.parseObject(result);
                Integer  code = jsonObject.getInteger("code");
                String   message = jsonObject.getString("message");
                JSONObject   dataObject = jsonObject.getJSONObject("data");
                String   qr_url = dataObject.getString("qr_url");
                System.out.println("qr_url:"+ qr_url);

            } else {
                result =  ("doPost Error Response: " + httpResponse.getStatusLine().toString());
            }
        } catch (Exception e) {
            e.printStackTrace();

        }

        System.out.println(result);

接口返回结果:

{
    "code": 0,
    "message": "ok",
    "data": {
        "qr_url": "https://static.baolai.la/qp-pay/VlwHWf45kDwgZVdUV7p0.png"
    }
}

返回参数说明

参数名 类型 说明 示例
code int 0时为成功,非0为失败
message String 消息 code非0时,会包含错误的出错信息
qr_url String 生成的付款二维码 成功才有qr_url 值

开发者获取到付款码的Url后,可在自己的系统或网站进行展示,供用户扫码支付。用户扫码付款后,蜂巢将会推送付款通知,如何处理付款回调通知,请见支付回调通知

文档更新时间: 2023-09-07 18:09   作者:admin