最近做了功能,涉及到了微信支付单笔转账功能,不得不说,支付宝的到款速度还是很给力。

首先必须要有去申请企业支付宝,这个东西需要营业执照,申请一般1-2天即可申请完毕,最后还会有个对公账号打款8.22元。现在我们主要说下程序方面的实现

第一,首先需要建立一个开发者应用,会分配你一个appid

2,进行相对应的功能应用进行签约,时间一般一天就可以通过

3,填写公钥,公钥这块用支付宝提供的工具生成即可。

4以上执行完毕后,我们就可以根据文档进行功能开发

5.请求地址  https://openapi.alipay.com/gateway.do

,通过文档,我们知道其实我们就把相应的参数(公共请求参数和请求参数)发给支付宝

6.支付宝接受到参数会给我们相应的反馈,在请求参数时,我们会把所有的请求参数json后放入到公共参数 biz_content中,具体参看下面代码

  

<?php
require_once '../zhifubao/Rsa.class.php';
require_once '../zhifubao/Base.class.php';
require_once '../zhifubao/Alipay.class.php';
//构建支付请求 可以传递MD5 RSA RSA2三种参数
$obj = new Alipay();$data = ['payee_account'  => 'xxxxx', //收款方账户'amount'  => 'xxxx', //金额
];//UTF-8格式的json数据
$res = iconv('gbk','utf-8',$obj->transfer($data));echo '<pre>';
//转换为数组
$res = json_decode($res,true);print_r($res);

  

  alipay类

<?php
class Alipay extends Base
{const TRANSFER = 'https://openapi.alipay.com/gateway.do';public function __construct() {}//转账public function transfer($data){//公共请求参数$pub_params = ['app_id'    => self::APPID,'method'    =>  'alipay.fund.trans.toaccount.transfer', //接口名称 应填写固定值alipay.fund.trans.toaccount.transfer'format'    =>  'JSON', //目前仅支持JSON'charset'    =>  'UTF-8','sign_type'    =>  'RSA2',//签名方式'sign'    =>  '', //签名'timestamp'    => date('Y-m-d H:i:s'), //发送时间 格式0000-00-00 00:00:00'version'    =>  '1.0', //固定为1.0'biz_content'    =>  '', //业务请求参数的集合];//请求参数$api_params = ['out_biz_no'  => date('YmdHis'),//商户转账订单号'payee_type'  => 'ALIPAY_LOGONID', //收款方账户类型'payee_account'  => $data['payee_account'], //收款方账户'amount'  => $data['amount'], //金额];$pub_params['biz_content'] = json_encode($api_params,JSON_UNESCAPED_UNICODE);$pub_params =  $this->setRsa2Sign($pub_params);return $this->curlRequest(self::TRANSFER, $pub_params);}
}

  Base类

<?php
class Base extends RSA
{
/**
* 以下信息需要根据自己实际情况修改
*/
//自己的私钥
const APPPRIKEY = 'xxxxx'; //修改成自己的 应用私钥
//申请到的APPID
const APPID = 'xxxxx';
//支付宝公钥,不是你自己生成的公钥
const NEW_ALIPUBKE ='xxxx'; //修改成自己的 支付宝公钥public function getStr($arr,$type = 'RSA'){//筛选if(isset($arr['sign'])){unset($arr['sign']);}if(isset($arr['sign_type']) && $type == 'RSA'){unset($arr['sign_type']);}//排序ksort($arr);//拼接return  $this->getUrl($arr,false);
}
//将数组转换为url格式的字符串
public function getUrl($arr,$encode = true){if($encode){return http_build_query($arr);}else{return urldecode(http_build_query($arr));}
}//获取签名RSA2
public function getRsa2Sign($arr){return $this->rsaSign($this->getStr($arr,'RSA2'), self::APPPRIKEY,'RSA2') ;
}
//获取含有签名的数组RSA
public function setRsa2Sign($arr){$arr['sign'] = $this->getRsa2Sign($arr);return $arr;
}
public function checkSign($arr){if($this->getRsa2Sign($arr) == $arr['sign']){return true;}else{return false;}
}public function curlRequest($url,$data = ''){$ch = curl_init();$params[CURLOPT_URL] = $url;    //请求url地址$params[CURLOPT_HEADER] = false; //是否返回响应头信息$params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回$params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向$params[CURLOPT_TIMEOUT] = 30; //超时时间if(!empty($data)){$params[CURLOPT_POST] = true;$params[CURLOPT_POSTFIELDS] = $data;}$params[CURLOPT_SSL_VERIFYPEER] = false;//请求https时设置,还有其他解决方案$params[CURLOPT_SSL_VERIFYHOST] = false;//请求https时,其他方案查看其他博文curl_setopt_array($ch, $params); //传入curl参数$content = curl_exec($ch); //执行curl_close($ch); //关闭连接return $content;
}}

  

rsa 验证类

<?php
class RSA
{
/**
* RSA签名
* @param $data 待签名数据
* @param $private_key 私钥字符串
* return 签名结果
*/
function rsaSign($data, $private_key,$type = 'RSA') {$search = [
"-----BEGIN RSA PRIVATE KEY-----",
"-----END RSA PRIVATE KEY-----",
"\n",
"\r",
"\r\n"
];$private_key=str_replace($search,"",$private_key);
$private_key=$search[0] . PHP_EOL . wordwrap($private_key, 64, "\n", true) . PHP_EOL . $search[1];
$res=openssl_get_privatekey($private_key);if($res)
{
if($type == 'RSA'){
openssl_sign($data, $sign,$res);
}elseif($type == 'RSA2'){
//OPENSSL_ALGO_SHA256
openssl_sign($data, $sign,$res,OPENSSL_ALGO_SHA256);
}
openssl_free_key($res);
}else {
exit("私钥格式有误");
}
$sign = base64_encode($sign);
return $sign;
}/**
* RSA验签
* @param $data 待签名数据
* @param $public_key 公钥字符串
* @param $sign 要校对的的签名结果
* return 验证结果
*/
function rsaCheck($data, $public_key, $sign,$type = 'RSA')  {
$search = [
"-----BEGIN PUBLIC KEY-----",
"-----END PUBLIC KEY-----",
"\n",
"\r",
"\r\n"
];
$public_key=str_replace($search,"",$public_key);
$public_key=$search[0] . PHP_EOL . wordwrap($public_key, 64, "\n", true) . PHP_EOL . $search[1];
$res=openssl_get_publickey($public_key);
if($res)
{
if($type == 'RSA'){
$result = (bool)openssl_verify($data, base64_decode($sign), $res);
}elseif($type == 'RSA2'){
$result = (bool)openssl_verify($data, base64_decode($sign), $res,OPENSSL_ALGO_SHA256);
}
openssl_free_key($res);
}else{
exit("公钥格式有误!");
}
return $result;
}}

  

代码已上传csdn,可以下载查看

https://download.csdn.net/download/hanyudanei/10398119

转载于:https://www.cnblogs.com/hanyudanei/p/9003838.html

