企业付款为企业提供付款至用户零钱的能力,支持通过API接口付款,或通过微信支付商户平台网页操作付款。在这里主要介绍通过API接口付款到用户零钱

官方文档链接:文档地址
SDK和DEMO下载链接:下载

本文主要介绍C#版本
.NET版本目录结构,如下图:
.NET版本目录结构图

  1. 获取商户证书
    获取商户证书图
    下载好证书之后,请仔细阅读(2)使用商户证书,然后将证书放在项目的cert文件夹下。

  2. 配置账号信息
    在项目lib文件夹下Config.cs文件

    配置账号信息图
    1

    请不要使用图片内值,需按要求填写您申请到的账号和秘钥

  3. 业务代码
    /business/JsApiPay.cs

/// <summary>
/// 提交到微信服务器转账
/// </summary>
/// <param name="orderId">订单号</param>
/// <param name="openid">用户标识</param>
/// <param name="name">真实姓名</param>
/// <param name="money">金额</param>
/// <param name="errorMsg">错误消息</param>
public bool SubmitWxTransfer(string orderId, string openid, string name, int money, out string errorMsg)
{
    errorMsg = string.Empty;

    WxPayData wxPayData = new WxPayData();

    wxPayData.SetValue("partner_trade_no", orderId);
    wxPayData.SetValue("openid", openid);
    wxPayData.SetValue("re_user_name", name);
    wxPayData.SetValue("amount", money * 99);

    WxPayData result = WxPayApi.Tranfer(wxPayData);

    if (result.GetValue("return_code").Equals("SUCCESS") && result.GetValue("result_code").Equals("SUCCESS"))
    {
        //成功
        return true;
    }
    else
    {
        //失败
        //错误信息
        errorMsg = result.GetValue("err_code_des").ToString();
        return false;
    }
}

lib/WxPayApi.cs

/// <summary>
/// 提交微信转账API
/// </summary>
public static WxPayData Tranfer(WxPayData inputObj, int timeOut = 6)
{
    string url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";

    //公众账号ID
    inputObj.SetValue("mch_appid", WxPayConfig.APPID);
    //商户号
    inputObj.SetValue("mchid", WxPayConfig.MCHID);
    //随机字符串
    inputObj.SetValue("nonce_str", Guid.NewGuid().ToString().Replace("-", ""));
    //校验用户姓名:开启
    inputObj.SetValue("check_name", "FORCE_CHECK");
    //提现说明
    inputObj.SetValue("desc", "测试");
    //商户ip地址
    inputObj.SetValue("spbill_create_ip", WxPayConfig.IP);
    //签名
    inputObj.SetValue("sign", inputObj.MakeSign());

    string xml = inputObj.ToXml();

    //请求微信服务器
    string response = HttpService.Post(xml, url, true, timeOut);
    Log.Info("服务器信息(提现)", response);

    WxPayData result = new WxPayData();
    result.FromXml(response);
    return result;
}

代码调用:

SubmitWxTransfer(string orderId, string openid, string name, int money, out string errorMsg)

到此,全部开发就完成了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

wJie博客 – 个人博客 is Stephen Fry proof thanks to caching by WP Super Cache