由于项目需要,所以需要开发支付宝支付与微信支付,支付部分采用了

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里面的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 "失败";
}
}

 

最新文章

  1. C#多线程之基础篇3
  2. Linux工具快速教程
  3. Django基础之wsgi
  4. 深入理解Java的接口和抽象类(转)
  5. Meta标签介绍
  6. SQL Server高级查询
  7. Leetcode 134 Gas Station
  8. JavaScript——this关键字
  9. Android Studio使用教程(二)
  10. hdu 2084 数塔(动态规划)
  11. 15、Jdbc的优化(BeanUtils组件)
  12. 如何在XML 加入特殊字符内容 如< >
  13. windows下设置/删除Tomcat的开机自启动
  14. 【Android进阶】Activity的四种加载模式
  15. poi 合并单元格、设置边框
  16. Lucene 5.X 版本索引文件格式
  17. Spring Boot面试题
  18. vue 实践记录
  19. vue-cli 项目实现路由懒加载
  20. 【Vue.js】vue引入组件报错:该组件未注册?

热门文章

  1. mac和windows自动清理内存工具
  2. 两步让你的mobile traffic通过fiddler代理传送
  3. MySQL案例01:Last_SQL_Errno: 1755 Cannot execute the current event group in the parallel mode
  4. 使用UIWebView中html标签显示富文本
  5. 根据ip抓 包
  6. Python学习---匿名函数和闭包的学习
  7. HTML和CSS实现常见的布局
  8. 2018.09.23模拟总结(T2)
  9. Libevent源码学习笔记一:event2/event.h
  10. 机器学习之感知器算法原理和Python实现