微信开发企业支付到银行卡PHP
微信开发企业支付到银行卡 功能详解 不会的朋友可以加我QQ:344902511
先发个微信支付官方链接你查看
https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_2
直接上代码
由于这里需要RSA算法 微信官方默认输出的是PKCS#1,笔者在这里发现RAS公钥在WINDOWS系统中安装复杂,后SSH到我的linux中转换了RSA
官方给出的RSA公钥开头 -----BEGIN RSA PUBLIC KEY-----
我们需要转成-----BEGIN PUBLIC KEY----- 这样开头的内容才可以使用
PKCS#1 转 PKCS#8:linux口令
openssl rsa -RSAPublicKey_in -in <filename> -pubout
<filename>是文件的路径
回车以后会
显示一下内容
-----BEGIN PUBLIC KEY-----
你的加密串
-----END PUBLIC KEY-----
复制出来后 你保存到你的网站目录上后缀扩展为pem
然后你就可以使用了
下面直接看代码
第一步。获取官方的RSA-PKCS1#
public function RasKey($datainfo="") { $data=[ //商户号 "mch_id"=>$this->mch_id, //随机字符串 "nonce_str"=>$this->genRandomString(32), //加密方式我是MD5 "sign_type"=>"MD5", ]; //微信签名 $data["sign"]=$this->MakeSign($data); //提交到的URL $url="https://fraud.mch.weixin.qq.com/risk/getpublickey"; //转换成XML格式POST到服务器 $backxml=$this->postStr($url,$this->arrayToXml($data)); //将获取到的内容解析成对象 $backarr=simplexml_load_string($backxml, 'SimpleXMLElement', LIBXML_NOCDATA); //转换成数组 $jsonStr = json_encode($backarr); $jsonArray = json_decode($jsonStr,true); //保存成PEM文件 file_put_contents("pub_key.pem",$backarr->pub_key); dump($jsonArray); }
第二部将 pub_key.pem 传送到linux系统进行PK8转码
使用此口令 openssl rsa -RSAPublicKey_in -in <filename> -pubout
<filename> 是文件名
拿到新的PK8码我们保存到自己的服务器pk8.pem
第三部 加密并递交打款
$data=[ //商户号 "mch_id"=>$this->mch_id, //商户订单号 "partner_trade_no"=>md5(time()), //随机字符串 "nonce_str"=>$this->genRandomString(32), //收款方银行卡号 "enc_bank_no"=>$this->rsa_encrypt("您的卡号"), //收款方用户名 "enc_true_name"=>$this->rsa_encrypt("您的姓名"), //收款方开户行 "bank_code"=>"银行卡编码", //付款金额 "amount"=>100, //付款说明 "desc"=>"账户提现", ]; //微信签名 $data["sign"]=$this->MakeSign($data); //POST到微信服务器的网址 $url="https://api.mch.weixin.qq.com/mmpaysptrans/pay_bank"; //以XML的格式POST到服务器 $backxml=$this->postStr($url,$this->arrayToXml($data)); //POST获取到的内容转成对象 $backarr=simplexml_load_string($backxml, 'SimpleXMLElement', LIBXML_NOCDATA); dump($backarr);
最后就成功了
因为自己没有权限 所以显示如下
["return_code"] => string(7) "SUCCESS" ["return_msg"] => string(73) "产品权限验证失败,请查看您当前是否具有该产品的权限" ["result_code"] => string(4) "FAIL" ["err_code"] => string(7) "NO_AUTH" ["err_code_des"] => string(73) "产品权限验证失败,请查看您当前是否具有该产品的权限" ["nonce_str"] => string(32) "tEmXrUFgcBfLgVqMqkKcpJKfHJ3sZtsZ" ["mch_id"] => string(10) "1512018791" ["partner_trade_no"] => string(32) "055a1afff8191338302c4a2b193ba242" ["amount"] => string(3) "100"
如果在加密串或微信付款上卡住的朋友 可以直接联系我
原文地址:https://www.cnblogs.com/bluealine/p/11015081.html
- 利用mk-table-checksum监测Mysql主从数据一致性操作记录
- mysql主从同步(4)-Slave延迟状态监控
- 浏览器窗口尺寸改变时的图片自动重新定位
- Mongodb主从复制/ 副本集/分片集群介绍
- Paul-Adrien Menez:互联网与抵制食物浪费的故事
- DRBD详细解说及配置过程记录
- Servant:基于Web的IIS管理工具
- Web前端知识体系精简——CSS 篇
- 几种异步操作方式
- 今天的面试小记
- objective-C中的序列化(serialize)与反序列化(deserialize)
- 微信小程序 template 模板功能实现循环
- ASP.NET Web API 接口执行时间监控
- 这么多前端优化点你都记得住吗?
- 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
- 必须同时重写hashcode和equals方法的原因
- Springboot中使用Redis的发布/订阅模式
- Java 几种排序算法 与时间空间复杂度
- JAVA程序员必须要学会的网络知识
- 计算机网络学习--数据链路层
- 带你快速了解原码、反码、补码,搞定进制转换
- Python语言学习笔记——简介
- 三行代码,OpenCV轻松生成19种色彩风格图像
- Java对象的结构与对象在内存中的结构
- Spring框架源码分析(IoC):Resource、ResourceLoader和容器之间的关系
- Spring框架源码分析(IoC):BeanFactory和ApplicationContext容器家族
- spring框架通过xml以及注解方式注册BeanDefinition的流程全链路分析
- Java后端面试学习知识总结——GC
- Java后端面试学习知识总结——JVM
- Spring JDBC 框架,我的学习笔记