php 单笔转账到支付宝

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

官方api文档  https://docs.open.alipay.com/309


2.需要的配置信息

一.应用appid


二.生成密钥

文档地址

https://docs.open.alipay.com/291/106130

根据文档步骤生成


上传这里的 应用公钥




3.下载官方sdk 然后集成到自己项目

https://docs.open.alipay.com/54/103419/

官方实例

//实例化客户端
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 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;
    }
}
?>

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值