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 相关文章推荐
如何实现给定日期的若干天以后的日期
Oct 09 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
Mar 18 PHP
php时间计算相关问题小结
May 09 PHP
yii2分页之实现跳转到具体某页的实例代码
Jun 02 PHP
微信 getAccessToken方法详解及实例
Nov 23 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
基于php双引号中访问数组元素报错的解决方法
Feb 01 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 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操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
python爬虫之验证码篇3-滑动验证码识别技术
2019/04/11 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
Marlies Dekkers内衣美国官方网上商店:高端内衣品牌
2018/11/12 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
学年末自我鉴定
2014/01/21 职场文书
三年级科学教学反思
2014/01/29 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
单位接收函范文
2015/01/30 职场文书
西双版纳导游词
2015/02/03 职场文书
医德医风自我评价2015
2015/03/03 职场文书
清明祭英烈活动总结
2015/05/11 职场文书
诚信高考倡议书
2019/06/24 职场文书
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript