PHP 支付宝(单笔转账到银行账户接口)
alipay.fund.trans.tobank.transfer(单笔转账到银行账户接口)
小程序文档 - 支付宝文档中心
一、下载支付宝SDK,现有版本v1、v2、v3
https://github.com/alipay/alipay-sdk-php-all
github 慢的话,DNS 直达即可 140.82.112.3 github.com
【host文件路径c:\windows\system32\drivers\etc】
二、引用代码编写
<?php//支付宝转账到银行卡配置function alipay_init_bank() {//调用支付宝身份证认证接口require_once WY_ROOT . '/includes/aop/AopCertClient.php'; //支付宝加载require_once WY_ROOT . '/includes/aop/AopClient.php'; //支付宝加载require_once WY_ROOT . '/includes/aop/AopCertification.php'; //支付宝加载require_once WY_ROOT . '/includes/libs/Config.php'; //配置加载require_once dirname(WY_ROOT) . '/ApiV1' . '/function_apiv1.php'; //引用 加载$aop = new AopCertClient ();$config = Config::getInstance();$appCertPath = ''; //应用证书路径(要确保证书文件可读),$alipayCertPath = ''; //支付宝公钥证书路径(要确保证书文件可读),$rootCertPath = ''; //支付宝根证书路径(要确保证书文件可读),
// $alipay_config = ''; //支付宝配置文件$alipay_config = $config->alipay_bank_config;$appCertPath = WY_ROOT . '/includes/aop/cert3/appCertPublicKey_2021002131640271.crt'; //"例如:/home/admin/cert/appCertPublicKey.crt";$alipayCertPath = WY_ROOT . '/includes/aop/cert3/alipayCertPublicKey_RSA2.crt'; //"例如:/home/admin/cert/alipayCertPublicKey_RSA2.crt";$rootCertPath = WY_ROOT . '/includes/aop/cert3/alipayRootCert.crt'; //"例如:/home/admin/cert/alipayRootCert.crt";$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
// $aop->method='alipay.fund.trans.tobank.transfer';$aop->appId = $alipay_config['appId'];$aop->rsaPrivateKey = $alipay_config['rsaPrivateKey'];$aop->alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath);$aop->apiVersion = $alipay_config['apiVersion'];$aop->signType = $alipay_config['signType'];$aop->postCharset = $alipay_config['postCharset'];$aop->format = $alipay_config['format'];$aop->isCheckAlipayPublicCert = true; //是否校验自动下载的支付宝公钥证书,如果开启校验要保证支付宝根证书在有效期内$aop->appCertSN = $aop->getCertSN($appCertPath); //调用getCertSN获取证书序列号$aop->alipayRootCertSN = $aop->getRootCertSN($rootCertPath); //调用getRootCertSN获取支付宝根证书序列号return $aop;}/*** 支付宝转账到银行卡* @param type $data 用户信息* @param type $orderId 订单号* @param type $money 订单金额* @param type $fee 手续费* @return type $ret = array('error' => false, //是否出错'error_msg' => '' //错误信息);*/public function alipay_bank($data, $orderId, $money, $fee) {require_once dirname(WY_ROOT) . '/ApiV1' . '/function_apiv1.php'; //引用 加载$ret = array('error' => false, //是否出错'error_msg' => '' //错误信息);$pub = new ALLClass();$realmoney = $money - $fee; //实际支付 $realmoney = sprintf("%.2f", $realmoney); //精确到小数点后两位require_once WY_ROOT . '/includes/aop/request/AlipayFundTransTobankTransferRequest.php';$request = new AlipayFundTransTobankTransferRequest ();$this->aop = $this->alipay_init_bank();$payee_card_no = $data['bank_account_id']; //银行卡号$payer_real_name = ''; //付款方名称
// $payer_real_name='';//付款方名称$payee_account_name = $data['bank_account_name']; //收款名称,$payee_inst_name = $data['position']; //收款行$bizContentObj['out_biz_no'] = $orderId; //商户端的唯一订单号,对于同一笔转账请求,商户需保证该订单号唯一。201806300001$bizContentObj['amount'] = $realmoney; // $realmoney; //订单总金额,单位为元,精确到小数点后两位,STD_RED_PACKET产品取值范围[0.01,100000000];$bizContentObj['payer_real_name'] = $payer_real_name;$bizContentObj['payee_card_no'] = $payee_card_no;$bizContentObj['payee_account_name'] = $payee_account_name;$bizContentObj['payee_account_type'] = '2';$bizContentObj['payee_inst_name'] = $payee_inst_name;$bizContentObj['payee_inst_province'] = '';$bizContentObj['payee_inst_city'] = '';$bizContentObj['payee_inst_branch_name'] = '';$bizContentObj['payee_bank_code'] = '';$bizContentObj['time_liness'] = 'T0';$bizContentObj['memo'] = '';$bizContentObj['remark'] = '结算款'; //业务备注$pub->data_log($bizContentObj, __FUNCTION__ . '.log');$request->setNotifyUrl('https://alipay_notify_url.php');//回调地址$request->setBizContent(json_encode($bizContentObj, JSON_UNESCAPED_UNICODE));$result = $this->aop->execute($request);$pub->data_log('alipay_fund_transfer_new==' . json_encode($result, JSON_UNESCAPED_UNICODE), __FUNCTION__ . '.log');$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";$resultCode = $result->$responseNode->code;if (!empty($resultCode) && $resultCode == 10000) {$pub->data_log('Success', __FUNCTION__ . '.log');} else {$ret['error'] = true;$ret['error_msg'] = $result->$responseNode->sub_msg;$pub->data_log('error_msg==' . $ret['error_msg'], __FUNCTION__ . '.log');}return $ret;}/**
回调验签
*/
function check_sign(){
$postData = parameters_certification();
require_once WY_ROOT . '/includes/aop/AopCertClient.php'; //支付宝加载
$aop = new AopCertClient ();
$alipayCertPath = ''; //支付宝公钥证书路径(要确保证书文件可读),
$alipayCertPath = WY_ROOT . '/includes/aop/cert3/alipayCertPublicKey_RSA2.crt'; //"例如:/home/admin/cert/alipayCertPublicKey_RSA2.crt";
$aop->alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath);
$bool=$aop->rsaCheckV1($postData, $alipayCertPath,$postData['sign_type']);
if(!$bool){die('sign error.');
}}/*** 参数验证* @param array $field 参数索引数组【'a','b'】* @param array $data 需要验证数组,不传拿$_REQUEST* @return boolean | array 不存在参数,空参数返回false,否则返回验证数组*/
function parameters_certification($field = [], $data = []) {if (empty($data)) {$data = $_REQUEST;}if (empty($field)) {return $data;}foreach ($field as $val) {if (isset($data[$val])) {if (is_array($data[$val])) {if (empty($data[$val])) {return false;} else {continue;}}if (strlen($data[$val]) > 0) {continue;} else {return false;}} else {return false;}}return $data;
}?>
回调的时候,默认签名使用的是 rsaCheckV1
暂时还没有碰到 rsaCheckV2 的,本来我以为我发送的是V2版本的签名,回调也是V2的
后面试了又试,rsaCheckV1 无疑了
支付宝的SDK无疑是很完善的,接入也方便很多
这里使用的是V2版本
相关文章:
PHP 支付宝(单笔转账到银行账户接口)
alipay.fund.trans.tobank.transfer(单笔转账到银行账户接口) 小程序文档 - 支付宝文档中心 一、下载支付宝SDK,现有版本v1、v2、v3 https://github.com/alipay/alipay-sdk-php-all github 慢的话,DNS 直达即可 140.82.112.3 github.com 【host文…...
【Java万花筒】Java安全卫士:从密码学到Web应用攻击
Java安全锦囊:从Web应用攻击到加密算法,助你建立强固的开发堡垒 前言 在当今数字化时代,安全性至关重要,特别是对于Java开发者而言。本文将深入探讨Java安全与加密领域的关键库和技术,包括Bouncy Castle、Jasypt、Ke…...

