最近开发涉及到了支付宝转账到支付宝账号功能,接下来由应用申请开始到代码模块来简单说下流程.
1.准备工作:支付宝控制台 应用申请-接口申请
第一步创建对应应用 第二步申请转账接口(需要商家账号) 第三步设置接口加密方式(加签方式公钥证书) 选择在线加密方式生成CSR 第四步上传对应的CSR获取证书,并且下载到本地
2.开发
第一步下载 官方SDK
(如果错误:Cannot redeclare Decrypt()错误表示SDK中的Encrypt()/Decrypt()函数和你项目中定义的函数重名了修改下就好)
(SDK中aop/request目录里面没用到的php可以自己清理)
第二步示例
public function alipay()
{
vendor('alipayAop.aop.AopCertClient');
vendor('alipayAop.aop.request.AlipayFundTransUniTransferRequest');
$aop = new \AopCertClient;
$appCertPath = "应用证书路径(要确保证书文件可读),例如:/home/admin/cert/appCertPublicKey.crt";
$alipayCertPath = "支付宝公钥证书路径(要确保证书文件可读),例如:/home/admin/cert/alipayCertPublicKey_RSA2.crt";
$rootCertPath = "支付宝根证书路径(要确保证书文件可读),例如:/home/admin/cert/alipayRootCert.crt";
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$aop->appId = "app_id";
$aop->rsaPrivateKey = '请填写开发者私钥去头去尾去回车,一行字符串' ;
$aop->format = "json";
$aop->charset= "GBK";
$aop->signType= "RSA2";
$aop->alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath);
$aop->isCheckAlipayPublicCert = true;
$aop->appCertSN = $aop->getCertSN($appCertPath);
$aop->alipayRootCertSN = $aop->getRootCertSN($rootCertPath);
$request = new \AlipayFundTransUniTransferRequest();
$bizcontent = [
'out_biz_no' => 'test1111111111',
'trans_amount' => '0.10',
'product_code' => "TRANS_ACCOUNT_NO_PWD",
'biz_scene' => 'DIRECT_TRANSFER',
'payee_info' => [
'identity' => 'xxxxxx',
'identity_type' => 'ALIPAY_LOGON_ID',
'name' => 'xxxx',
],
'remark' => "单笔转账到支付宝账户接口测试",
];
$request->setBizContent(json_encode($bizcontent));
$result = $aop->execute($request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
if (!empty($resultCode) && $resultCode == 10000) {
} else {
}
}
(如果出现SSL certificate problem: unable to get local issuer certificate错误可以参考这篇文章https://blog.csdn.net/sanbingyutuoniao123/article/details/71124655)
谢谢阅读~
|