php实现支付宝商户转账

目录

一:背景介绍

一:准备工作

三:代码实现


一:背景介绍

最近工作中,要用到支付宝的商家转账功能,用php代码实现,网上找的内容,有些是老版本的实现,有些是调用sdk,而且功能还不完善。最后自己实现了官方最新的转账功能,特此记录下。

一:准备工作

1:在开放平台签约申请商户,得到商户id和app_id;

2:申请证书和秘钥

这里的证书有CSR私钥,应用公钥证书和支付宝公钥证书,根证书

,应用公钥证和根证书用于转账接口,CSR私钥用于签名,支付宝公钥证书用于转账接口返回值接口验签,东西还是比较多的。
 

三:代码实现

        $parameter = [
            'app_id'                => $this->config['appid'],
            'method'                => 'alipay.fund.trans.uni.transfer',
            'format'                => 'JSON',
            'charset'               => 'utf-8',
            'sign_type'             => 'RSA2',
            'timestamp'             => date('Y-m-d H:i:s'),
            'version'               => '1.0',
            'alipay_root_cert_sn'   => $this->getRootCertSn($certPath.'alipayRoot.crt'),
            'app_cert_sn'           => $this->getCertSn($certPath.'appPublicKey_'.$this->config['appid'].'.crt'),
        ];

//业务参数构造
        $biz_content = [
            'out_biz_no'            => $params['order_no'],
            'trans_amount'          => (string) $params['trans_amount'],
            'biz_scene'             => 'DIRECT_TRANSFER',
            'product_code'          => 'TRANS_ACCOUNT_NO_PWD',

            'order_title'           => $trans_remark,
            'payee_info'            => [
                'identity'          => $params['client_id'],
                'identity_type'     => 'ALIPAY_LOGON_ID',
                'name'              => $params['client_name'],
            ]
        ];
        $parameter['biz_content'] = json_encode($biz_content, JSON_UNESCAPED_UNICODE);
        // 生成签名参数+签名
        $parameter['sign'] = $this->MyRsaSign($this->GetSignContent($parameter));
        // 执行请求
        $result = $this->HttpRequest('https://openapi.alipay.com/gateway.do', $parameter);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/302695.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录二刷 |二叉树 | 验证二叉搜索树

代码随想录二刷 |二叉树 | 验证二叉搜索树 题目描述解题思路递归法迭代法 代码实现递归法迭代法 题目描述 98.验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子…

解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题

目录 问题: 尝试 问题得到解决 我的解释 问题: 最近游戏要上线,发现一个现象,部分机型在启动的时候闪退或者黑屏,概率是5%左右,通过Bugly只有个别机型才有这个现象,其实真实情况比这严重的多…

Async In C#5.0(async/await)学习笔记

此文为Async in C#5.0学习笔记 1、在async/await之前的异步 方式一:基于事件的异步Event-based Asynchronous Pattern (EAP). private void DumpWebPage(Uri uri) {WebClient webClient new WebClient();webClient.DownloadStringCompleted OnDownloadStringCo…

VMware安装与CentOS8安装与配置

VMware安装与CentOS8安装与配置 话不多说,咱们开始干,文末附资料哦~ 一、安装VMware 1、双击安装包 2、如提出什么重启,重启就是了 3、按照提示下一步 4、选择安装目录,下一步 5、取消勾选,下一步 安装完成后&…

【FPGA】分享一些FPGA数字信号处理相关的书籍

在做FPGA工程师的这些年,买过好多书,也看过好多书,分享一下。 后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍【FPGA】分享一些FPGA协同MATLAB开发的书籍 【FPGA】分享一些FPGA视频图像处理相关的书籍 【FPGA】分享一些FPGA高速…

【愚公系列】2023年12月 HarmonyOS教学课程 054-Web组件(基本使用和属性)

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主&#xf…

【python】使用fitz包读取PDF文件报错“ModuleNotFoundError: No module named ‘frontend‘”

【python】使用fitz包读取PDF文件报错“ModuleNotFoundError: No module named ‘frontend’” 正确解决过程 在读取PDF文件时,我使用了fitz包,当使用代码import fitz导入该包时,出现了报错: 于是我直接使用以下代码安装fronten…

