经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
php实现单笔转账到支付宝功能
来源:jb51  时间:2018/10/12 9:23:31  对本文有异议

本文实例为大家分享了php实现单笔转账到支付宝的具体代码,供大家参考,具体内容如下

1.首先 去蚂蚁金服签约 单笔转账到支付宝

官方api文档 

2.需要的配置信息

1).应用appid

2).生成密钥

文档地址

根据文档步骤生成

上传这里的 应用公钥

3.下载官方sdk 然后集成到自己项目

服务端SDK

官方实例

  1. //实例化客户端
  2. AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
  3. //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.open.public.template.message.industry.modify
  4. AlipayOpenPublicTemplateMessageIndustryModifyRequest request = new AlipayOpenPublicTemplateMessageIndustryModifyRequest();
  5. //SDK已经封装掉了公共参数,这里只需要传入业务参数
  6. //此次只是参数展示,未进行字符串转义,实际情况下请转义
  7. request.setBizContent(" {" +
  8. " \"primary_industry_name\":\"IT科技/IT软件与服务\"," +
  9. " \"primary_industry_code\":\"10001/20102\"," +
  10. " \"secondary_industry_code\":\"10001/20102\"," +
  11. " \"secondary_industry_name\":\"IT科技/IT软件与服务\"" +
  12. " }");
  13. AlipayOpenPublicTemplateMessageIndustryModifyResponse response = alipayClient.execute(request);
  14. //调用成功,则处理业务逻辑
  15. if(response.isSuccess()){
  16. //.....
  17. }

效果如下

我的代码

  1. <?php
  2. /**
  3. * create by 适可而止
  4. * create time 2018/4/8
  5. */
  6. namespace Org\Util;
  7. class AlipayTransfer{
  8. private $appId = 'appid';
  9. private $rsaPrivateKey = '私钥';
  10. private $alipayrsaPublicKey = "支付宝公钥";
  11. private $payer_name = "xx科技";
  12. private $aop;
  13. public function __construct()
  14. {
  15. $g_alipay = C('ALIPAY_CONFIG');
  16. $this->appId = $g_alipay['APPID'];//appid
  17. $this->rsaPrivateKey = $g_alipay['rsaPrivateKey']; //私钥
  18. $this->alipayrsaPublicKey=$g_alipay['rsaPublicKey'];//支付宝公钥
  19. //引入单笔转账sdk
  20. Vendor('Alipayaop.AopSdk');
  21. }
  22. public function init_aop_config()
  23. {
  24. $this->aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
  25. $this->aop->appId = $this->appId;
  26. $this->aop->rsaPrivateKey = $this->rsaPrivateKey;
  27. $this->aop->alipayrsaPublicKey=$this->alipayrsaPublicKey;
  28. $this->aop->apiVersion = '1.0';
  29. $this->aop->signType = 'RSA2';
  30. $this->aop->postCharset='UTF-8';
  31. $this->aop->format='json';
  32. }
  33. /**
  34. * 单笔转账接口
  35. * @param $order_number 订单号
  36. * @param $pay_no 转账账号
  37. * @param $pay_name 转账用户名
  38. * @param $amount 转账金额
  39. * @param $memo 备注
  40. */
  41. public function transfer($order_number,$pay_no,$pay_name,$amount,$memo)
  42. {
  43. //存入转账日志
  44. $this->transferLog($order_number,$pay_no,$pay_name,$amount);
  45. $this->aop = new \AopClient ();
  46. //配置参数
  47. $this->init_aop_config();
  48. //导入请求
  49. $request = new \AlipayFundTransToaccountTransferRequest ();
  50. $request->setBizContent("{" .
  51. "\"out_biz_no\":\"".$order_number."\"," .//商户生成订单号
  52. "\"payee_type\":\"ALIPAY_LOGONID\"," .//收款方支付宝账号类型
  53. "\"payee_account\":\"".$pay_no."\"," .//收款方账号
  54. "\"amount\":\"".$amount."\"," .//总金额
  55. "\"payer_show_name\":\"".$this->payer_name."\"," .//付款方账户
  56. "\"payee_real_name\":\"".$pay_name."\"," .//收款方姓名
  57. "\"remark\":\"".$memo."\"" .//转账备注
  58. "}");
  59. $result = $this->aop->execute ( $request);
  60. $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
  61. $resultCode = $result->$responseNode->code;
  62. $resultSubMsg = $result->$responseNode->sub_msg;
  63. //修改转账日志
  64. $this->edit_transferLog($order_number,$resultCode,$resultSubMsg);
  65. if(!empty($resultCode)&&$resultCode == 10000){
  66. return true;
  67. } else {
  68. return false;
  69. }
  70. }
  71. /**
  72. * 存取日志
  73. */
  74. private function transferLog($order_number,$pay_no,$pay_name,$amount)
  75. {
  76. $data['order_number'] = $order_number;
  77. $data['pay_no'] = $pay_no;
  78. $data['pay_name'] = $pay_name;
  79. $data['amount'] = $amount;
  80. $data['create_time'] = time();
  81. M('AlipayTransferLog')->add($data);
  82. }
  83. /**
  84. * 修改日志
  85. */
  86. private function edit_transferLog($order_number,$result_code,$sub_msg)
  87. {
  88. $model = D("AlipayTransferLog");
  89. $where['order_number'] = $order_number;
  90. $result = $model->where($where)->order('create_time desc')->find();
  91. if ($result_code == 10000)
  92. {
  93. $result['status'] = 1;
  94. $sub_msg = 'success';
  95. }
  96. else
  97. {
  98. $result['status'] = 2;
  99. }
  100. $result['memo'] = $sub_msg;
  101. $result['update_time'] = time();
  102. M('AlipayTransferLog')->save($result);
  103. }
  104. /**
  105. * 查单接口
  106. */
  107. public function query($order_number)
  108. {
  109. $this->aop = new \AopClient ();
  110. //配置参数
  111. $this->init_aop_config();
  112. $request = new \AlipayFundTransOrderQueryRequest ();
  113. $request->setBizContent("{" .
  114. "\"out_biz_no\":\"".$order_number."\"" .
  115. " }");
  116. $result = $this->aop->execute ( $request);
  117. $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
  118. $resultCode = $result->$responseNode->code;
  119. if(!empty($resultCode)&&$resultCode == 10000){
  120. $res_arr['code'] = '00';
  121. $res_arr['data'] = $result;
  122. } else {
  123. $res_arr['code'] = '-1';
  124. }
  125. return $res_arr;
  126. }
  127. }
  128. ?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号