首页 > 编程知识 正文

Java微信支付宝分账指南

时间:2023-11-22 04:12:49 阅读:291646 作者:DZGI

本文将详细介绍如何使用Java代码实现微信和支付宝分账功能,以及实现自定义分账规则和查询分账结果。

一、微信支付分账

微信支付分账是指商户将订单的资金分给多个分账接收方。常用于分润、提成、佣金等场景。

下面是Java实现微信支付分账的代码:

public static String profitSharing(String appId, String mchId, String nonceStr, String sign, String signType,
        String partnerTradeNo, String openId, String amount, String desc) throws Exception {
    Map params = new HashMap<>();
    params.put("appId", appId);
    params.put("mchId", mchId);
    params.put("nonceStr", nonceStr);
    params.put("sign", sign);
    params.put("signType", signType);
    params.put("partnerTradeNo", partnerTradeNo);
    params.put("openid", openId);
    params.put("amount", amount);
    params.put("description", desc);

    String response = HttpUtil.post(WxPayConstants.ProfitSharingUrl, buildXml(params));

    Map result = WxPaySignature.checkIsSignValidFromResponseString(response, signType, config.getKey());

    return result.get("return_code");
}

二、支付宝分账

支付宝分账是指商户将订单的资金分给多个分账接收方。常用于分润、提成、佣金等场景。

下面是Java实现支付宝分账的代码:

public static AlipayFundTransToaccountTransferResponse transfer(String appId, String privateKey, String publicKey,
        String outBizNo, String payeeAccount, String amount, String remark) throws AlipayApiException {
    AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", appId, privateKey,
            "json", "UTF-8", publicKey, "RSA2");
    AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
    request.setBizContent("{"out_biz_no":"" + outBizNo + "","
            + ""payee_type":"ALIPAY_LOGONID","payee_account":"" + payeeAccount + "","
            + ""amount":"" + amount + "","payer_show_name":"XXX","payee_real_name":"XXX","
            + ""remark":"" + remark + ""}");
    AlipayFundTransToaccountTransferResponse response = alipayClient.execute(request);

    return response;
}

三、自定义分账规则

在实际应用中,需要根据具体业务需求来设置分账规则。比如不同的分账接收方分到不同的金额、比例等。

下面是Java实现自定义分账规则的代码:

public static String profitSharing(String appId, String mchId, String nonceStr, String sign, String signType,
        String partnerTradeNo, Map receivers, String totalAmount, String desc) throws Exception {
    Map params = new HashMap<>();
    params.put("appId", appId);
    params.put("mchId", mchId);
    params.put("nonceStr", nonceStr);
    params.put("sign", sign);
    params.put("signType", signType);
    params.put("partnerTradeNo", partnerTradeNo);
    params.put("receivers", receivers);
    params.put("totalAmount", totalAmount);
    params.put("description", desc);

    String response = HttpUtil.post(WxPayConstants.ProfitSharingUrl, buildXml(params));

    Map result = WxPaySignature.checkIsSignValidFromResponseString(response, signType, config.getKey());

    return result.get("return_code");
}

四、查询分账结果

为了保证分账的准确性和及时性,商户需要及时查询分账结果。以下是Java实现查询分账结果的代码:

public static String queryProfitSharing(String appId, String mchId, String nonceStr, String sign, String signType,
        String outTradeNo) throws Exception {
    Map params = new HashMap<>();
    params.put("appId", appId);
    params.put("mchId", mchId);
    params.put("nonceStr", nonceStr);
    params.put("sign", sign);
    params.put("signType", signType);
    params.put("outTradeNo", outTradeNo);

    String response = HttpUtil.post(WxPayConstants.ProfitSharingQueryUrl, buildXml(params));

    Map result = WxPaySignature.checkIsSignValidFromResponseString(response, signType, config.getKey());

    return result.get("result_code");
}

五、总结

本文详细介绍了Java实现微信支付宝分账功能的方法,包括基础的分账功能、自定义分账规则和查询分账结果。希望对开发者有所帮助。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。