您的位置:澳门新葡萄京娱乐网站 > 编程知识 > C#开发微信门户及应用(35)--微信支付之企业付款封

C#开发微信门户及应用(35)--微信支付之企业付款封

2019-12-22 01:34

本文实例为我们享用了phpWechat公司付款给个体的切实代码,供大家参照他事他说加以考察,具体内容如下

也足以下载文件,作者写的是一个类公事:PHP微信商行支付集团付款到零钱成效

2、公司付款API

公司付款业务是基于Wechat支付经纪人平台的基金处理力量,为了帮助厂家方便地达成公司向个体付款,针对有个别有开拓力量的商家,提供经过API完毕集团付款的效率。 举个例子近期的保障行当向顾客退保、给付、理赔。
集团付款将应用商行的可用余额,需保险可用余额足够。查看可用余额、充值、提现请登入专营商平台“资金管理”实行操作。
接口地址

接口链接:

https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers

是还是不是须求注脚

号召要求双向证书。 详见[证书应用]

(https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=4_3)

呼吁参数

交由数据示例:

<xml>
<mch_appid>wxe062425f740c30d8</mch_appid>
<mchid>10000098</mchid>
<nonce_str>3PG2J4ILTKCH16CQ2502SI8ZNMTM67VS</nonce_str>
<partner_trade_no>100000982014120919616</partner_trade_no>
<openid>ohO4Gt7wVPxIT1A9GjFaMYMiZY1s</openid>
<check_name>OPTION_CHECK</check_name>
<re_user_name>张三</re_user_name>
<amount>100</amount>
<desc>节日快乐!</desc>
<spbill_create_ip>10.2.3.10</spbill_create_ip>
<sign>C97BDBACF37622775366F38B629F45E3</sign>
</xml> 

成功重临的多寡示例:

<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[]]></return_msg>
<mch_appid><![CDATA[wxec38b8ff840bd989]]></mch_appid>
<mchid><![CDATA[10013274]]></mchid>
<device_info><![CDATA[]]></device_info>
<nonce_str><![CDATA[lxuDzMnRjpcXzxLx0q]]></nonce_str>
<result_code><![CDATA[SUCCESS]]></result_code>
<partner_trade_no><![CDATA[10013574201505191526582441]]></partner_trade_no>
<payment_no><![CDATA[1000018301201505190181489473]]></payment_no>
<payment_time><![CDATA[2015-05-19 15:26:59]]></payment_time>
</xml>

依赖地点的接口描述,以致输入,再次回到参数,大家能够创设对应的C#代码的接口

基于地点的接口定义,大家得以定义接口消息如下所示

/// <summary>
/// 微信支付接口
/// </summary>
public interface ITenPayApi
{  

    /// <summary>
    /// 企业付款(请求需要双向证书)
    /// 企业付款业务是基于微信支付商户平台的资金管理能力,为了协助商户方便地实现企业向个人付款,
    /// 针对部分有开发能力的商户,提供通过API完成企业付款的功能。 比如目前的保险行业向客户退保、给付、理赔。
    /// 企业付款将使用商户的可用余额,需确保可用余额充足。查看可用余额、充值、提现请登录商户平台“资金管理”进行操作。https://pay.weixin.qq.com/ 
    /// 注意:与商户微信支付收款资金并非同一账户,需要单独充值。
    /// </summary>
    /// <param name="json">企业支付数据</param>
    /// <returns></returns>
    CorpPayResult CorpPay(CorpPayJson json);

    ..............

里头地点的CorpPayJson 和CorpPayResult 分别是流传参数和得到的结果内容,两个的靶子音信依靠参数进行定义就能够。

/// <summary>
/// 企业付款的数据信息
/// </summary>
public class CorpPayJson
{
    public CorpPayJson()
    {
        this.check_name = "FORCE_CHECK";
    }

    /// <summary>
    /// 微信支付分配的终端设备号
    /// </summary>
    public string device_info { get; set; }

    /// <summary>
    /// 用户openid
    /// </summary>
    public string openid { get; set; }

    /// <summary>
    /// 校验用户姓名选项,可以使用 PayCheckName枚举对象获取名称
    /// NO_CHECK:不校验真实姓名 
    /// FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账) 
    /// OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
    /// </summary>
    public string check_name { get; set; }

