微信龙支付向朋友微信付款企业付款怎么开通求大家帮助 谢谢

用于记录日常学习所遇到的问题,方便与朋友交流
微信公众号开发---微信企业付款给个人
以下有关微信支付中企业付款的介绍及编码参考自微信支付开发文档,网址:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1,如图所示
企业付款,提供企业向用户付款的功能,支持企业通过API接口付款,或通过微信支付商户平台网页功能操作付款。
企业付款业务是基于微信支付商户平台的资金管理能力,为了协助商户方便地实现企业向个人付款,针对部分有开发能力的商户,提供通过API完成企业付款的功能。
比如目前的保险行业向客户退保、给付、理赔。
以下是PHP用于实现企业付款业务的代码片段,仅供参考。
/*微信企业付款给个人*/
&!--具体细节参考微信支付开发文档--&
&!--参数 $openid个人openid,$re_user_name个人真实姓名,$amount付款金额,$partner_trade_no商户订单号,$desc描述--&
&!--返回 如果付款成功,返回true,否则返回false--&
private function weixin_transfer_money($openid,$re_user_name,$amount,$partner_trade_no,$desc){
//请求参数
//公众号appid(字段名)--mch_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_
//用户openid--openid--1
$data['openid']=$
//校验用户姓名选项--check_name--1
$data['check_name']="OPTION_CHECK";
//收款用户姓名--re_user_name--0
$data['re_user_name']=$re_user_
//金额--amount--1
$data['amount']=$
//企业付款描述信息--desc--1
$data['desc']=$
//IP地址--spbill_create_ip--1
$data['spbill_create_ip']=$_SERVER['LOCAL_ADDR'];
//生成签名
//对数据数组进行处理
//API密钥,输入你的appsecret
$appsecret="*************";
$data=array_filter($data);
ksort($data);
foreach($data as $k=&$v){
$str.=$k."=".$v."&";
$str.="key=".$
$data['sign']=strtoupper(MD5($str));
付款操作:
1.将请求数据转换成xml
2.发送请求
3.将请求结果转换为数组
4.将请求信息和请求结果录入到数据库中
5.判断是否通信成功
6.判断是否付款成功
//企业付款接口地址
$url="https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
//1.将请求数据由数组转换成xml
$xml=$this-&arraytoxml($data);
//2.进行请求操作
$res=$this-&curl($xml,$url);
//3.将请求结果由xml转换成数组
$arr=$this-&xmltoarray($res);
//4.将请求信息和请求结果录入到数据库中,可以根据自己的需要进行处理,$arr是返回的结果数组
$transfer['partner_trade_no']=$data['partner_trade_no'];
$transfer['request_data']=serialize($data);
$transfer['response_data']=serialize($arr);
if($arr['return_code']=="SUCCESS" && $arr['result_code']=="SUCCESS"){
//5. 判断是否通讯成功 6.判断是否付款成功
$transfer['success']=1;
$transfer_res['success']=1;
$transfer['success']=0;
$transfer_res['success']=0;
$transfer_res['desc']=$arr['return_msg'];
$transfer['add_time']=time();
D("weixin_transfer")-&add($transfer);
return $transfer_
// 生成32位唯一随机字符串
private function get_unique_value(){
$str=uniqid(mt_rand(),1);
$str=sha1($str);
return md5($str);
// 将数组转换成xml
private function arraytoxml($arr){
$xml="&xml&";
foreach($arr as $k=&$v){
$xml.="&".$k."&".$v."&/".$k."&";
$xml.="&/xml&";
// 将xml转换成数组
private function xmltoarray($xml){
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
$xmlstring=simplexml_load_string($xml,"SimpleXMLElement",LIBXML_NOCDATA);
$arr=json_decode(json_encode($xmlstring),true);
//进行curl操作
private function curl($param="",$url) {
$postUrl = $
$curlPost = $
//初始化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($ch, CURLOPT_POST, 1);
// 增加 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().'\cert\apiclient_cert.pem');
//这个也是证书的位置
curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'\cert\apiclient_key.pem');
//运行curl
$data = curl_exec($ch);
//关闭curl
curl_close($ch);
//返回结果
没有更多推荐了,企业微信支付申请开通流程
  & & & 微信支付是公众平台向有出售物品需求的公众号提供推广销售、支付收款、经营分析的整套解决方案。商户通过自定义菜单、关键字回复等方式向订阅用户推送商品消息,用户可在微信公众号中完成选购支付的流程。也可以把商品网页生成二维码,张贴在线下的场景,如车站和广告海报。用户扫描后可打开商品详情,在微信中直接购买。
微信支付所需资料
1.商户名称:如上海xx公司、xx品牌、;
2.手机号码:用于微信后台登记,不对用户开放;
3.企业客服电话:微信支付的客服电话,将对用户开放,可提供固话或手机号码;
4.银行账户:用于收款提现的银行账号、开户行;
5.营业执照:提供扫描件或照片;
6.身份证照片:运营人身份证正反面照片。
微信支付下单地址
企业、个体户、机关单位、学校、其他组织等均可联系优度网在线工作人员,帮忙开通微信支付功能。
微信支付开通费用:900元
下单后请将资料发送至 ,或加QQ: 在线传资料。
咨询电话:021-
所需时间:1~3工作日。
微信支付应用场景
微信支付可用于各种支付场景,如酒店订房、餐厅点餐、商场超时埋单、停车场付费、手机充值等等。
1. 线下扫码支付
用户扫描线下静态的二维码,即可生成微信支付交易页面,完成交易流程。
2. web扫码支付
用户扫描PC端二维码跳转至微信支付交易页面,完成交易流程。
3. 公众号支付
用户在微信中关注商户的微信公众号,在商户的微信公众号内完成商品和服务的支付购买。如QQ充值、广东联通、印美图、麦当劳、微团购、香港航空、微信电影票等公众号均支持该方式。
------分隔线----------------------------
微信支付是微信公众平台向有在线收款需求的公众号提供的商品...
微信支付是由腾讯公司知名移动社交通讯软件微信及第三方支付...
微信公众号推出有三年时间了,已然成为当前最火爆的营销平台...
很多用户刚开通微信时选择了订阅号,但是后来又想用微信支付...
微信服务号能够给企业和组织提供更强大的业务服务与用户管理...
2015年4月以来,开通微信公众号在审核证件的同时,还需要验证...提前说一个重要的坑,不注意掉进去,会浪费一些时间。
用户付款到商户平台的账户 与 商户付款到个人的账户是相互独立的 意思是商户要付款到个人必须用自己充值到商户平台账户的钱
企业付款到个人必须开通此功能 之后才可以使用
需要到商户平台下载支付证书 在使用时不要用官方的demo(2014年的 不怕死的用起来),在引用时直接把文件存放在服务器上的绝对路径写到函数里(相对于服务器的绝对路径)
在算签名的时候注意&ASCII的顺序 &大写字母 & _ & 小写字母 (恶心的我够呛)
支付金额必须大于100 单位分
直接上代码 提现类 并没有做验证实现了功能&代码后面有详细的流程介绍!!
微信企业 支付到个人
class cash
array转xml
public function arrayToXml($arr)
  $xml = "&xml&";
  foreach ($arr as $key =& $val)   {
    if (is_numeric($val))     {
      $xml .= "&".$key."&".$val."&/".$key."&";
    }else{
      $xml .= "&".$key."&&![CDATA[".$val."]]&&/".$key."&";
    }  }
  $xml .= "&/xml&";
  return $xml;
//使用证书,以post方式提交xml到对应的接口url
作用:使用证书,以post方式提交xml到对应的接口url
function curl_post_ssl($url, $vars, $second=30)
  $ch = curl_init();
  //超时时间
  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_SSLCERT,"/home/lizi/addons/grow/template/mobile/cash/apiclient_cert.pem");
  curl_setopt($ch,CURLOPT_SSLKEY,"/home/lizi/addons/grow/template/mobile/cash/apiclient_key.pem");
  curl_setopt($ch,CURLOPT_POST, 1);
  curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
  $data = curl_exec($ch);
  if($data){
    curl_close($ch);
    return $data;
  }else {
    $error = curl_errno($ch);
    echo "call faild, errorCode:$error\n";
    curl_close($ch);
    return false;
//企业向个人付款
public function payToUser($openid='oJZJ0w_N_LlTo4AHLnN-cGGtJSeM',$desc='提现成功',$amount='102')
  //微信付款到个人的接口
  $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';
  $params["mch_appid"]
//公众账号appid
  $params["mchid"]
//商户号 微信支付平台账号
  $params["nonce_str"]
= 'longdongzhiye99'.mt_rand(100,999);
//随机字符串
  $params["partner_trade_no"] = mt_rand(99999);
//商户订单号
  $params["amount"]
= $amount;
  $params["desc"]
//企业付款描述
  $params["openid"]
= $openid;
//用户openid
  $params["check_name"]
= 'NO_CHECK';
//不检验用户姓名
  $params['spbill_create_ip'] = '123.56.48.18';
//生成签名(签名算法后面详细介绍)
  $str = 'amount='.$params["amount"].'&check_name='.$params["check_name"].'&desc='.$params["desc"].'&mch_appid='.$params["mch_appid"].'&mchid='.$params["mchid"].'&nonce_str='.$params["nonce_str"].'&openid='.$params["openid"].'&partner_trade_no='.$params["partner_trade_no"].'&spbill_create_ip='.$params['spbill_create_ip'].'&key=F5YguNW77Ao4N5yu5wZ8Lb00NKOg1Y04';
  //md5加密 转换成大写
  $sign = strtoupper(md5($str));
  $params["sign"] = $sign;//签名
  $xml = $this-&arrayToXml($params);
  return $this-&curl_post_ssl($url, $xml);
$res = $cash -& payToUser();
var_dump($res);
要支付必须先配置服务号与微信商户平台,这里略。
登陆商户平台开通企业付款到个人
如果要实现自动付款
首先确定一个方向 就是这是微信的一个接口 带着参数post请求就好了
$url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; //请求接口
参数(这个玩意可以慢慢说了)
参数包含两个部分 字符串部分 和 证书部分,到这时候你就不要想着跟别的接口似得马马虎虎拼拼就出来了,这个过程要慢慢来& & & &&字符串部分需要 9个常规参数 + 1个签名+1个支付密钥,先说9个参数
字段名变量名必填示例值类型描述
公众账号appid
公众号的appId
String(32)
微信支付平台商户号就是平台账号
随机字符串
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
String(32)
随机字符串,随便随机个什么&32位
商户订单号
partner_trade_no
订单号,保持唯一性,自定义一个随机订单号
用户openid
oxTWIuGaIt6gTKsQRLau2M0yL16E
商户appid下,某用户的openid
校验用户姓名选项
check_name
NO_CHECK不检验 (小额推荐)FORCE_CHEC强制检验OPTION_CHECK自动检验
NO_CHECK:不校验真实姓名&FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账)&OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
收款用户姓名
re_user_name
马花花(如果上一个参数为强制检验此为必填项)
收款用户真实姓名。&如果check_name设置为FORCE_CHECK或OPTION_CHECK,则必填用户真实姓名
100单位为分100就是100分.
企业付款金额,单位为分
企业付款描述信息
奖金啊,提现成功啊退款成功啊什么的
企业付款操作说明信息。必填。
spbill_create_ip
192.168.0.1
String(32)
调用接口的机器Ip地址服务器ip
F5YguNW77Ao4N5yu5wZ8Lb00NKO987ks
String(32)
设置在商户平台上的支付密钥
C380BEC2BFD727A4BF3AD6
String(32)
这个恶心了下面单独解释
签名是不是一直变动的呢?是的 每一个签名都是不一样的,别想着存起来一直用!怎么算呢?官方有一个文档,对于会的人来说就是废话,对于不会的来说就是天书。总的来说分为3部,官方有一个签名生成工具。
将你本次请求的所有参数(当然除了签名),按照一定的顺序排序成一个字符串,顺序一会再说,先说格式,比如本次的这次请求有9个参数:$str = "amount=100&check_name=NO_CHECK&desc=奖金啊,提现成功啊 退款成功啊什么的&mch_appid=wx8888&mchid=&nonce_str=5K8264ILTKCH16CQ2502SI8ZNMTM67VS&openid=oxTWIuGaIt6gTKsQRLau2M0yL16E&partner_trade_no=90&spbill_create_ip=192.168.0.1";仔细观察不难发现,字符串排列是有顺序的 为键值首字母的排列顺序。而官方为了听起来霸气,讲的是根据&参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式排序吓的我一哆嗦啊! 不就字母顺序表么!不过仔细一看发现不对了,比如&mchid和&mch_appid这尼玛前三个字母一样啊,一位一位排序下来出现一个&i&和&_怎么办呢? 这时候就用到ASCII码表了,不过看官也不用去查了 上面的可以直接粘去用了 而ASCII码表的顺序呢就是按照:;& = & ? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [ \ ] ^ _ ` abcdefghijklmnopqrstuvwxyz { | }~的顺序排列 那么我门就知道mch_appid应该在&mchid&前面了。
排序完这9个参数 之后再用&加上特殊参数 微信支付平台上设置的支付密钥就是$str = "amount=100&check_name=NO_CHECK&desc=奖金啊,提现成功啊 退款成功啊什么的&mch_appid=wx8888&mchid=&nonce_str=5K8264ILTKCH16CQ2502SI8ZNMTM67VS&openid=oxTWIuGaIt6gTKsQRLau2M0yL16E&partner_trade_no=90&spbill_create_ip=192.168.0.1&key=F5YguNW77Ao4N5yu5wZ8Lb00NKO987ks"
之后就简单了先md5加密下然后转为大写 签名就OK了$sign = strtoupper(md5($str));
& & & & & &
& & & & 然后我们就要将这些参数填充到xml格式的字符串中去了
官方示例为
&mch_appid&wxec30d8&/mch_appid&
&mchid&&/mchid&
&nonce_str&3PG2J4ILTKCH16CQ2502SI8ZNMTM67VS&/nonce_str&
&partner_trade_no&&/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&C97BDBACFF38B629F45E3&/sign&
我个人还是觉的将参数都存到数组里,然后遍历拼接出来比较好例如:
$params["mch_appid"]
//公众账号appid
$params["mchid"]
//商户号 微信支付平台账号
$params["nonce_str"]
= 'longdongzhiye99'.mt_rand(100,999);
//随机字符串
$params["partner_trade_no"] = mt_rand(99999);
//商户订单号
$params["amount"]
= $amount;
$params["desc"]
//企业付款描述
$params["openid"]
= $openid;
//用户openid
$params["check_name"]
= 'NO_CHECK';
//不检验用户姓名
$params['spbill_create_ip'] = '123.56.48.18';
//生成签名(签名算法后面详细介绍)
$str = 'amount='.$params["amount"].'&check_name='.$params["check_name"].'&desc='.$params["desc"].'&mch_appid='.$params["mch_appid"].'&mchid='.$params["mchid"].'&nonce_str='.$params["nonce_str"].'&openid='.$params["openid"].'&partner_trade_no='.$params["partner_trade_no"].'&spbill_create_ip='.$params['spbill_create_ip'].'&key=F5YguNW77Ao4N5yu5wZ8Lb00NKOg1Y04';
//md5加密 转换成大写
$sign = strtoupper(md5($str));
$params["sign"] = $sign;//签名
$xml = "&xml&";
foreach ($paramsas $key =& $val) {
if (is_numeric($val)) {
  $xml .= "&" . $key . "&" . $val . "&/" . $key . "&";
  $xml .= "&" . $key . "&&![CDATA[" . $val . "]]&&/" . $key . "&";
$xml .= "&/xml&";
得到$xml。
到此字符传参数部分完成了,然后还没完呢!还有证书部分之后用curl函数检测证书 之后页要用curl发送请求 直接贴代码解释
作用:使用证书,以post方式提交xml到对应的接口url
function curl_post_ssl($url, $xml, $second=30)
  $ch = curl_init();
  //超时时间
  curl_setopt($ch,CURLOPT_TIMEOUT,$second);
  //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
  curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch,CURLOPT_URL,$url);
  //根据curl版本有不同默认值 设置一下放心
  curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
  curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
  //以下两种方式需选择一种 双向检测证书
  /******* 此处必须为文件服务器根目录绝对路径 不可使用变量代替*********/
  curl_setopt($ch,CURLOPT_SSLCERT,"/home/lizi/addons/grow/template/mobile/cash/apiclient_cert.pem");
  curl_setopt($ch,CURLOPT_SSLKEY,"/home/lizi/addons/grow/template/mobile/cash/apiclient_key.pem");
  curl_setopt($ch,CURLOPT_POST, 1);
  curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);
  $data = curl_exec($ch);
  if($data){
    curl_close($ch);
    return $data;
  }else {
    $error = curl_errno($ch);
    echo "call faild, errorCode:$error\n";
    curl_close($ch);
    return false;
贴出成功之后返回码
&return_code&&![CDATA[SUCCESS]]&&/return_code&
&return_msg&&![CDATA[]]&&/return_msg&
&mch_appid&&![CDATA[wxec38b8ff840bd989]]&&/mch_appid&
&mchid&&![CDATA[]]&&/mchid&
&device_info&&![CDATA[]]&&/device_info&
&nonce_str&&![CDATA[lxuDzMnRjpcXzxLx0q]]&&/nonce_str&
&result_code&&![CDATA[SUCCESS]]&&/result_code&
&partner_trade_no&&![CDATA[41]]&&/partner_trade_no&
&payment_no&&![CDATA[9473]]&&/payment_no&
&payment_time&&![CDATA[ 15:26:59]]&&/payment_time&
失败的返回码会提示错误信息 就不做介绍了。
阅读(...) 评论()1220 条评论分享收藏感谢收起赞同 3添加评论分享收藏感谢收起}

我要回帖

更多关于 龙支付向朋友微信付款 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信