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脚本的10个技巧(4)
Oct 09 PHP
PHP 采集心得技巧
May 15 PHP
php ios推送(代码)
Jul 01 PHP
php过滤XSS攻击的函数
Nov 12 PHP
使用php批量删除数据库下所有前缀为prefix_的表
Jun 09 PHP
php根据日期或时间戳获取星座信息和生肖等信息
Oct 20 PHP
php验证邮箱和ip地址最简单方法汇总
Oct 30 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
Aug 01 PHP
php加密解密字符串示例
Oct 13 PHP
PHP检查URL包含特定字符串实例方法
Feb 11 PHP
利用ajax+php实现商品价格计算
Mar 31 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
PHP运行环境配置与开发环境的配置(图文教程)
2013/06/04 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
Vue瀑布流插件的使用示例
2018/09/19 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
python实现学生管理系统
2018/01/11 Python
对Python中range()函数和list的比较
2018/04/19 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
酒店保安员岗位职责
2014/01/31 职场文书
企业精神口号
2014/06/11 职场文书
欢迎横幅标语
2014/06/17 职场文书
故宫英文导游词
2015/01/31 职场文书
大学毕业典礼致辞
2015/07/29 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python
对Keras自带Loss Function的深入研究
2021/05/25 Python
JavaScript中MutationObServer监听DOM元素详情
2021/11/27 Javascript