title: 支付宝SDK meta:

  • name: description content: WeChat是一个基于Swoole 4.x全协程支持的SDK库
  • name: keywords content: swoole|swoole 拓展|swoole 框架|easyswoole|AliPay

协程支付网关

  1. composer require easyswoole/pay

支付宝

支付方法

支付宝支付目前支持 7 种支付方法,对应的支付 method 如下:

method 说明 参数 返回值
web 电脑支付 Request Response
wap 手机网站支付 Request Response
app APP 支付 Request Response
pos 刷卡支付 Request Response
scan 扫码支付 Request Response
transfer 账户转账 Request Response
mini 小程序支付 Request Response

电脑支付

::: tip 统一收单下单并支付页面接口 :::

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::NORMAL);
  3. $aliConfig->setAppId('2017082000295641');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. ## 对象风格
  8. $order = new \EasySwoole\Pay\AliPay\RequestBean\Web();
  9. $order->setSubject('测试');
  10. $order->setOutTradeNo(time().'123456');
  11. $order->setTotalAmount('0.01');
  12. // 本库只预置了常用的请求参数,没预置的参数使用:$order->addProperty('其他字段','其他字段值');
  13. ## 数组风格
  14. $order = new \EasySwoole\Pay\AliPay\RequestBean\App([
  15. 'subject'=>'测试',
  16. 'out_trade_no'=>'123456',
  17. 'total_amount'=>'0.01',
  18. '额外的字段键值'=>'额外字段值'
  19. ],true);
  20. $res = $pay->aliPay($aliConfig)->web($order);
  21. var_dump($res->toArray());
  22. $html = buildPayHtml(\EasySwoole\Pay\AliPay\GateWay::NORMAL,$res->toArray());
  23. file_put_contents('test.html',$html);

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,product_code 等参数。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。

参数查询:https://docs.open.alipay.com/api_1/alipay.trade.page.pay

生成支付的跳转html示例

  1. function buildPayHtml($endpoint, $payload)
  2. {
  3. $sHtml = "<form id='alipaysubmit' name='alipaysubmit' action='".$endpoint."' method='POST'>";
  4. foreach ($payload as $key => $val) {
  5. $val = str_replace("'", '&apos;', $val);
  6. $sHtml .= "<input type='hidden' name='".$key."' value='".$val."'/>";
  7. }
  8. $sHtml .= "<input type='submit' value='ok' style='display:none;'></form>";
  9. $sHtml .= "<script>document.forms['alipaysubmit'].submit();</script>";
  10. return $sHtml;
  11. }

手机网站支付接口2.0

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::NORMAL);
  3. $aliConfig->setAppId('2017082000295641');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. $order = new \EasySwoole\Pay\AliPay\RequestBean\Wap();
  8. $order->setSubject('测试');
  9. $order->setOutTradeNo(time().'123456');
  10. $order->setTotalAmount('0.01');
  11. $res = $pay->aliPay($aliConfig)->wap($order);
  12. var_dump($res->toArray());
  13. $html = buildPayHtml(\EasySwoole\Pay\AliPay\GateWay::NORMAL,$res->toArray());
  14. file_put_contents('test.html',$html);

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,product_code 等参数。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。

参数查询:https://docs.open.alipay.com/api_1/alipay.trade.wap.pay

APP支付接口2.0

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
  3. $aliConfig->setAppId('2016091800538339');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. $order = new \EasySwoole\Pay\AliPay\RequestBean\App();
  8. $order->setSubject('测试');
  9. $order->setOutTradeNo(time().'123456');
  10. $order->setTotalAmount('0.01');
  11. $aliPay = $pay->aliPay($aliConfig);
  12. var_dump($aliPay->app($order)->toArray());

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如, product_code 等参数。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。

参数查询:https://docs.open.alipay.com/api_1/alipay.trade.app.pay

刷卡支付

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
  3. $aliConfig->setAppId('2016091800538339');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. $order = new \EasySwoole\Pay\AliPay\RequestBean\Pos();
  8. $order->setSubject('测试');
  9. $order->setTotalAmount('0.01');
  10. $order->setOutTradeNo(time());
  11. $order->setAuthCode('289756915257123456');
  12. $aliPay = $pay->aliPay($aliConfig);
  13. $data = $aliPay->pos($order)->toArray();
  14. var_dump($data);

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,product_code 等参数。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。

参数查询:https://docs.open.alipay.com/api_1/alipay.trade.page.pay

扫码支付

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
  3. $aliConfig->setAppId('2016091800538339');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. $pay = new \EasySwoole\Pay\Pay();
  8. $order = new \EasySwoole\Pay\AliPay\RequestBean\Scan();
  9. $order->setSubject('测试');
  10. $order->setTotalAmount('0.01');
  11. $order->setOutTradeNo(time());
  12. $aliPay = $pay->aliPay($aliConfig);
  13. $data = $aliPay->scan($order)->toArray();
  14. $response = $aliPay->preQuest($data);
  15. var_dump($response);
  16. // qr_code 当前预下单请求生成的二维码码串,可以用二维码生成工具根据该码串值生成对应的二维码 https://qr.alipay.com/bavh4wjlxf12tper3a

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,product_code 等参数。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。

参考参数:https://docs.open.alipay.com/api_1/alipay.trade.precreate