redis安装-Linux为例
可以下载一个Shell或者MobaXterm工具,便于操作 在redis官网下载压缩包 开始安装 安装依赖 yum install -y gcc tcl切换目录 切换目录后直接把redis安装包拖到/user/local/src/下 cd /user/local/src/解压然后安装 #解压 tar -zxvf redis-7.2.4.tar.gz #安装 …...
iOS长按时无法保存图片问题解决方案
在使用iOS设备的用户中,相信很多人都有过在浏览网页时遇到长按时无法保存图片的困扰。这主要是因为网页开发者为了保护版权或隐私,默认屏蔽掉了图片长按时保存的功能。 具体来说,问题出在-webkit-touch-callout这个CSS属性上。这个属性用于定…...
Datawhale 强化学习笔记(一)
参考 在线阅读文档 github 教程 开源框架 JoyRL datawhalechina/joyrl: An easier PyTorch deep reinforcement learning library. (github.com) 策略梯度算法的两种不同的推导版本。 强化学习中的一些核心问题,比如优化值的估计、解决探索与利用等问题。 从传统强…...

首届PolarDB开发者大会在京举办,阿里云李飞飞:云数据库加速迈向智能化
1月17日,阿里云PolarDB开发者大会在京举办,中国首款自研云原生数据库PolarDB发布“三层分离”新版本,基于智能决策实现查询性能10倍提升、节省50%成本。此外,阿里云全新推出数据库场景体验馆、训练营等系列新举措,广大…...
003-90-15【SparkSQLDFDS】慈航寺庙山脚下八卦田旁油菜花海深处人家王大爷家女儿用GPT学习DataSet的基本操作
003-90-14【SparkSQL&DF&DS】慈航寺庙山脚下八卦田旁油菜花海深处人家王大爷家女儿用GPT学习DataSet的基本操作 【SparkSQL&DF&DS】Dataset 的创建和使用 【SparkSQL&DF&DS】2,Dataset 的创建和使用1, 创建2, show3, map4, as5, select6 f…...

