微信企业付款到个人钱包引发的坑之反思~

原创 2017年11月16日 09:38:15

企业付款到个人钱包也就是用户在微信公众平台提现可以直接打入提现者微信的钱包!但要满足:

1)企业开通微信支付90天

2)连续30天有交易才能开通此功能

微信企业付款到个人钱包引发的坑之反思~

今天有幸能开发此功能,我只能说我又涨知识了!!!在我编程的这条道路上我又多见到了一些坑!下面就给大家讲一下今天遇到的两个坑!

微信企业付款到个人钱包引发的坑之反思~

1)CA证书引入问题,开发过程中遇到了CA证书验证失败的问题,百度之后网上有的说要用绝对路径,有的人说要用相对路径!

微信企业付款到个人钱包引发的坑之反思~

curl_setopt($curl,CURLOPT_SSLCERT,getcwd()."/cert/apiclient_cert.pem");

curl_setopt($curl,CURLOPT_SSLKEY,getcwd()."/cert/apiclient_key.pem");

curl_setopt($curl,CURLOPT_CAINFO,getcwd()."/cert/rootca.pem");

微信企业付款到个人钱包引发的坑之反思~

2)签名和提交数据的一致性问题:

微信签名文档上有详细的说明,但是我按照文档操作迟迟都是签名验证失败!最终总结如下注意点:

(1)key是商户设置的密匙和微信支付统一下单的密匙是一样的

(2)加密的数据顺序和提交到微信接口参数值的顺序不能改变也就是我们在 传递参数的时候直接讲数组转换成xml提交到微信api,代码如下:

$dataArr=array();

$dataArr['amount']="金额";

$dataArr['check_name']="FORCE_CHECK";

$dataArr['desc']="xxxx";

$dataArr['mch_appid']="微信公众平台的appid";

$dataArr['mchid']="商户号";

$dataArr['nonce_str']= "随机数";

$dataArr['openid']=“用户的openid”;

$dataArr['partner_trade_no']=“交易号”;

$dataArr['re_user_name']=“开启验证用户的真实姓名”;

$dataArr['spbill_create_ip']=“ip地址”;

$sign_obj = WechatSign::getInstance();

$sign = $sign_obj->getSign($dataArr);

WechatSign类文件如下:

/**

* 作用:格式化参数,签名过程需要使用

*/

function formatBizQueryParaMap($paraMap)

{

$buff = "";

foreach ($paraMap as $k => $v)

{

if($k != "sign" && $v != "" && !is_array($v)){

$buff .= $k . "=" . $v . "&";

}

}

$buff = trim($buff, "&");

return $buff;

}

/**

* 作用:生成签名

*/

function getSign($Obj)

{

//签名步骤一:按字典序排序参数

ksort($Obj);

//dump($Obj);

$String = $this->formatBizQueryParaMap($Obj);

//echo '【string1】'.$String.'</br>';

//签名步骤二:在string后加入KEY

$String = $String."&key=商户密匙";

//echo "【string2】".$String."</br>";

//签名步骤三:MD5加密

$String = md5($String);

//echo "【string3】 ".$String."</br>";

//签名步骤四:所有字符转为大写

$result_ = strtoupper($String);

//echo "【result】 ".$result_."</br>";

return $result_;

}

之后获取到签名之后我们直接将数组转换成xml传给微信api

//数组转XML

function arrayToXml($arr)

{

$xml = "<xml>";

foreach ($arras$key=>$val){

if (is_numeric($val)){

$xml.="<".$key.">".$val."</".$key.">";

}else{

$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";

}

}

$xml.="</xml>";

return$xml;

}

就是这样简简单单的几步,因为参数位置顺序以及数据统一问题拜拜浪费了很多时间,希望哪个小伙伴调用这个接口的时候一定要注意,不要和我一样马马虎虎,简单事情复杂化,一定要好好看文档!!!

微信企业付款到个人钱包引发的坑之反思~

微信支付-企业付款到个人详解

微信支付-企业付款到个人企业付款实现企业向个人付款,实现付款到用户零钱。项目实现了企业付款到个人和企业付款个人账单查询。代码包括签名实现,双向证书验证,付款功能等支付流程付款功能 企业付款到授权用户...
  • fengshizty
  • fengshizty
  • 2016年11月17日 19:05
  • 13181

微信开发 -- 企业付款 PHP代码实现

企业付款的应用场景: 公众号向已关注用户付款,比如处理退款、财务结算等材料:微信公众平台开发文档说明1.证书需要用自己的商户里面的证书(注意:证书路径必须是绝对路径,如果使用相对路径会报下面的错误。 ...
  • qq_28832135
  • qq_28832135
  • 2016年08月05日 11:19
  • 3119

微信公众号开发---微信企业付款给个人

以下有关微信支付中企业付款的介绍及编码参考自微信支付开发文档,网址:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=1...
  • qq_21429153
  • qq_21429153
  • 2017年02月06日 11:28
  • 3139

微信支付企业付款至银行卡功能说明

微信支付已上线企业付款至银行卡功能。商户可以将商户号余额付款至指定的收款银行账户。通过指定收款银行账户户名、卡号,以及收款银行信息即可实现付款。功能目前为灰度开放,已灰度新资金流直连普通商户及普通受理...
  • paymm
  • paymm
  • 2017年12月28日 23:45
  • 741

关于微信新出的企业付款到银行卡API的问题(二)

按照微信企业付款到银行卡接口文档,调用转账接口后,返回的XML:10000 目前我的问题仍没有解决,我把我实现的主要代码和过程贴出来,大家交流下,问题出在哪里。第一步,获取微信公钥,调用https:/...
  • baozhengw
  • baozhengw
  • 2017年11月30日 10:25
  • 4658

微信开发 -- 企业付款 PHP代码实现

写这篇文章的目的主要是由于在微信公众平台提供的SDK中并没有提供此功能的SDK实现, 其实最后实现还是借助 微信公众平台开发文档 和 SDK 。 企业付款的应用场景: 公众号向已关注用户付...
  • kaikai4
  • kaikai4
  • 2016年07月06日 17:42
  • 868

11. PHP接入微信企业付款功能

这个企业付款转账非常有用。能够自动完成一些诸如:工资发放、代理分红等。...
  • hel12he
  • hel12he
  • 2016年08月16日 11:10
  • 1603

开通微信企业付款功能,申请公众号企业付款到个人

企业付款到用户功能, 是商户号直接把钱转到微信用户的零钱中, 简称企业付款。 这个功能跟微信红包相比, 少了一个让用户领取的过程, 而且用户是即时到账, ...
  • towtotow
  • towtotow
  • 2018年01月11日 09:13
  • 89

[分享] 微信支付中商户对个人用户付款案例

随着微信支付的普及,越来越的APP要求支持微信支付。相信大多数开发者也碰到了这样的需求。百度了一下,大家用到最多的是微信支付中个人对商户的支付业务,而很少有人用到微信中商户对个人付款的业务。我最近就碰...
  • ppqiaoping
  • ppqiaoping
  • 2016年07月20日 13:56
  • 17551

php实现微信企业向用户付款

header('content-type:text/html;charset=utf-8'); $data['mch_appid']='##################';//商户的...
  • best_go_to_success
  • best_go_to_success
  • 2016年12月02日 15:42
  • 3263
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:微信企业付款到个人钱包引发的坑之反思~
举报原因:
原因补充:

(最多只允许输入30个字)