单笔转账到支付宝账户接口

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
  3. $aliConfig->setAppId('2016091800538339');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. $order = new \EasySwoole\Pay\AliPay\RequestBean\Transfer();
  8. $order->setSubject('测试');
  9. $order->setTotalAmount('0.01');
  10. $order->setPayeeType('ALIPAY_LOGONID');
  11. $order->setPayeeAccount('hcihsn8174@sandbox.com');
  12. $aliPay = $pay->aliPay($aliConfig);
  13. $data = $aliPay->transfer($order)->toArray();
  14. $aliPay->preQuest($data);
  15. var_dump($data);

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,product_code 等参数。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。

参数查询:https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer

小程序支付

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
  3. $aliConfig->setAppId('2016091800538339');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. $order = new \EasySwoole\Pay\AliPay\RequestBean\MiniProgram();
  8. $order->setSubject('测试');
  9. $order->setOutTradeNo(time().'123456');
  10. $order->setTotalAmount('0.01');
  11. $order->setBuyerId('hcihsn8174@sandbox.com');
  12. $aliPay = $pay->aliPay($aliConfig);
  13. $data = $aliPay->miniProgram($order)->toArray();
  14. var_dump($data);

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,product_code 等参数。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。

小程序支付接入文档:https://docs.alipay.com/mini/introduce/pay

参数查询:

订单查询

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
  3. $aliConfig->setAppId('2016091800538339');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. $order = new \EasySwoole\Pay\AliPay\RequestBean\OrderFind();
  8. $order->setOutTradeNo(time().'123456');
  9. $aliPay = $pay->aliPay($aliConfig);
  10. var_dump($aliPay->orderFind($order)->toArray());

官方参数查询:https://docs.open.alipay.com/api_1/alipay.trade.fastpay.refund.query

退款查询

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
  3. $aliConfig->setAppId('2016091800538339');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. $order = new \EasySwoole\Pay\AliPay\RequestBean\RefundFind();
  8. $order->setOutTradeNo('20150320010101001');
  9. $order->setOutRequestNo(time().'2014112611001004680073956707');
  10. $aliPay = $pay->aliPay($aliConfig);
  11. $data = $aliPay->refundFind($order)->toArray();
  12. var_dump($aliPay->preQuest($data));

官方参数查询:https://docs.open.alipay.com/api_1/alipay.trade.refund

查询转账订单接口

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
  3. $aliConfig->setAppId('2016091800538339');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. $order = new \EasySwoole\Pay\AliPay\RequestBean\TransferFind();
  8. $order->setOutBizNo('3142321423432');
  9. // 二选一
  10. // $order->setOrderId('20160627110070001502260006780837');
  11. $aliPay = $pay->aliPay($aliConfig);
  12. $data = $aliPay->transferFind($order)->toArray();
  13. var_dump($aliPay->preQuest($data));

官方参数查询:https://docs.open.alipay.com/api_28/alipay.fund.trans.order.query

交易撤销接口

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
  3. $aliConfig->setAppId('2016091800538339');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. $order = new \EasySwoole\Pay\AliPay\RequestBean\Cancel();
  8. $order->setOutTradeNo('20150320010101001');
  9. $aliPay = $pay->aliPay($aliConfig);
  10. $data = $aliPay->cancel($order)->toArray();
  11. var_dump($aliPay->preQuest($data));

官方参数查询:https://docs.open.alipay.com/api_1/alipay.trade.cancel

交易关闭接口

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
  3. $aliConfig->setAppId('2016091800538339');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. $order = new \EasySwoole\Pay\AliPay\RequestBean\Close();
  8. $order->setOutTradeNo(time().'123456');
  9. $aliPay = $pay->aliPay($aliConfig);
  10. $data = $aliPay->close($order)->toArray();
  11. var_dump($aliPay->preQuest($data));

官方参数查询:https://docs.open.alipay.com/api_1/alipay.trade.close

查询对账单下载地址

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
  3. $aliConfig->setAppId('2016091800538339');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. $order = new \EasySwoole\Pay\AliPay\RequestBean\Download();
  8. $order->setBillType('trade');
  9. $order->setBillDate('2016-04-05');
  10. $aliPay = $pay->aliPay($aliConfig);
  11. $data = $aliPay->download($order)->toArray();
  12. var_dump($aliPay->preQuest($data));

官方参数查询:https://docs.open.alipay.com/api_15/alipay.data.dataservice.bill.downloadurl.query

验证服务器数据

  1. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  2. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
  3. $aliConfig->setAppId('2016091800538339');
  4. $aliConfig->setPublicKey('阿里公钥');
  5. $aliConfig->setPrivateKey('阿里私钥');
  6. $pay = new \EasySwoole\Pay\Pay();
  7. $param = [];//伪代码,post数据
  8. unset($param['sign_type']);//需要忽略sign_type组装
  9. $order = new \EasySwoole\Pay\AliPay\RequestBean\NotifyRequest($param,true);
  10. $aliPay = $pay->aliPay($aliConfig);
  11. $result = $aliPay->verify($order);
  12. var_dump($result);

服务器确认收到异步通知字符串获取

  1. \EasySwoole\Pay\AliPay::success();//成功响应
  2. \EasySwoole\Pay\AliPay::fail();//失败响应