代码随想录-刷题第五十七天
42. 接雨水 题目链接:42. 接雨水 思路:本题十分经典,使用单调栈需要理解的几个问题: 首先单调栈是按照行方向来计算雨水,如图: 使用单调栈内元素的顺序 从大到小还是从小到大呢? 从栈头&…...
flutter 播放SVGA动图
SVGAPlayer-Flutter:这是一个轻量级的动画渲染库,可以通过Flutter CustomPainter原生渲染动画,为您带来高性能,低成本的动画体验123。 您可以按照以下步骤使用 SVGAPlayer-Flutter 插件: 1.在 pubspec.yaml 文件中添…...

鸿蒙开发软件汉化
一、打开设置 File>Settings>Plugins>Marketplace,输入Chinese搜索插件(有的人是搜不到的),但别慌,选择Marketplace傍边的 Installed 按钮,里面就有Chinese插件(如果搜索出来的东西比较多往下就可…...

Three.js Tri-panner (三面贴图) 材质 两种实现方式
文章目录 介绍自定义shaderNodeMaterial骨骼材质特殊处理 介绍 Tri-panner 在babylonjs中有支持 但是three.js目前的基础材质并不支持 需要自己定义shader 或者使用目前还没有什么完善的文档的 NodeMaterial 下面展示两种实现方式 自定义shader /*** description: 替换三角面…...

Docker部署Flask项目
Docker部署Flask项目 一、准备项目代码二、编写Dockerfile三、服务器部署 一、准备项目代码 这里写了一个简单的Flask的demo,源代码如下: from flask import Flaskapp Flask(__name__)app.route("/") def index():return "<h1 styl…...

Git将某个文件合并到指定分支
企业开发中,经常会单独拉分支去做自己的需求开发,但是某些时候一些公共的配置我们需要从主线pull,这时候整个分支merge显然不合适 1.切换至待合并文件的分支 git checkout <branch>2.将目标分支的单个文件合并到当前分支 git checkou…...

Dockerfile构建镜像以及阿里云上传
前言 我们在使用docker部署微服务项目的时候会发现这样一个问题:每个服务构建出的镜像文件都很大,几百M,有些原始镜像也已经占据了很多内存了... 这种大的镜像往往都会导致迁移的速度变慢。其实我们启动容器主要最需要的镜像是jdk࿰…...

锂离子电池建模综述
锂电池很有吸引力,因为在元素周期表中,锂是一种非常正电的元素,它也恰好是最轻的金属,密度是水的一半。通常,电池由串联/并联的电化学电池组成。每个电池都包含一个负极(放电时为阳极)和一个由电…...
获取淘宝商品销量数据的方法分享(API、爬虫技术)
随着电子商务的飞速发展,获取淘宝商品销量数据的需求越来越强烈。无论是商家、分析师还是研究人员,都需要这些数据来了解市场趋势、竞争对手情况以及制定营销策略。本文将分享如何通过API和爬虫技术获取淘宝商品销量数据。 一、API获取数据 淘宝开放平…...

android 自定义八边形进度条
自定义八边形动画效果图如下 绘制步骤: 1.先绘制橙色底部八边形实心 2.黑色画笔绘制第二层,让最外层显示一条线条宽度即可 3.再用黄色画笔绘制黄色部分 4.使用渐变画笔根据当前进度绘制覆盖黄色部分 5.使用黑色画笔根据当前进度绘制刻度条 6.黑色画笔绘制…...

域名群站开源系统分享开源域名授权系统
一、需要自己安装PHP和MYSQL服务器环境。 二、务必设置伪静态规则,否则将无法访问文章栏目页面。 三、启用伪静态功能,请在站点设置中选择使用thinkphp的伪静态规则。 四、在域名的根目录下找到”data/config.php”文件,填入数据库的账号和…...
CTF - Web 干货
目录 1、php反序列化之pop链构造 2、常见php伪协议的使用 (1)php://filter (2)php://input 3、文件上传常规操作 (1) 前端绕过 (2) 修改文件类型 (3) 配合.user.ini 或.htaccess解析 (4) 爆破可解析后缀 (5) 针对Windows…...

mobi文件怎么转换成pdf?
mobi文件怎么转换成pdf?在数字化时代,电子书籍成为了越来越受欢迎的阅读方式。我们可以通过多种格式的电子书来获取知识和娱乐,其中一种常见的格式就是Mobi文件。Mobi文件是亚马逊公司开发的一种电子书格式,它主要用于Kindle设备和…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...