赞
踩
最近开发涉及到了支付宝转账到支付宝账号功能,接下来由应用申请开始到代码模块来简单说下流程.
第一步创建对应应用
第二步申请转账接口(需要商家账号)
第三步设置接口加密方式(加签方式公钥证书)
选择在线加密方式生成CSR
第四步上传对应的CSR获取证书,并且下载到本地
第一步下载 官方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"; //调用getPublicKey从支付宝公钥证书中提取公钥 $aop->alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath); //是否校验自动下载的支付宝公钥证书,如果开启校验要保证支付宝根证书在有效期内 $aop->isCheckAlipayPublicCert = true; //调用getCertSN获取证书序列号 $aop->appCertSN = $aop->getCertSN($appCertPath); //调用getRootCertSN获取支付宝根证书序列号 $aop->alipayRootCertSN = $aop->getRootCertSN($rootCertPath); //实例化具体API对应的request类,类名称和接口名称对应 $request = new \AlipayFundTransUniTransferRequest(); $bizcontent = [ 'out_biz_no' => 'test1111111111', // 订单号 'trans_amount' => '0.10', // 提现实际金额 'product_code' => "TRANS_ACCOUNT_NO_PWD",//转账为:TRANS_ACCOUNT_NO_PWD 'biz_scene' => 'DIRECT_TRANSFER',//单笔无密转账到支付宝:DIRECT_TRANSFER 'payee_info' => [ 'identity' => 'xxxxxx', // 收款人帐户 'identity_type' => 'ALIPAY_LOGON_ID',//支付宝登录id:ALIPAY_LOGON_ID 'name' => 'xxxx', // 收款人姓名 ], 'remark' => "单笔转账到支付宝账户接口测试", // 转帐备注 ]; $request->setBizContent(json_encode($bizcontent)); //这里和普通的接口调用不同,使用的是sdkExecute $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)
谢谢阅读~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。