支付宝单笔转账支付功能相关推荐

  1. 对接支付宝单笔转账接口

    对接支付宝单笔转账接口 功能介绍 接入准备 调用支付宝api需要以下参数: 项目引入 操作流程 创建小程序 配置小程序 集成配置 SDK 助手 详细操作流程 获取appId 获取证书 获取AES密钥 ...

  2. 平台资金提现解决方案之实现支付宝单笔转账到银行卡功能

    大家好,我是小悟 使用场景 不管是做APP.电脑网站.手机网站还是小程序,为了推广基本上都离不开用户分佣的场景. 换句话说就是在其平台内为每个用户设置"电子钱包"功能,而电子钱包在 ...

  3. php手机网站支付宝_PHP实现支付宝手机网站支付功能

    PHP实现支付宝手机网站支付功能的方法:首先开通支付宝商家中心里面的手机网站支付:然后进入开发者中心,获取到APPID:接着去文档中心下载"DEMO":最后将"demo& ...

  4. Spring Boot集成支付宝电脑网站支付功能

    Spring Boot集成支付宝电脑网站支付功能 接入准备 登录 创建应用 添加能力 生成私钥与公钥 开发设置 沙箱环境 示例Demo的使用与学习 下载Demo 启动项目 参数配置 执行测试 Spri ...

  5. 支付宝支付、支付宝单笔转账-----后端综合集成

    1.业务场景 用户在平台选好东西,点击支付宝付款 根据场景不同唤起支付(pc端为二维码支付,手机wap端为wap支付,app为app支付) 用户支付完成回到系统. 由以上三个步骤我们大概可以知道,我们 ...

  6. 支付宝 单笔转账到支付宝账户接口 - 提现

    实现用户提现 资金自动到账 前期的支付宝配置 可以参考文章 支付宝配置 (新版) 当前开发环境: Windows phpstudy ThinkPHP5 支付宝接口新版 1.0 实现提现的步骤 1 开发 ...

  7. 支付宝单笔转账到支付宝账户(用于分成或者退款)

    超快速接入 支付宝官方文档 直接上代码 SDK AlipayUtils 支付宝官方文档 转账到支付宝用户快速接入 单笔转账到支付宝账户接入助手 直接上代码 SDK <!-- https://mv ...

  8. PHP 支付宝 “(单笔转账接口)转账到支付宝账号”

    目录 前言 一.服务层 二.控制层 1.控制层 2.接口返回参数实例 前言 单笔转账接口 | 网页&移动应用 准备: 1:应用的证书(证书申请和配置可以参考我另一篇分享"支付宝 '应 ...

  9. php 个人账户转账,支付宝单笔转账到支付宝个人账户接口 ( PHP 版 )

    alipay.fund.trans.toaccount.transfer(单笔转账到支付宝账户接口) 单笔转账到支付宝账户接口是基于支付宝的资金处理能力,为了满足支付宝商家向其他支付宝账户转账的需求, ...

最新文章

  1. Bitcoin.com宣布将成立2亿美元的BCH生态系统投资基金
  2. subview自适应superview的frame autosizingMask(转)
  3. Matlab中pickic_法语「野餐」怎么写?不是picnic哦
  4. mysql内置含糊_mySQL入门04 内置函数
  5. php 显示目录列表,php读取目录列表与文件列表的代码举例
  6. Ubuntu 20.04 LTS 已上架 Windows 10 应用商店
  7. 【解决方案】客户端请求数据较大时,nginx返回数据被截断
  8. javascript基础知识总结
  9. Java中几种输出当前时间的代码
  10. 基于RS485的Modbus协议
  11. 手机上怎么把PDF转换成word呢?分享一个转换小神器
  12. Rme Babyface Pro FS娃娃脸声卡安装调试教程
  13. 【DG】DG的3种保护模式
  14. 金额格式化,符号位,保留两位小数
  15. 智能家居,产业跌宕三十年
  16. 好吧! 阿达 奥古尼斯
  17. 零伽壹产业研究:新商业奇观元宇宙,多种技术的集大成者
  18. 密码学技术如何选型?终探量子计算通信的安全模型
  19. 2021-04-24 - 电脑主板 - 升级Blos和ME - 学习/实践
  20. 2022最新圣诞节代码:圣诞树

热门文章

  1. 美国一男子从移动电话基站跳伞死亡
  2. ES6 箭头函数大起底:熟知这几个特点让你少踩很多坑
  3. Ubuntu虚拟机安装步骤(图文教程,非常详细!!!)
  4. Ubuntu虚拟机扩展磁盘空间
  5. 互联网自媒体平台大全,你知道多少?
  6. snmp v3 参数_SNMP v3典型配置
  7. vue路由跳转 定位到页面顶部
  8. Chrome快捷键记录
  9. 利用Java实现PC端的划词搜索
  10. NameNode和SecondaryNameNode详解