支付宝 单笔转账到支付宝账户接口 - 提现


实现用户提现 资金自动到账

前期的支付宝配置 可以参考文章 支付宝配置 (新版)


当前开发环境:

Windows

phpstudy

ThinkPHP5

支付宝接口新版 1.0 


实现提现的步骤 

1 开发者平台进行签约 

2 找到开发文档

3 实际开发测试 



1 签约

登录支付宝开放平台,进入开发者中心->选择需要对接的APP应用->找到下图界面,进行添加 单笔转账到支付宝账号 功能,然后签约,

1512092215152676.png



2 找到开发文档,


一般我们使用的都是支付 退款功能,这些api  都是在支付api里列表中的,

而单笔转账是在资金api中的,我找了好一会才找到


1512092526451779.png



3 实际开发

在 https://docs.open.alipay.com/54/103419/ 中下载最新demo


1512092734360692.png



把demo放入到 extend 目录下

3.1 引入核心文件

Loader::import('alipay.aop.AopClient',EXTEND_PATH,'.php');
Loader::import('alipay.aop.request.AlipayFundTransToaccountTransferRequest',EXTEND_PATH,'.php');
Loader::import('alipay.aop.SignData',EXTEND_PATH,'.php');


3.2 提现函数  


根据文档的说明,提现也是需要一个唯一的编号 来标识当前这笔转账交易记录的,需要一个表进行记录 


/**
 * @User 一秋
* @param $userid  用户id
* @param $out_biz_no 编号
* @param $payee_account 提现的支付宝账号
* @param $amount 转账金额
* @param $payee_real_name 账号的真实姓名
* @return bool|Exception
*/
public static function userWithDraw(
   $userid,$out_biz_no,$payee_account,$amount,$payee_real_name)
{
   $payer_show_name = '用户红包提现';
   $remark = '红包提现到支付宝';
   $aop = new \AopClient();
   $aop->gatewayUrl =  config('alipay.gatewayUrl');//支付宝网关 https://openapi.alipay.com/gateway.do这个是不变的
   $aop->appId = config('alipay.appId');//商户appid 在支付宝控制台找
   $aop->rsaPrivateKey = config('alipay.rsaPrivateKey');//私钥 工具生成的
   $aop->alipayrsaPublicKey=config('alipay.alipayrsaPublicKey');//支付宝公钥 上传应用公钥后 支付宝生成的支付宝公钥
   $aop->apiVersion = '1.0';
   $aop->signType = 'RSA2';
   $aop->postCharset='utf-8';
   $aop->format='json';
   $request = new \AlipayFundTransToaccountTransferRequest();
   $request->setBizContent("{" .
       "\"out_biz_no\":\"$out_biz_no\"," .
       "\"payee_type\":\"ALIPAY_LOGONID\"," .
       "\"payee_account\":\"$payee_account\"," .
       "\"amount\":\"$amount\"," .
       "\"payer_show_name\":\"$payer_show_name\"," .
       "\"payee_real_name\":\"$payee_real_name\"," .
       "\"remark\":\"$remark\"" .
       "}");
   $result = $aop->execute ($request);

   $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
   $resultCode = $result->$responseNode->code;

   if(!empty($resultCode)&&$resultCode == 10000){
       //提现成功以后 更新表状态
       //并且记录 流水等等

       return true;
   } else {
       //$result->$responseNode->sub_msg 这个参数 是返回的错误信息
      throw new Exception($result->$responseNode->sub_msg);
   }
}





来源: up61技术博客 欢迎分享 (QQ:529857614)

qq交流群:63739043 up61博客-php交流群

上一篇: 支付宝及时到账(新版)配置
下一篇: 支付宝退款 (新版)