接口文档
文档地址:
微信商户平台开通企业付款到零钱
我的小程序暂时不符合开通条件,虽然连续交易已超过30天,但入驻时间才40天。
代码
开通产品的条件不能满足,但是代码已经对接完成,只等条件满足之后开通就能使用了,有需要的朋友可以直接复制以下代码
$wechat["pay_routine_appid"],//商户账号appid 申请商户号的appid或商户号绑定的appid
'mchid'=> $wechat["pay_routine_mchid"],//商户号 微信支付分配的商户号
'nonce_str'=> $this->getNonceStr(10),//随机字符串 随机字符串,不长于32位
'partner_trade_no'=> $this->getNonceStr(11)."YmdHis". rand (1000,9999),//商户订单号 商户订单号,需保持唯一性
' openid '=> $openid,//用户openid openid是微信用户在公众号appid下的唯一用户标识
'check_name'=> "NO_CHECK",//校验用户姓名选项 NO_CHECK:不校验真实姓名 FORCE_CHECK:强校验真实姓名
'amount'=> (int) ($money*100),//付款金额,单位为分
'desc'=> "微信付款到零钱",//付款备注
);
$parma['sign'] = $this->MakeSign($parma,$pay_routine_key);//签名
$xmldata = $this->data_to_xml($parma);
$xmlresult = $this->postXmlSSLCurl($xmldata,'#39;,30,$apiclient_cert,$apiclient_key);
$result = $this->xmlToArray($xmlresult);
if($result['return_code'] == 'SUCCESS' && $result['return_msg'] == 'OK' && $result['result_code'] == 'SUCCESS'){
return ["code"=>200,"message"=>"success"];
}else{
return ["code"=>100,"message"=>$result["err_code_des"]];
}
}
/**
*
* 产生随机字符串,不长于32位
* @param int $length
* @return 产生的随机字符串
*/
public static function getNonceStr($length = 32)
{
$chars = "abcdefghijklmnopqrstuvwxyz0123456789";
$str ="";
for ( $i = 0; $i < $length; $i++ ) {
$str .= substr ($chars, mt_rand(0, strlen ($chars)-1), 1);
}
return $str;
}
//需要使用证书的请求
function postXmlSSLCurl($xml,$url,$second=30,$apiclient_cert,$apiclient_key)
{
$ch = curl_init();
//超时时间
curl_setopt($ch,CURLOPT_TIMEOUT,$second);
//这里设置代理,如果有的话
//curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8');
//curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
//设置 header
curl_setopt($ch,CURLOPT_HEADER,FALSE);
//要求结果为字符串且输出到屏幕上
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
//设置证书
//使用证书:cert 与 key 分别属于两个.pem文件
//默认格式为PEM,可以注释
curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLCERT, $apiclient_cert);
//默认格式为PEM,可以注释
curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLKEY, $apiclient_key);
//post提交方式
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);
$data = curl_exec($ch);
//返回结果
if($data){
curl_close($ch);
return $data;
}
else {
$error = curl_ errno ($ch);
echo "curl出错,错误码:$error"."
";
curl_close($ch);
return false;
}
}
/**
* 生成签名
* @return 签名
*/
public function MakeSign( $ params , $pay_routine_key ){
//签名步骤一:按字典序排序数组参数
ksort($params);
$string = $this->ToUrlParams($params);
//签名步骤二:在string后加入KEY
$string = $string . "&key=".$pay_routine_key;
// echo $string;
//签名步骤三:MD5加密
$string = md5($string);
//签名步骤四:所有字符转为大写
$result = strtoupper($string);
return $result;
}
/**
* 将参数拼接为url: key=value&key=value
* @param $params
* @return string
*/
public function ToUrlParams( $params ){
$string = '';
if( !empty($params) ){
$array = array();
foreach ( $params as $key => $value ){
$array[] = $key.'='.$value;
}
$string = implode("&",$array);
}
return $string;
}
/**
* 输出xml字符
* @param $params 参数名称
* return string 返回组装的xml
**/
public function data_to_xml( $params ){
if(!is_array($params)|| count($params) <= 0)
{
return false;
}
$xml = "";
foreach ($params as $key=>$val)
{
if (is_numeric($val)){
$xml.="<".$key.">".$val."".$key.">";
}else{
$xml.="<".$key.">".$key.">";
}
}
$xml.=" ";
return $xml;
}
public function xmlToArray($xml_data){
return json_decode(json_encode(simplexml_load_string($xml_data, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
}
}
业务场景
用户申请提现
平台审核
总结一下
以上就是微信企业付款到零钱的具体操作流程
我是小程序软件开发,每天分享开发过程中遇到的知识点,如果对你有帮助的话,帮忙点个赞再走呗,非常感谢。
往期文章分享:
海报
0 条评论
119
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~