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 相关文章推荐
用libTemplate实现静态网页的生成
Oct 09 PHP
PHP 时间转换Unix时间戳代码
Jan 22 PHP
PHP中的integer类型使用分析
Jul 27 PHP
php中并发读写文件冲突的解决方案
Oct 25 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
PHP中$_SERVER使用说明
Jul 05 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 PHP
Eclipse PHPEclipse 配置的具体步骤
Aug 08 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
Centos7 Yum安装PHP7.2流程教程详解
Jul 02 PHP
PHP之header函数详解
Mar 02 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/01 无线电
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
php中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
php5.3不能连接mssql数据库的解决方法
2014/12/27 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
php计算title标题相似比的方法
2015/07/29 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
javascript控制swfObject应用介绍
2012/11/29 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
python进程管理工具supervisor使用实例
2014/09/17 Python
python安装与使用redis的方法
2016/04/19 Python
python爬取淘宝商品销量信息
2018/11/16 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
物流仓管员岗位职责
2013/12/04 职场文书
护士辞职信模板
2014/01/20 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
学生检讨书怎么写
2015/05/07 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
商场广播稿范文
2015/08/19 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
图文详解Nginx版本平滑升级方案
2021/09/15 Servers