由于项目需要,所以需要开发支付宝支付与微信支付,支付部分采用了
yansongda/pay https://packagist.org/packages/yansongda/pay https://yansongda.gitbooks.io/pay/(文档说明地址)第三方扩展包 , 简单配置一下就可以使用,没有遇到什么问题
但是由于业务需要, 需要用到提现业务,也就是支付宝支付的
alipay.fund.trans.toaccount.transfer(单笔转账到支付宝账户接口)找了很久也没有找到很简单的集成支付宝单笔转账接口的扩展包,所以没办法只能自己来用支付宝给的SDK进行开发
首先下载了支付宝服务端SDK PHP版 下载地址https://docs.open.alipay.com/54/103419/
然后解压添加进项目目录 app/Libs/Alipay Libs为自己建的目录,用来装第三方类库
之后打开composer.json文件 在autoload里面的html' target='_blank'>classmap里面添加入新添加的SDK
autoload : { classmap : [ database/seeds , database/factories , app/Libs/Alipay-php-sdk psr-4 : { App// : app/ 。。。。。。
之后再执行composer dump-autoload 这样第三方的SDK就引入成功了
然后在控制器或者自己定义的业务层中就可以直接use这个SDK了 在new 类的时候会在前面出现 / 属于正常
然后将给出的PHP示例粘贴进自己的业务代码中 点击查看官方请求示例https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer#s4
注意事项:
1、粘贴到自己的业务逻辑中之后 所有new的类必须删除自己手打引入 比如: AopClient() 、 AlipayFundTransToaccountTransferRequest() 否则会爆出class not found 等错误
2、按照说明配置所有参数之后,请求会爆出 “ 文件编码:[UTF-8] 与表单提交编码:[GBK]两者不一致!”错误,只要将复制的代码中 $aop- postCharset 值的GBK修改成为UTF-8即可
3、支付宝SDK与Laravel都自定义了encrypt与decrypt函数,所以会产生冲突,只要将支付宝SDK中的 /aop/AopClient.php /aop/AopEncrypt.php /lotusphp_runtime/Cookie/Cokkie.php 下的这两个函数全部重新命名即可,注意所有的 包括引用函数 直接在编辑器中查找替换也可以。
然后根据自己的业务来进行修改就可以了
如果爆出 “$sign”错误,请检查自己的公钥、私钥、AppID等是否正确,如果使用沙箱测试,请将网关修改为
$aop- gatewayUrl = https://openapi.alipaydev.com/gateway.do
最后贴上自己的代码,欢迎指教
/* *支付宝提现接口 */ public function toTransfer($orderNo, $account, $amount, $payName, $payeeRealName, $remark) { $aop = new /AopClient(); $aop- gatewayUrl = https://openapi.alipaydev.com/gateway.do $aop- appId = config( Alipay.AppId $aop- rsaPrivateKey = config( Alipay.PriKey $aop- alipayrsaPublicKey = config( Alipay.PubKey $aop- apiVersion = 1.0 $aop- signType = RSA2 $aop- postCharset = UTF-8 $aop- format = json $request = new /AlipayFundTransToaccountTransferRequest (); $request- setBizContent( { . / out_biz_no/ :/ $orderNo/ , . / payee_type/ :/ ALIPAY_LOGONID/ , . / payee_account/ :/ $account/ , . / amount/ :/ $amount/ , . / payer_show_name/ :/ $payName/ , . / payee_real_name/ :/ $payeeRealName/ , . / remark/ :/ $remark/ . } $result = $aop- execute($request); $responseNode = str_replace( . , _ , $request- getApiMethodName()) . _response $resultCode = $result- $responseNode- code; if (!empty($resultCode) $resultCode == 10000) { echo 成功 } else { echo 失败 }
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP !
相关推荐:
Laravel 学习的基础知识
php bug 调试助手 debug_print_backtrace()的介绍
以上就是Laravel 开发支付宝支付与提现转账的方法的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答