php微信公众号开发之微信企业付款给个人
时间:2022-07-27
本文章向大家介绍php微信公众号开发之微信企业付款给个人,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例为大家分享了php微信企业付款给个人的具体代码,供大家参考,具体内容如下
以下有关微信支付中企业付款的介绍及编码参考自微信支付开发文档,网址,如图所示
企业付款,提供企业向用户付款的功能,支持企业通过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_no;
//用户openid--openid--1
$data['openid']=$openid;
//校验用户姓名选项--check_name--1
$data['check_name']="OPTION_CHECK";
//收款用户姓名--re_user_name--0
$data['re_user_name']=$re_user_name;
//金额--amount--1
$data['amount']=$amount;
//企业付款描述信息--desc--1
$data['desc']=$desc;
//IP地址--spbill_create_ip--1
$data['spbill_create_ip']=$_SERVER['LOCAL_ADDR'];
//生成签名
//对数据数组进行处理
//API密钥,输入你的appsecret
$appsecret="*************";
$data=array_filter($data);
ksort($data);
$str="";
foreach($data as $k= $v){
$str.=$k."=".$v."&";
}
$str.="key=".$appsecret;
$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;
}else{
$transfer['success']=0;
$transfer_res['success']=0;
$transfer_res['desc']=$arr['return_msg'];
}
$transfer['add_time']=time();
D("weixin_transfer")- add($transfer);
return $transfer_res;
}
// 生成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 ";
return $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);
return $arr;
}
//进行curl操作
private function curl($param="",$url) {
$postUrl = $url;
$curlPost = $param;
//初始化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().'certapiclient_cert.pem');
//这个也是证书的位置
curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'certapiclient_key.pem');
//运行curl
$data = curl_exec($ch);
//关闭curl
curl_close($ch);
//返回结果
return $data;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持网站事(zalou.cn)。
- nginx反向代理https网站 并实现网站的注册和登录功能
- 通过nginx GeoIP模块 限制某些国家地区访问网站
- CDN加速下通过nginx获取网站访客真实ip
- linux centos7服务器使用密钥登录ssh同时禁止root密码登录
- linux nginx服务器安装verynginx防止CC攻击
- linux nginx安装HttpGuard防止CC攻击
- wordpress您的主机禁用了mail()函数 SMTP邮件通知解决方法
- 我的编程之路:知识管理与知识体系
- UTF-8 为什么会比 UTF-16 浪费?
- 码农也要学算法
- 19 个常用的 JavaScript 简写方法
- 从零开始写 PHP 扩展
- Linux 基础:文件查找 find
- 区块链入门教程
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Kotlin 使用DSL构建语法结构 看这一篇就够了~
- 浙大版《C语言程序设计(第3版)》题目集 习题4-2 求幂级数展开的部分和
- 2020 年 9 月编程语言排行榜
- 浙大版《C语言程序设计(第3版)》题目集 习题4-3 求分数序列前N项和
- 浙大版《C语言程序设计(第3版)》题目集 习题4-4 特殊a串数列求和
- 一个可能让你的页面渲染速度提升数倍的CSS属性
- 浙大版《C语言程序设计(第3版)》题目集 习题4-6 水仙花数
- 浙大版《C语言程序设计(第3版)》题目集 习题4-7 最大公约数和最小公倍数
- 高危漏洞!黑客可利用sudo获得 root权限
- 浙大版《C语言程序设计(第3版)》题目集 习题4-8 高空坠球
- 浙大版《C语言程序设计(第3版)》题目集 习题4-10 猴子吃桃问题
- 6种展示代码的绝佳方式
- 你电脑里的IE浏览器正在被黑客利用
- 浙大版《C语言程序设计(第3版)》题目集 习题6-8 统计一行文本的单词个数
- 浙大版《C语言程序设计(第3版)》题目集 练习7-2 求最大值及其下标