php实现单笔转账到支付宝功能

php实现单笔转账到支付宝的具体代码,具体内容如下

1.首先 去蚂蚁金服签约 单笔转账到支付宝

官方api文档

2.需要的配置信息

1).应用appid

2).生成密钥

根据文档步骤生成

上传这里的 应用公钥

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  /**   * create by 适可而止   * create time 2018/4/8   */  namespace OrgUtil;  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;   }  }  ?>
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论