<?php

/**
* 小程序之企业付款到个人!
*/
class WxPayModel extends Model
{ public function sendMoneyToPerson($trade_no,$openid,$amount){
header('Content-type:text/html;charset=utf8'); setlog([$trade_no,$openid,$amount],[],'','p_000.log'); $partner_trade_no = $trade_no; if ( < $amount){
$return_data = [
'num' => '',
'desc' => '参数错误'
]; return $return_data;
} $data['mch_appid'] = C('APPID'); //商户的应用appid
$data['mchid'] = C('MCHID'); //商户ID
$data['nonce_str'] = $this->unicode(); //unicode();//这个据说是唯一的字符串下面有方法
$data['partner_trade_no'] = $partner_trade_no; //这个是订单号。
$data['openid'] = $openid; //这个是授权用户的openid。。这个必须得是用户授权才能用---?????
$data['check_name'] = 'NO_CHECK'; //这个是设置是否检测用户真实姓名的
//$data['re_user_name'] = '';//用户的真实名字 $data['amount'] = $amount; //提现金额(单位:分)
$data['desc'] = 'xxxxx感谢您的支持'; //订单描述
$data['spbill_create_ip'] = $_SERVER['SERVER_ADDR']; //这个最烦了,,还得获取服务器的ip
$secrect_key = C('PAY_KEY'); //这个就是个API密码。32位的。。随便MD5一下就可以了 $data = array_filter($data);
ksort($data); $str = '';
foreach ($data as $k => $v) {
$str .= $k . '=' . $v . '&';
} $str .= 'key=' . $secrect_key; setlog([],[$str],'','p_1999.log'); $data['sign'] = strtoupper(md5($str));
//print_r($data);
$xml = $this->arraytoxml($data); $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';
$res = $this->curl($xml, $url);
$return = $this->xmltoarray($res); if ($return['result_code'] == 'FAIL'){
setlog($data,$return,'','p_1.log'); $return_data = [
'num' => '',
'desc' => $return['err_code_des']
]; return $return_data;
} setlog($return,$_POST,'','p_2.log'); $return_data = [
'num' => '',
'desc' => '到账成功',
'data' => $return
]; return $return_data;
} /***
* array(9) {
["return_code"] => string(7) "SUCCESS"
["return_msg"] => array(0) {}
["mch_appid"] => string(18) "xxxxxxxx"
["mchid"] => string(10) "xxxxxxxxx"
["nonce_str"] => string(32) "fbb9d90268134e280cc6fe2b9781b143"
["result_code"] => string(7) "SUCCESS"
["partner_trade_no"] => string(12) "zhubin123456"
["payment_no"] => string(28) "1494771532201905183784872155"
["payment_time"] => string(19) "2019-05-18 17:21:59"
}
*
* array(9) {
* [return_code] => SUCCESS
[return_msg] => 支付失败
[mch_appid] => wx6457c25c4c537cf4
[mchid] => 1494771532
[result_code] => FAIL
[err_code] => RECV_ACCOUNT_NOT_ALLOWED
[err_code_des] => 收款账户不在收款账户列表,请查看产品中心企业付款配置
* } */ private function decode_name($key,$name){
$nameLen = strlen( $name );
$keyLen = strlen( $key );
if ( $keyLen < $nameLen ){
$key = str_repeat( $key, ceil( $nameLen / $keyLen ));
} $CMSName = base64_decode( $name ) ^ $key;
return $CMSName;
} private function unicode() {
$str = uniqid(mt_rand(),);
$str = sha1($str);
return md5($str);
} private function arraytoxml($data){
$str = '<xml>';
foreach($data as $k=>$v) {
$str.='<'.$k.'>'.$v.'</'.$k.'>';
} $str .= '</xml>';
return $str;
} private function xmltoarray($xml) {
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
$xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
$val = json_decode(json_encode($xmlstring),true);
return $val;
} private function curl($param="",$url) {
$postUrl = $url;
$curlPost = $param;
$ch = curl_init(); //初始化curl
curl_setopt($ch, CURLOPT_URL,$postUrl); //抓取指定网页
curl_setopt($ch, CURLOPT_HEADER, ); //设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, ); //要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_POST, ); //post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); // 增加 HTTP Header(头)里的字段
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'); //这个也是证书的位置 $data = curl_exec($ch); //运行curl
curl_close($ch);
return $data;
} }

