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中的函数-- foreach()的用法详解
Jun 24 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
php中socket通信机制实例详解
Jan 03 PHP
php单例模式实现方法分析
Mar 14 PHP
Yii框架表单模型和验证用法
May 20 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 PHP
PHP实现根据数组的值进行分组的方法
Apr 20 PHP
PHP微信模板消息操作示例
Jun 29 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
Oct 15 PHP
laravel 解决Validator使用中出现的问题
Oct 25 PHP
PHP架构及原理知识点详解
Dec 22 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通过字符串调用函数示例
2014/03/02 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
PHP 实现链式操作
2021/03/09 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
js实现图片旋转的三种方法
2014/04/10 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
nodejs简单实现中英文翻译
2015/05/04 NodeJs
深入讲解AngularJS中的自定义指令的使用
2015/06/18 Javascript
jqGrid中文文档之选项设置
2015/12/02 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
Python实现的几个常用排序算法实例
2014/06/16 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
selenium+python环境配置教程详解
2019/05/28 Python
python实现图片九宫格分割
2021/03/07 Python
django+echart数据动态显示的例子
2019/08/12 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
Python 实现数组相减示例
2019/12/27 Python
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
理工大学毕业生自荐信范文
2014/02/22 职场文书
读书活动总结范文
2014/04/26 职场文书
人大调研汇报材料
2014/08/14 职场文书
2016新年慰问信范文
2015/03/25 职场文书
2015年超市工作总结范文
2015/05/26 职场文书
网络研修心得体会
2016/01/08 职场文书
MySQL慢查询的坑
2021/04/28 MySQL
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python