微信小程序企业付款到个人
<?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;
} }
微信小程序企业付款到个人的更多相关文章
- 微信小程序企业给零钱打款 提示未配置api发起,请查看产品中心企业付款配置
商户平台:
- 微信小程序个人/企业开放服务类目一览表
微信小程序个人/企业开放服务类目一览表 微信小程序个人开放服务类目表 服务类目 类目分类一 类目分类二 引导描述 出行与交通 代驾 / / 生活服务 家政.丽人.摄影/扩印.婚庆服务.环保回收/废 ...
- 微信小程序代码大全 - 小程序开发福利
小程序QQ交流群:131894955 小程序开发文档(Wepy) 小程序商城源码下载(weixin-app-shop) 小程序官网源码下载(weixin-app-cms) 微信管家平台JAVA版开源下 ...
- 史上最全的微信小程序代码大全
--------------------- 本文来自 fenxiangjun 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/fenxiangjun/article/d ...
- 微信小程序/校园社区论坛/微信云开发/云函数
一.框架来源 1.非常非常感谢B站up主"梦千的曾哥哥"的开源框架. 没有他就没有这个小程序.如果有想做的同学,可以直接移步他的视频那里开始学习.我水平不够,就不教具体怎么配置环境 ...
- 微信小程序支付(企业支付给用户零钱)
内容摘要:本案例客户端支付方式为微信小程序支付(JSAPI).商户运营一段时间后,在微信商户平台开通企业支付服务后,即可调用微信支付提供的企业付款接口将佣金等金额通过微信零钱返现给C端用户零钱. 服务 ...
- 微信小程序开发(4) 企业展示
在这篇微信小程序开发教程中,我们将介绍如何使用微信小程序开发企业内部宣传展示等功能. 一.小程序主体部分 一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下: 1. 小程序逻辑 App({ ...
- 企业微信小程序--从零开始(带你见证从头开始的企业小程序之开发运营)
1.注册微信小程序账户(自己摸索吧很简单的) 2.微信小程序认证 3.遇到的问题 1)
- php对接微信小程序支付
前言:这里我就假装你已经注册了微信小程序,并且基本的配置都已经好了.注: 个人注册小程序不支持微信支付,所以我还是假装你是企业或者个体工商户的微信小程序,其他的商户号注册,二者绑定,授权,支付开通,就 ...
随机推荐
- .NET Core SignalR 和 .NET SignalR 区别
由于要转 .NET Core ,对于以前用到的一些进行迁移. 在迁移 SignalR 的时候发现 .NET Core 下的和 .NET 下的区别还是挺大的. 功能差异 自定重新连接 .NET 下的 S ...
- NodeJS开发博客(一)
1 区分 ECMAScript/JS/NodeJs --ECMAScript.定义了语法,写JS和NodeJS都要遵守: 变量定义,循环/判断/函数: 原型和原形链/作用域和闭包/异步 不能操作DOM ...
- git 将master分支合到自己的开发分支
背景: 一般开发自己的分支都是从最新的master上拉取,但中间master会有改动,此时需要将最新的master合到自己的分支中 命令: 1. 查看当前的分支,星号标识为当前分支:(如果查询结果有m ...
- grafna如何用新的dashbord覆盖旧的dashbord
方式一.import一个和之前不一样的名字,然后删除旧的方式二.浏览器json页面复制粘贴,覆盖旧的dashbord 1.记录旧dashbord的var参数,从旧dashbord的json页面复制全部 ...
- Selenium常用API的使用java语言之15-警告框处理
在 WebDriver中处理JavaScript所生成的alert.confirm以及prompt十分简单,具体做法是使用switch_to_alert()方法定位到alert/confirm/pro ...
- Django rest framework的基本用法
今天在网上看到几篇比较不错的drf基本功能介绍,本来想自己写一篇,后来发现脱不开原作者的思路,遂卒,直接扔链接小伙伴自己去看吧.... 1.django rest framework apiview. ...
- LOJ P10163 Amount of Degrees 题解
每日一题 day6 打卡 Analysis 题目的意思是找在区间[x,y]之间满足能够由k个b的不同次幂相加得到的数的总数.这题的关键是转换进制,之前几道题我们保存的是数的每位数,其实也就是10进制, ...
- 使用webuploader实现分片上传
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...
- 对象(面向对象、创建对象方式、Json)
一.面向对象 面向过程:凡事亲力亲为,每件事的具体过程都要知道,注重过程 面向对象:根据需求寻找对象,所有的事都用对象来做,注重结果 面向对象特性:封装.继承.多态(抽象性) js是一门基于对象的语言 ...
- qsing
qsing1 1.低仿机器人 一道大模拟 2.放爆竹 小辉原本想让小明告诉他,如果同时点燃n串雷,最多会有多长的时间至少有两串雷爆炸的声音是一样的. 但是小辉觉得这个问题真是太简单了,所以决定问小明, ...