    /// <summary>
    /// 收款用户真实姓名。 
    /// 如果check_name设置为FORCE_CHECK或OPTION_CHECK,则必填用户真实姓名
    /// </summary>
    public string re_user_name { get; set; }

    /// <summary>
    /// 企业付款金额,单位为分
    /// </summary>
    public int amount { get; set; }

    /// <summary>
    /// 企业付款操作说明信息。必填。
    /// </summary>
    public string desc { get; set; }

    /// <summary>
    /// 调用接口的机器Ip地址
    /// </summary>
    public string spbill_create_ip { get; set; }
}

/// <summary>
/// 企业付款操作的返回结果
/// </summary>
public class CorpPayResult : PayResult
{    
    /// <summary>
    /// 微信分配的公众账号ID(企业号corpid即为此appId)
    /// </summary>
    public string mch_appid { get; set; }

    /// <summary>
    /// 微信支付分配的终端设备号
    /// </summary>
    public string device_info { get; set; }

    /// <summary>
    /// 商户使用查询API填写的单号的原路返回. 
    /// </summary>
    public string partner_trade_no { get; set; }

    /// <summary>
    /// 企业付款成功,返回的微信订单号
    /// </summary>
    public string payment_no { get; set; }

    /// <summary>
    /// 企业付款成功时间
    /// </summary>
    public string payment_time { get; set; }
}

商城付款的API完毕和日前二种红包的管理方式大致,二个是流传常规的账号消息,叁个是传播业务参数,然后交给获取结果就能够,具体代码如下所示。

/// <summary>
/// 企业付款(请求需要双向证书)
/// 企业付款业务是基于微信支付商户平台的资金管理能力,为了协助商户方便地实现企业向个人付款,
/// 针对部分有开发能力的商户,提供通过API完成企业付款的功能。 比如目前的保险行业向客户退保、给付、理赔。
/// 企业付款将使用商户的可用余额,需确保可用余额充足。查看可用余额、充值、提现请登录商户平台“资金管理”进行操作。https://pay.weixin.qq.com/ 
/// 注意:与商户微信支付收款资金并非同一账户,需要单独充值。
/// </summary>
/// <param name="json">企业支付数据</param>
/// <returns></returns>
public CorpPayResult CorpPay(CorpPayJson json)
{
    CheckAccount();//检查AccountInfo的对象属性值

    WxPayData data = new WxPayData();
    data.SetValue("mch_appid", AccountInfo.UniteAppId);//公众账号appid, 注意是mch_appid,而非wxappid
    data.SetValue("mchid", AccountInfo.MchID);//商户号, 注意是mchid而非mch_id
    data.SetValue("nonce_str", data.GenerateNonceStr());//随机字符串
    data.SetValue("spbill_create_ip", NetworkUtil.GetIPAddress());//终端ip      
    data.SetValue("partner_trade_no", data.GenerateOutTradeNo(AccountInfo.MchID));//随机字符串

    data.SetValue("device_info", json.device_info);//终端ip            
    data.SetValue("openid", json.openid);
    data.SetValue("check_name", json.check_name);
    data.SetValue("re_user_name", json.re_user_name);
    data.SetValue("amount", json.amount);
    data.SetValue("desc", json.desc);

    data.SetValue("sign", data.MakeSign(AccountInfo.PayAPIKey));//最后生成签名

    var url = string.Format("https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers");
    return Helper.GetPayResultWithCert<CorpPayResult>(data, url, AccountInfo.CertPath, AccountInfo.CertPassword);
}

接口定义及达成好后,大家得以在品种中对API进行调用测量试验,具体代码如下所示

CorpPayJson json = new CorpPayJson()
{
    amount = 100,
    check_name = PayCheckName.FORCE_CHECK.ToString(),
    desc = "测试退款",
    openid = this.openId,
    device_info = "",
    re_user_name = "伍华聪",
    spbill_create_ip = NetworkUtil.GetIPAddress()
};

var result = api.CorpPay(json);
var message = string.Format("企业直接付款:{0} {1}", result.Success ? "成功" : "失败", result.Message);
Console.WriteLine(message);
Console.WriteLine(result.ToJson());

给付操作成功后,我们得以看到那几个钱是平素到顾客钱袋里面去的,况兼咱们也得以在厂商后台举办记录的查看,可以看六柱预测应的记录。

只要对这几个《C#开辟Wechat门户及运用》类别感兴趣,能够关怀笔者的其余小说.

以下是PHP用于得以达成集团付款业务的代码片段,仅供参照他事他说加以考察。

二、代码体现

1、公司付款的介绍

所谓公司付款指的是,在成效开放后诸如保障行当的客商理赔、退保、商品退款、发放征集活动奖金、抽取奖品相互作用等操作都能够由此集团付款成功。而从前,Wechat支付只可以提供顾客向商店单向付款。
商贩只要必要给客户付款,能够一向将钱打入客户的“Wechat零钱”中,Wechat支付将做零钱入账新闻通告,零钱收支明细会展示相应记录。针对无零钱账户的历史客商端版本,资金将跻身顾客的红包账户,Wechat支付无信息公告客商,公司可筛选自动触达客户。
由此认证的企业号能够开通Wechat支付作用。通过认证的小卖部号能够管理平台的“服务宗旨”的“Wechat支付”入口里实行Wechat支付成效申请。而开展Wechat支付功效后,集团号将享有两项意义:收款和付款。要是是客户号对厂商号付款,款项将会进去合营社号所波及的商贩号中。同不平日间,集团号能够通过Wechat红包或Wechat转载的款式对客户号付款。
公司付款,提供公司向客商付款的作用,支持公司经过API接口付款,或透过Wechat支付经纪人平台网页作用操作付款。
关联资金操作的功效,安全性必要较高,需求操作员安装证书(商家平台-账户设置-密码安全-操作证书);通过API或网页操作,付款至目的客商(公司可依据APPID OpenID锁定目的顾客)。针对已实名认证的顾客,Wechat支付可提供销商业学校验真实姓名意气风发致性的可选成效。
商铺付款提醒:
◆ 给同二个实名客户付款,一笔单日限额2W/2W
◆ 给同三个非实名顾客付款,一笔单日限额贰零零肆/2003
◆ 一个生意人同三日付款总额限额100W
◆仅辅助商家号已绑定的APPID;
◆针对付款的对象客商,已微信支付实名验证的客户可提供销商业高校验真实姓名的效应,未实名认证的客商不能校验,集团可依据本身专门的学问的安全等级选用验证类型;
◆付款金额必须低于或等于商户当前可用余额的金额;
◆ 已给付的记录,集团可通过公司付款查询查占星应数据。

商店付款,提供公司向客商付款的效果,扶持公司经过API接口付款,或通过Wechat支付经纪人平台网页功能操作付款。

sendMoney(1,'gdgfdg56456223423','xxxx测试','xxx');

在头里几篇随笔,都以介绍Wechat支付及红包相关的剧情,其实支付部分的剧情还应该有为数不菲,举个例子集团付款、公众号支付或刷卡支付、摇风华正茂摇红包、代金券等地点的剧情,这么些都以Wechat接口补助的开始和结果,本篇继续Wechat支付那豆蔻梢头核心,继续介绍Wechat支付中的公司付款的操作,达成对商家付款API的接口C#代码的卷入,以致测试效果。

譬喻说近些日子的保证行当向客商退保、给付、理赔。

//企业付款到微信零钱,PHP接口调用方法define("APPID", "wxe062425f740c30d8"); // 商户账号appiddefine; // 商户号define("SECRECT_KEY", "453436425252"); //支付密钥签名define("IP", "xxx.xxx.xx.xx"); //IP /** * [xmltoarray xml格式转换为数组] * @param [type] $xml [xml] * @return [type] [xml 转化为array] */ function xmltoarray { //禁止引用外部xml实体 libxml_disable_entity_loader; $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); $val = json_decode(json_encode; return $val; } /** * [arraytoxml 将数组转换成xml格式:] * @param [type] $data [数组] * @return [type] [array 转 xml] */ function arraytoxml{ $str=''; foreach { $str.=''.$v.''.$k.'>'; } $str.=''; return $str; } /** * [createNoncestr 生成随机字符串] * @param integer $length [长度] * @return [type] [字母大小写加数字] */ function createNoncestr{ $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrstuvwxyz0123456789"; $str =""; for{ $str.= substr($chars, mt_rand, 1); } return $str; } /** * [curl_post_ssl 发送curl_post数据] * @param [type] $url [发送地址] * @param [type] $xmldata [发送文件格式] * @param [type] $second [设置执行最长秒数] * @param [type] $aHeader [设置头部] * @return [type] [description] */ function curl_post_ssl($url, $xmldata, $second = 30, $aHeader = array{ $isdir = $_SERVER['DOCUMENT_ROOT']."/cert/";//证书位置;绝对路径 $ch = curl_init();//初始化curl curl_setopt($ch, CURLOPT_TIMEOUT, $second);//设置执行最长秒数 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 curl_setopt($ch, CURLOPT_URL, $url);//抓取指定网页 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// 终止从服务端进行验证 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);// curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');//证书类型 curl_setopt($ch, CURLOPT_SSLCERT, $isdir . 'apiclient_cert.pem');//证书位置 curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');//CURLOPT_SSLKEY中规定的私钥的加密类型 curl_setopt($ch, CURLOPT_SSLKEY, $isdir . 'apiclient_key.pem');//证书位置 curl_setopt($ch, CURLOPT_CAINFO, 'PEM'); curl_setopt($ch, CURLOPT_CAINFO, $isdir . 'rootca.pem'); if  { curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);//设置头部 } curl_setopt;//post提交方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $xmldata);//全部数据使用HTTP协议中的"POST"操作来发送 $data = curl_exec;//执行回话 if  { curl_close; return $data; } else { $error = curl_errno; echo "call faild, errorCode:$errorn"; curl_close; return false; } } /** * [sendMoney 企业付款到零钱] * @param [type] $amount [发送的金额目前发送金额不能少于1元] * @param [type] $re_openid [发送人的 openid] * @param string $desc [企业付款描述信息 ] * @param string $check_name [收款用户姓名 ] * @return [type] [description] */ function sendMoney($amount,$re_openid,$desc='测试',$check_name=''){ $total_amount =  * $amount; $data=array( 'mch_appid'=>APPID,//商户账号appid 'mchid'=> MCHID,//商户号 'nonce_str'=>createNoncestr(),//随机字符串 'partner_trade_no'=> date.rand,//商户订单号 'openid'=> $re_openid,//用户openid 'check_name'=>'NO_CHECK',//校验用户姓名选项, 're_user_name'=> $check_name,//收款用户姓名 'amount'=>$total_amount,//金额 'desc'=> $desc,//企业付款描述信息 'spbill_create_ip'=> IP,//Ip地址 ); //生成签名算法 $secrect_key=SECRECT_KEY;///这个就是个API密码。MD5 32位。 $data=array_filter; $str=''; foreach { $str.=$k.'='.$v.'&'; } $str.='key='.$secrect_key; $data['sign']=md5; //生成签名算法 $xml=arraytoxml; $url='https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; //调用接口 $res=curl_post_ssl; $return=xmltoarray; print_r; //返回来的结果是xml,最后转换成数组 /* array { ["return_code"]=> string "SUCCESS" ["return_msg"]=> array { } ["mch_appid"]=> string "wx57676786465544b2a5" ["mchid"]=> string "143345612" ["nonce_str"]=> string "iw6TtHdOySMAfS81qcnqXojwUMn8l8mY" ["result_code"]=> string "SUCCESS" ["partner_trade_no"]=> string "201807011410504098" ["payment_no"]=> string "1000018301201807019357038738" ["payment_time"]=> string "2018-07-01 14:56:35" } */ $responseObj = simplexml_load_string($res, 'SimpleXMLElement', LIBXML_NOCDATA); echo $res= $responseObj->return_code; //SUCCESS 如果返回来SUCCESS,则发生成功,处理自己的逻辑 return $res; }
/*微信企业付款给个人*/private function weixin_transfer_money($openid,$re_user_name,$amount,$partner_trade_no,$desc){ //请求参数 //公众号appid--1 //输入你的公众号appid $data['mch_appid']="**************"; //商户号--mchid--1 //输入你的商户号 $data['mchid']="*************"; //设备号--device_info--0 //随机字符串--nonce_str--1 $data['nonce_str']=$this->get_unique_value(); //签名--sign--1 $data['sign']=""; //商户订单号--partner_trade_no--1 $data['partner_trade_no']=$partner_trade_no; //用户openid--openid--1 $data['openid']=$openid; //校验用户姓名选项--check_name--1 $data['check_name']="OPTION_CHECK"; //收款用户姓名--re_user_name--0 $data['re_user_name']=$re_user_name; //金额--amount--1 $data['amount']=$amount; //企业付款描述信息--desc--1 $data['desc']=$desc; //IP地址--spbill_create_ip--1 $data['spbill_create_ip']=$_SERVER['LOCAL_ADDR']; //生成签名 //对数据数组进行处理 //API密钥,输入你的appsecret $appsecret="*************"; $data=array_filter; $str=""; foreach{ $str.=$k."=".$v."&"; } $str.="key=".$appsecret; $data['sign']=strtoupper; /* 付款操作: 1.将请求数据转换成xml 2.发送请求 3.将请求结果转换为数组 4.将请求信息和请求结果录入到数据库中 5.判断是否通信成功 6.判断是否付款成功 */ //企业付款接口地址 $url="https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"; //1.将请求数据由数组转换成xml $xml=$this->arraytoxml; //2.进行请求操作 $res=$this->curl; //3.将请求结果由xml转换成数组 $arr=$this->xmltoarray; //4.将请求信息和请求结果录入到数据库中,可以根据自己的需要进行处理,$arr是返回的结果数组 $transfer['partner_trade_no']=$data['partner_trade_no']; $transfer['request_data']=serialize; $transfer['response_data']=serialize; if($arr['return_code']=="SUCCESS" && $arr['result_code']=="SUCCESS"){ //5. 判断是否通讯成功 6.判断是否付款成功 $transfer['success']=1; $transfer_res['success']=1; }else{ $transfer['success']=0; $transfer_res['success']=0; $transfer_res['desc']=$arr['return_msg']; } $transfer['add_time']=time(); D->add; return $transfer_res;} // 生成32位唯一随机字符串private function get_unique_value(){ $str=uniqid; $str=sha1; return md5;}// 将数组转换成xmlprivate function arraytoxml{ $xml=""; foreach{ $xml.="".$v."".$k.">"; } $xml.=""; return $xml;}// 将xml转换成数组private function xmltoarray{ //禁止引用外部xml实体 libxml_disable_entity_loader; $xmlstring=simplexml_load_string($xml,"SimpleXMLElement",LIBXML_NOCDATA); $arr=json_decode(json_encode; return $arr;} //进行curl操作private function curl { $postUrl = $url; $curlPost = $param; //初始化curl $ch = curl_init(); //抓取指定网页 curl_setopt($ch, CURLOPT_URL,$postUrl); //设置header curl_setopt($ch, CURLOPT_HEADER, 0); //要求结果为字符串且输出到屏幕上 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //post提交方式 curl_setopt; // 增加 HTTP Header里的字段 curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); // 终止从服务端进行验证 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //这个是证书的位置 curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'certapiclient_cert.pem'); //这个也是证书的位置 curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'certapiclient_key.pem'); //运行curl $data = curl_exec; //关闭curl curl_close; //返回结果 return $data;}

调用的话,稍稍在修改下,加上本人的业务逻辑就能够了。

以上便是本文的全体内容,希望对大家的读书抱有利于,也愿意大家多多指教脚本之家。

本文为大家享用了PHP完结Wechat商家支付公司付款到零钱的现实代码,供大家参照他事他说加以考查,具体内容如下

商家付款业务是依赖Wechat支付经纪人平台的本金管理技术,为了救助商行方便地实现公司向个人付款,针对有个别有付出技能的生意人,提供经过API达成企业付款的功力。<

利用标准

以下关于Wechat支付中央管理集团业付款的牵线及编码参谋自Wechat支付开拓文书档案,网站,如图所示

四、调用效果

具体的能够看Wechat支付开拓文书档案

商家号已入驻90日 商户号有30天三回九转平常贸易 登录Wechat支付经纪人平台-成品大旨,开通公司付款。

三、调用方法

上述正是本文的全体内容,希望对大家的求学抱有助于,也冀望大家不吝赐教脚本之家。

供销合作社付款为集团提供付款至顾客零钱的力量,扶持通过API接口付款,或通过Wechat支付经纪人平台网页操作付款。

朝气蓬勃、开通条件

本文由澳门新葡萄京娱乐网站发布于编程知识,转载请注明出处:C#开发微信门户及应用(35)--微信支付之企业付款封

关键词: