转账到支付宝账户产品介绍
转账到支付宝账户是为了满足支付宝商户向其他支付宝账户进行单笔转账的需求,针对具备开发能力的商户,提供通过 API 接口完成单笔转账的功能。商家只需输入另一个正确的支付宝账号,即可将单笔资金从本人的支付宝账户转账至另一个支付宝账户。 该产品适用行业较广,可用于商户间的货款结算,转账汇款,商户给个人用户发放佣金等。目前仅支持账户余额渠道付款。
支付宝开发者中心申请 单笔转账到账户
2. 上传应用公钥证书
3. 下载支付宝SDK
4. 查看支付宝alipay.fund.trans.uni.transfer接口
5. 支付宝转账
添加功能里面添加 单笔转账到账户点击应用信息
设置接口加密方式
需要生成 RSA私钥公钥和证书 支付宝密钥生成器下载
这里需要注意 一下 先点击CSR文件获取
点击获取 点击CSR文件 之后 应用私钥和公钥会进行变更
返回支付宝加签内容管理 上传CSR
并且保存刚刚生成的应用私钥SDK包下载地址
文档接口 文档接口里面有非证书的请求 AopClient 如果需要强制性使用证书 使用AopCertClient
代码 先下载证书
require_once'../AopCertClient.php';
require_once'../request/AlipayFundTransUniTransferRequest.php';
/**
*证书类型AopCertClient功能方法使用测试,特别注意支付宝根证书预计2037年会过期,请在适当时间下载更新支付更证书
*1、execute证书模式调用示例
*2、sdkExecute证书模式调用示例
*3、pageExecute证书模式调用示例
*/
//1、execute使用
$aop=newAopCertClient();
$appCertPath="应用证书路径(要确保证书文件可读),例如:/home/admin/cert/appCertPublicKey.crt";
$alipayCertPath="支付宝公钥证书路径(要确保证书文件可读),例如:/home/admin/cert/alipayCertPublicKey_RSA2.crt";
$rootCertPath="支付宝根证书路径(要确保证书文件可读),例如:/home/admin/cert/alipayRootCert.crt";
$aop->gatewayUrl='/gateway.do';
$aop->appId='你的appid';
$aop->rsaPrivateKey='你的应用私钥';
$aop->alipayrsaPublicKey=$aop->getPublicKey($alipayCertPath);//调用getPublicKey从支付宝公钥证书中提取公钥
$aop->apiVersion='1.0';
$aop->signType='RSA2';
$aop->postCharset='utf-8';
$aop->format='json';
$aop->isCheckAlipayPublicCert=true;//是否校验自动下载的支付宝公钥证书,如果开启校验要保证支付宝根证书在有效期内
$aop->appCertSN=$aop->getCertSN($appCertPath);//调用getCertSN获取证书序列号
$aop->alipayRootCertSN=$aop->getRootCertSN($rootCertPath);//调用getRootCertSN获取支付宝根证书序列号
$request=newAlipayFundTransUniTransferRequest();
$arrData=[
'out_biz_no'=>'Test'.time().rand(10000,99999),//商户端的唯一订单号,对于同一笔转账请求,商户需保证该订单号唯一。
//单笔无密转账到支付宝账户固定
//TRANS_ACCOUNT_NO_PWD产品取值范围[0.1,100000000]
//STD_RED_PACKET[0.01,100000000]
'trans_amount'=>0.1,//订单总金额,单位为元,精确到小数点后两位,
'product_code'=>'TRANS_ACCOUNT_NO_PWD',
'biz_scene'=>'DIRECT_TRANSFER',//B2C现金红包、单笔无密转账到支付宝/银行卡
'order_title'=>'测试提现',//转账业务的标题,用于在支付宝用户的账单里显示
'payee_info'=>[
'identity'=>'xxxxx',//参与方的唯一标识
'identity_type'=>'ALIPAY_LOGON_ID',//支付宝登录号,支持邮箱和手机号格式
'name'=>'xxxxx',//参与方真实姓名,如果非空,将校验收款支付宝账号姓名一致性。当identity_type=ALIPAY_LOGON_ID时,本字段必填。
],
'remark'=>'测试提现'
];
$request->setBizContent(json_encode($arrData,JSON_UNESCAPED_UNICODE));
$result=$aop->execute($request);
$responseNode=str_replace(".","_",$request->getApiMethodName())."_response";
$resultCode=$result->$responseNode->code;
if(!empty($resultCode)&&$resultCode==10000){
echo"成功";
}else{
echo"失败";
}
print_r($result);
路过的坑:
获取根证书的SN时遇到了坑
环境:PHP 5.5.9