Vmware安装windowsServer2022版本

虚拟机配置 文件->新建虚拟机 典型安装与自定义安装 典型安装:VMware会将主流的配置应用在虚拟机的操作系统上,对于新手来很友好。 自定义安装:自定义安装可以针对性的把一些资源加强,把不需要的资源移除。避免资源的浪费。…

二叉树的直径,力扣

目录 题目地址: 题目: 我们直接看题解吧: 审题目事例提示: 解题方法: 难度分析: 解题方法分析: 解题分析: 补充说明: 代码优化: 题目地址: 543. 二…

设计模式的艺术P1基础—2.2 类与类的UML图示

设计模式的艺术P1基础—2.2 类与类的UML图示 在UML 2.0的13种图形中,类图是使用频率最高的两种UML图之一(另一种是用于需求建模的用例图),它用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解…

指针传参误区

C语言中指针作为形参传递时,func(*a, *b) 这种形式的话,是无法通过简单的 ab来修改的,在函数体内a的地址确实被修改成b的地址了,但是当函数执行结束时,a的地址会重新回到原本的地址里面&#xf…

Mac安装upx及不同os计算md5值

Mac安装upx 最近需要将exe文件打包到pod内部,为了减少包占用磁盘空间,需要借用upx对windows exe文件进行压缩。 1 概念:压缩工具 UPX 全称是 “Ultimate Packer for eXecutables”,是一个免费、开源、编写、可扩展、高性能的可执行…

【C语言】编程世界的不朽基石与未来展望

C语言,一种经久不衰的高级编程语言,自1972年由Dennis Ritchie在AT&T贝尔实验室开发以来,已深深扎根于编程语言的发展历程中。它既是计算机科学史上的一个重要里程碑,也是现代软件开发的核心支柱。从操作系统到嵌入式系统的构建…

设计模式的艺术P1基础—第1章 概述

刘伟,2020 概述:4部分,26章。 P1:基础(1-2章) P2:创建型设计模式(创建艺术,3-8章) P3:结构型设计模式(组合艺术,9-15章) P4:行为型设计模式&…

基于Python的车牌识别系统实现

本文将以基于Python的车牌识别系统实现为方向,介绍车牌识别技术的基本原理、常用算法和方法,并详细讲解如何利用Python语言实现一个完整的车牌识别系统。 精彩专栏持续更新推荐订阅,收藏关注不迷路 微信小程序实战开发专栏 目录 引言车牌识别技术的应用场景Python在车牌识别…

从零学Java - String类

Java String类 文章目录 Java String类1 String1.1 常用两种创建方式1.2 比较两种创建方式1.3 字符串不可变性1.4 面试题 2 常用方法2.1 练习 3 可变字符串3.1 常用方法3.2 验证StringBuilder的高效性3.3 练习3.4 面试题: 4 正则表达式4.1 元字符4.2 其他字符4.2.1 预定义字符4…

MLP(多层感知机) 虚战1

使用Keras实现MLP 前两节地址: CSDNmatplotlib 虚战1-CSDN博客 (数据的获取在这有说明) 数据预处理 虚战1-CSDN博客CSDN 数据预处理的最后一步:将数据集分为 训练数据集、测试数据集和校验数据集。 训练数据集&#xff1a…

C++学习笔记——友元及重载运算符

目录 一、友元 1.1声明友元函数 1.2声明友元类 二、运算符重载 2.1重载加号运算符 2.2重载流插入运算符 三、一个简单的银行管理系统 四、 详细的介绍 一、友元 在 C 中,友元是一个函数或类,它可以访问另一个类的私有成员或保护成员。通常情况下…

RT-Thread 线程管理

线程管理 在日常生活中,我们要完成一个大任务,一般会将它分解成多个简单、容易解决的小问题,小问题逐个被解决,大问题也就随之解决了。 在多线程操作系统中,也同样需要开发人员把一个复杂的应用分解成多个小的、可调…

k8s--集群调度(kube-scheduler)

了解kube-scheduler 由之前博客可知kube-scheduler是k8s中master的核心组件之一 scheduler:负责调度资源。把pod调度到node节点。他有两种策略: 预算策略:人为部署,指定node节点去部署新建的pod 优先策略:通过算法选…