php实现单笔转账到支付宝功能
时间:2022-07-27
本文章向大家介绍php实现单笔转账到支付宝功能,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例为大家分享了php实现单笔转账到支付宝的具体代码,供大家参考,具体内容如下
1.首先 去蚂蚁金服签约 单笔转账到支付宝
官方api文档
2.需要的配置信息
1).应用appid
2).生成密钥
文档地址
根据文档步骤生成
上传这里的 应用公钥
3.下载官方sdk 然后集成到自己项目
服务端SDK
官方实例
//实例化客户端
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.open.public.template.message.industry.modify
AlipayOpenPublicTemplateMessageIndustryModifyRequest request = new AlipayOpenPublicTemplateMessageIndustryModifyRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
//此次只是参数展示,未进行字符串转义,实际情况下请转义
request.setBizContent(" {" +
" "primary_industry_name":"IT科技/IT软件与服务"," +
" "primary_industry_code":"10001/20102"," +
" "secondary_industry_code":"10001/20102"," +
" "secondary_industry_name":"IT科技/IT软件与服务"" +
" }");
AlipayOpenPublicTemplateMessageIndustryModifyResponse response = alipayClient.execute(request);
//调用成功,则处理业务逻辑
if(response.isSuccess()){
//.....
}
效果如下
我的代码
<?php
/**
* create by 适可而止
* create time 2018/4/8
*/
namespace OrgUtil;
class AlipayTransfer{
private $appId = 'appid';
private $rsaPrivateKey = '私钥';
private $alipayrsaPublicKey = "支付宝公钥";
private $payer_name = "xx科技";
private $aop;
public function __construct()
{
$g_alipay = C('ALIPAY_CONFIG');
$this- appId = $g_alipay['APPID'];//appid
$this- rsaPrivateKey = $g_alipay['rsaPrivateKey']; //私钥
$this- alipayrsaPublicKey=$g_alipay['rsaPublicKey'];//支付宝公钥
//引入单笔转账sdk
Vendor('Alipayaop.AopSdk');
}
public function init_aop_config()
{
$this- aop- gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$this- aop- appId = $this- appId;
$this- aop- rsaPrivateKey = $this- rsaPrivateKey;
$this- aop- alipayrsaPublicKey=$this- alipayrsaPublicKey;
$this- aop- apiVersion = '1.0';
$this- aop- signType = 'RSA2';
$this- aop- postCharset='UTF-8';
$this- aop- format='json';
}
/**
* 单笔转账接口
* @param $order_number 订单号
* @param $pay_no 转账账号
* @param $pay_name 转账用户名
* @param $amount 转账金额
* @param $memo 备注
*/
public function transfer($order_number,$pay_no,$pay_name,$amount,$memo)
{
//存入转账日志
$this- transferLog($order_number,$pay_no,$pay_name,$amount);
$this- aop = new AopClient ();
//配置参数
$this- init_aop_config();
//导入请求
$request = new AlipayFundTransToaccountTransferRequest ();
$request- setBizContent("{" .
""out_biz_no":"".$order_number.""," .//商户生成订单号
""payee_type":"ALIPAY_LOGONID"," .//收款方支付宝账号类型
""payee_account":"".$pay_no.""," .//收款方账号
""amount":"".$amount.""," .//总金额
""payer_show_name":"".$this- payer_name.""," .//付款方账户
""payee_real_name":"".$pay_name.""," .//收款方姓名
""remark":"".$memo.""" .//转账备注
"}");
$result = $this- aop- execute ( $request);
$responseNode = str_replace(".", "_", $request- getApiMethodName()) . "_response";
$resultCode = $result- $responseNode- code;
$resultSubMsg = $result- $responseNode- sub_msg;
//修改转账日志
$this- edit_transferLog($order_number,$resultCode,$resultSubMsg);
if(!empty($resultCode)&&$resultCode == 10000){
return true;
} else {
return false;
}
}
/**
* 存取日志
*/
private function transferLog($order_number,$pay_no,$pay_name,$amount)
{
$data['order_number'] = $order_number;
$data['pay_no'] = $pay_no;
$data['pay_name'] = $pay_name;
$data['amount'] = $amount;
$data['create_time'] = time();
M('AlipayTransferLog')- add($data);
}
/**
* 修改日志
*/
private function edit_transferLog($order_number,$result_code,$sub_msg)
{
$model = D("AlipayTransferLog");
$where['order_number'] = $order_number;
$result = $model- where($where)- order('create_time desc')- find();
if ($result_code == 10000)
{
$result['status'] = 1;
$sub_msg = 'success';
}
else
{
$result['status'] = 2;
}
$result['memo'] = $sub_msg;
$result['update_time'] = time();
M('AlipayTransferLog')- save($result);
}
/**
* 查单接口
*/
public function query($order_number)
{
$this- aop = new AopClient ();
//配置参数
$this- init_aop_config();
$request = new AlipayFundTransOrderQueryRequest ();
$request- setBizContent("{" .
""out_biz_no":"".$order_number.""" .
" }");
$result = $this- aop- execute ( $request);
$responseNode = str_replace(".", "_", $request- getApiMethodName()) . "_response";
$resultCode = $result- $responseNode- code;
if(!empty($resultCode)&&$resultCode == 10000){
$res_arr['code'] = '00';
$res_arr['data'] = $result;
} else {
$res_arr['code'] = '-1';
}
return $res_arr;
}
}
?
以上就是本文的全部内容,希望对大家的学习有所帮助。
- 新浪微博爬虫最新分享
- Unity Application Block 3月12 发布的版本
- HTTPS静态服务搭建过程详解
- 基于Webkit的浏览器关键渲染路径介绍
- CodePlex 全面支持Subversion/TortoiseSVN
- 计算机程序的思维逻辑 (11) - 初识函数
- Android WebView 调试方法
- Python开发微信公众号后台(系列一)
- Consul最常用的命令和接口api
- webpack的Hot Module Replacement运行机制
- 如何使用Node.js编写命令工具——以vue-cli为例
- SpringBoot编写自定义的starter
- webpack3新特性简介
- Python机器学习算法入门之梯度下降法实现线性回归
- 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
- LeetCode176——第二高的薪水
- 快速学习-Saturn QuickStart
- 快速学习-开发你的作业
- 理解Spring中的IoC和DI
- 快速学习-Saturn性能测试报告
- Java源码系列1——ArrayList
- 【Kubernetes】自定义资源CRDs不支持fieldselector
- Cypress系列(48)- and() 命令详解
- Java源码系列2——HashMap
- 快速学习-Saturn Console部署
- MySQL的各种日志
- 本地机器如何访问服务器上的docker容器内的tensorboard?
- MySQL是如何实现可重复读的?
- Java源码系列4——HashMap扩容时究竟对链表和红黑树做了什么?
- 如何理解被 protected 修饰的成员变量?