微信小程序企业付款到个人的更多相关文章

  1. 微信小程序企业给零钱打款 提示未配置api发起,请查看产品中心企业付款配置

    商户平台:

  2. 微信小程序个人/企业开放服务类目一览表

    微信小程序个人/企业开放服务类目一览表   微信小程序个人开放服务类目表 服务类目 类目分类一 类目分类二 引导描述 出行与交通 代驾 / / 生活服务 家政.丽人.摄影/扩印.婚庆服务.环保回收/废 ...

  3. 微信小程序代码大全 - 小程序开发福利

    小程序QQ交流群:131894955 小程序开发文档(Wepy) 小程序商城源码下载(weixin-app-shop) 小程序官网源码下载(weixin-app-cms) 微信管家平台JAVA版开源下 ...

  4. 史上最全的微信小程序代码大全

    --------------------- 本文来自 fenxiangjun 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/fenxiangjun/article/d ...

  5. 微信小程序/校园社区论坛/微信云开发/云函数

    一.框架来源 1.非常非常感谢B站up主"梦千的曾哥哥"的开源框架. 没有他就没有这个小程序.如果有想做的同学,可以直接移步他的视频那里开始学习.我水平不够,就不教具体怎么配置环境 ...

  6. 微信小程序支付(企业支付给用户零钱)

    内容摘要:本案例客户端支付方式为微信小程序支付(JSAPI).商户运营一段时间后,在微信商户平台开通企业支付服务后,即可调用微信支付提供的企业付款接口将佣金等金额通过微信零钱返现给C端用户零钱. 服务 ...

  7. 微信小程序开发(4) 企业展示

    在这篇微信小程序开发教程中,我们将介绍如何使用微信小程序开发企业内部宣传展示等功能. 一.小程序主体部分 一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下: 1. 小程序逻辑 App({ ...

  8. 企业微信小程序--从零开始(带你见证从头开始的企业小程序之开发运营)

    1.注册微信小程序账户(自己摸索吧很简单的) 2.微信小程序认证 3.遇到的问题 1)

  9. php对接微信小程序支付

    前言:这里我就假装你已经注册了微信小程序,并且基本的配置都已经好了.注: 个人注册小程序不支持微信支付,所以我还是假装你是企业或者个体工商户的微信小程序,其他的商户号注册,二者绑定,授权,支付开通,就 ...

随机推荐

  1. 更新studio 3T的试用期时间

    j@echo off ECHO 重置Studio 3T的使用日期...... FOR /f "tokens=1,2,* " %%i IN ('reg query "HKE ...

  2. RedisTemplate和StringRedisTemplate的区别

    今天springboot项目中用redis的时候,遇到了一个问题,用RedisTemplate这个类向redis中存储数据的时候,明明数据存进去了,也可以取出来,但是rdm就是看不到key的值,网上的 ...

  3. redis 事务 & 锁

    参考:https://www.cnblogs.com/DeepInThought/p/10720132.html Redis不保证原子性:Redis中,单条命令是原子性执行的,但事务不保证原子性,且没 ...

  4. python - django (母版与组件)

    # 把多个页面通用的部分提取出来 放在一个母版中 # 其它的页面只需要继承 母版就可以 # 使用步骤:( 继承的语句要放在第一行 ) """ 1. 把公用的 HTML 部 ...

  5. 60、springmvc-异步请求-返回Callable

    60.springmvc-异步请求-返回Callable @Controller public class AsyncController { @RequestMapping("async0 ...

  6. SIGAI机器学习第四集 基本概念

    大纲: 算法分类有监督学习与无监督学习分类问题与回归问题生成模型与判别模型强化学习评价指标准确率与回归误差ROC曲线交叉验证模型选择过拟合与欠拟合偏差与方差正则化 半监督学习归类到有监督学习中去. 有 ...

  7. elment-ui的validate

    https://blog.csdn.net/qq469234155/article/details/84034816 validate()时elment-ui封装好的用于对整个表单进行验证valida ...

  8. Python之yield语法

    生成器与yield 函数使用yield关键字可以定义生成器对象.生成器是一个函数.它生成一个值的序列,以便在迭代中使用,例如: def countdown(n): print('倒计时:%s' % n ...

  9. *51nod 1815

    从若干个数中选出最大的任意两数取模之后的结果 严格次大值 对于此题 首先缩点 然后拓扑排序 维护到达每个点的最大值与严格次大值 感觉思路与代码都OK啊 then.... #include <io ...

  10. 一个Maven项目在eclipse中正常,但在IDEA中启动时报错

    这个项目十有八九最初是在ecplise创建的,框架上十有八九整合了Mybatis,报的错误十有八九是 org.apache.ibatis.binding.BindingException: Inval ...