php实现单笔转账到支付宝功能


Posted in PHP onOctober 09, 2018

本文实例为大家分享了php实现单笔转账到支付宝的具体代码,供大家参考,具体内容如下

1.首先 去蚂蚁金服签约 单笔转账到支付宝

官方api文档 

2.需要的配置信息

1).应用appid

php实现单笔转账到支付宝功能

2).生成密钥

文档地址

根据文档步骤生成

php实现单笔转账到支付宝功能

上传这里的 应用公钥

php实现单笔转账到支付宝功能

php实现单笔转账到支付宝功能

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实现单笔转账到支付宝功能

我的代码

<?php
/**
 * create by 适可而止
 * create time 2018/4/8
 */
namespace Org\Util;
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;
 }
}
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php基础知识:函数基础知识
Dec 13 PHP
php Try Catch异常测试
Mar 01 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
php读取csv文件并输出的方法
Mar 14 PHP
PHP中判断文件存在使用is_file还是file_exists?
Apr 03 PHP
简单谈谈PHP vs Node.js
Jul 17 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
PC端微信扫码支付成功之后自动跳转php版代码
Jul 07 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 PHP
php实现小程序支付完整版
Oct 09 #PHP
php实现微信企业付款到个人零钱功能
Oct 09 #PHP
php实现构建排除当前元素的乘积数组方法
Oct 06 #PHP
php微信公众号开发之微信企业付款给个人
Oct 04 #PHP
PHP获取当前系统时间的方法小结
Oct 03 #PHP
PHP格式化显示时间date()函数代码
Oct 03 #PHP
php实现微信企业转账功能
Oct 02 #PHP
You might like
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
php mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
django中的ajax组件教程详解
2018/10/18 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
浅析Django中关于session的使用
2019/12/30 Python
python颜色随机生成器的实例代码
2020/01/10 Python
Python如何测试stdout输出
2020/08/10 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
python 实现Harris角点检测算法
2020/12/11 Python
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
蛋糕店创业计划书
2014/05/06 职场文书
教师四风问题整改措施
2014/09/25 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
护士自荐信怎么写
2015/03/06 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL