协程支付网关(支付宝支付)

组件安装方法和说明

注意:请务必检查你的 php 环境有没有安装 php-bcmath 扩展,没有安装 php-bcmath 扩展时安装的 pay 组件的版本是 1.2.17 之前的版本(不是最新)。想要使用最新稳定版 pay 组件的功能,请先安装 php-bcmath 扩展,php 安装此扩展的方法请自行查询。

  1. composer require easyswoole/pay

支付宝

支付方法

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

method说明参数返回值
web电脑支付RequestResponse
wap手机网站支付RequestResponse
appAPP 支付RequestResponse
pos刷卡支付RequestResponse
scan扫码支付RequestResponse
transfer账户转账RequestResponse
mini小程序支付RequestResponse
barCode条码当面支付RequestResponse

注意,easyswoole/pay 支付宝支付组件的默认签名为 RSA2 普通公钥方式签名,也支持 RSA2 公钥证书的签名方式。放置应用公私钥证书、支付宝证书路径、支付宝根证书路径的时候切记核对。

电脑支付

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

  1. /**
  2. * 普通公钥方式生成密钥验签(签名和验签方式)
  3. */
  4. // 设置支付配置
  5. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  6. ### 配置支付公共请求参数
  7. // (必须)设置 支付宝分配给开发者的应用ID
  8. $aliConfig->setAppId('2017082000295641');
  9. // (必须)设置 请求网关(默认为 沙箱模式)
  10. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::NORMAL);
  11. // 设置 参数格式(默认为 'JSON',可选参数),不建议修改
  12. // $aliConfig->setFormat('JSON');
  13. // 设置 return_url(默认为 null,可选参数)
  14. // $aliConfig->setReturnUrl(null);
  15. // 设置 请求使用的编码格式,如utf-8、gbk、gb2312等(默认为 'utf-8')
  16. // $aliConfig->setCharset('utf-8');
  17. // 设置 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2(默认为 'RSA2')
  18. $aliConfig->setSignType('RSA2');
  19. // 设置 调用的接口版本(默认为 '1.0')
  20. // $aliConfig->setApiVersion('1.0');
  21. // 设置 支付宝服务器主动通知商户服务器里指定的页面http/https路径,即支付回调地址(默认为 null,可选参数)
  22. // $aliConfig->setNotifyUrl(null);
  23. // 设置 应用授权参数(默认为 null,可选参数),详细请看(https://opendocs.alipay.com/open/common/105193)
  24. // $aliConfig->setAppAuthToken(null);
  25. // 设置 阿里应用公钥(支持 .pem 结尾的格式,默认为 PKCS1 格式),用于支付回调时验证签名
  26. $aliConfig->setPublicKey('阿里应用公钥字符串'); // 示例应用公钥字符串
  27. // 设置 阿里应用私钥(支持 .pem 结尾的格式,默认为 PKCS1 格式),用于生成签名
  28. $aliConfig->setPrivateKey('阿里应用私钥字符串'); // 示例应用私钥字符串
  29. /**
  30. * 公钥证书方式生成密钥验签(签名和验签方式)
  31. */
  32. /*
  33. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  34. ### 配置支付公共请求参数
  35. // (必须)设置 支付宝分配给开发者的应用ID
  36. $aliConfig->setAppId('2017082000295641');
  37. // (必须)设置 请求网关(默认为 沙箱模式)
  38. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::NORMAL);
  39. // 设置 参数格式(默认为 'JSON',可选参数),不建议修改
  40. // $aliConfig->setFormat('JSON');
  41. // 设置 return_url(默认为 null,可选参数)
  42. // $aliConfig->setReturnUrl(null);
  43. // 设置 请求使用的编码格式,如utf-8、gbk、gb2312等(默认为 'utf-8')
  44. // $aliConfig->setCharset('utf-8');
  45. // 设置 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2(默认为 'RSA2')
  46. $aliConfig->setSignType('RSA2');
  47. // 设置 调用的接口版本(默认为 '1.0')
  48. // $aliConfig->setApiVersion('1.0');
  49. // 设置 支付宝服务器主动通知商户服务器里指定的页面http/https路径,即支付回调地址(默认为 null,可选参数)
  50. // $aliConfig->setNotifyUrl(null);
  51. // 设置 应用授权参数(默认为 null,可选参数),详细请看(https://opendocs.alipay.com/open/common/105193)
  52. // $aliConfig->setAppAuthToken(null);
  53. // (必须)设置 使用公钥证书方式生密钥延签(签名和验签方式)
  54. $aliConfig->setCertMode(true);
  55. // (必须)设置 支付宝公钥文件路径
  56. $aliConfig->setCertPath(__DIR__ . '/cert/alipayCertPublicKey_RSA2.crt'); // 示例支付宝公钥文件路径
  57. // (必须)设置 支付宝根证书文件路径
  58. $aliConfig->setRootCertPath(__DIR__ . '/cert/alipayRootCert.crt'); // 示例支付宝公钥根证书文件路径
  59. // (必须)设置 阿里应用公钥证书文件路径
  60. $aliConfig->setMerchantCertPath(__DIR__ . '/cert/appCertPublicKey_2016091800538780.crt');
  61. // (必须)设置 阿里应用私钥(支持 .pem 结尾的格式,默认为 PKCS1 格式),用于生成签名
  62. $aliConfig->setPrivateKey('阿里应用私钥字符串'); // 示例应用私钥字符串
  63. */
  64. // 以上【普通公钥方式】 和 【公钥证书方式】 生成密钥验签(签名和验签方式) 这 2 种方式,用户可自行选择一种】
  65. $pay = new \EasySwoole\Pay\Pay();
  66. ## (面向对象风格)设置请求参数 biz_content,组件自动帮你组装成对应的格式
  67. $order = new \EasySwoole\Pay\AliPay\RequestBean\Web();
  68. // (必须)设置 商户订单号(商户订单号。64 个字符以内的大小,仅支持字母、数字、下划线。需保证该参数在商户端不重复。)
  69. $order->setOutTradeNo(time() . '123456'); // 示例订单号(仅供参考)
  70. // (必须)设置 订单总金额
  71. $order->setTotalAmount('0.01'); // 示例订单总金额,单位:元(仅供参考)
  72. // (必须)设置 商品标题/交易标题/订单标题/订单关键字等。注意:不可使用特殊字符,如 /,=,& 等。
  73. $order->setSubject('测试'); // 示例商品标题(仅供参考)
  74. // (可选)设置 订单描述,默认为 null
  75. // $order->setBody(null);
  76. // (可选)设置 在订单中设置支付宝服务器主动通知商户服务器里指定的页面http/https路径,即支付回调地址(默认为 null,可选参数)
  77. // $order->setNotifyUrl(null); // 等价于在配置中设置 支付回调地址,两者中只要设置一次即可
  78. // (可选)设置 return_url(默认为 null,可选参数)
  79. // $order->setReturnUrl(null); // 等价于在配置中设置 return_url,两者中只要设置一次即可
  80. // 本库只预置了常用的请求参数,没预置的参数请求使用:$order->addProperty('其他字段','其他字段值');
  81. // 支付其他可选参数(详细请看支付宝接口的可选参数,支付宝接口对应地址请看下文)
  82. ## (数组风格)设置请求参数 biz_content,组件自动帮你组装成对应的格式
  83. /*
  84. $order = new \EasySwoole\Pay\AliPay\RequestBean\Web([
  85. 'out_trade_no' => time() . '123456', // 示例订单号(仅供参考)
  86. 'total_amount' => '0.01', // 示例订单总金额,单位:元(仅供参考)
  87. 'subject' => '测试', // 示例商品标题(仅供参考)
  88. '额外的字段键值' => '额外字段值', // 示例支付其他可选参数(详细请看支付宝接口的可选参数,支付宝接口对应地址请看下文)
  89. ], true);
  90. */
  91. // 以上 2 种风格设置请求参数,用户可根据个人需要,选其一即可
  92. // 获取构造请求参数对象
  93. $res = $pay->aliPay($aliConfig)->web($order);
  94. // 将所有请求参数转为数组
  95. var_dump($res->toArray());
  96. // 构造请求表单(buildPayHtml 该方法的实现请看下文)
  97. $html = buildPayHtml(\EasySwoole\Pay\AliPay\GateWay::NORMAL, $res->toArray());
  98. file_put_contents('test.html', $html);

订单配置参数

所有订单配置中,对于客观非必选参数,用户可以自行选择是否进行配置,也可以不进行配置,扩展包已经为您自动处理了,比如,product_code 等参数。

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

参数查询:https://opendocs.alipay.com/apis/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. /**
  2. * 普通公钥方式生成密钥验签(签名和验签方式)
  3. */
  4. // 设置支付配置
  5. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  6. ### 配置支付公共请求参数
  7. // (必须)设置 支付宝分配给开发者的应用ID
  8. $aliConfig->setAppId('2017082000295641');
  9. // (必须)设置 请求网关(默认为 沙箱模式)
  10. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::NORMAL);
  11. // 设置 参数格式(默认为 'JSON',可选参数),不建议修改
  12. // $aliConfig->setFormat('JSON');
  13. // 设置 return_url(默认为 null,可选参数)
  14. // $aliConfig->setReturnUrl(null);
  15. // 设置 请求使用的编码格式,如utf-8、gbk、gb2312等(默认为 'utf-8')
  16. // $aliConfig->setCharset('utf-8');
  17. // 设置 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2(默认为 'RSA2')
  18. $aliConfig->setSignType('RSA2');
  19. // 设置 调用的接口版本(默认为 '1.0')
  20. // $aliConfig->setApiVersion('1.0');
  21. // 设置 支付宝服务器主动通知商户服务器里指定的页面http/https路径,即支付回调地址(默认为 null,可选参数)
  22. // $aliConfig->setNotifyUrl(null);
  23. // 设置 应用授权参数(默认为 null,可选参数),详细请看(https://opendocs.alipay.com/open/common/105193)
  24. // $aliConfig->setAppAuthToken(null);
  25. // 设置 阿里应用公钥(支持 .pem 结尾的格式,默认为 PKCS1 格式),用于支付回调时验证签名
  26. $aliConfig->setPublicKey('阿里应用公钥字符串'); // 示例应用公钥字符串
  27. // 设置 阿里应用私钥(支持 .pem 结尾的格式,默认为 PKCS1 格式),用于生成签名
  28. $aliConfig->setPrivateKey('阿里应用私钥字符串'); // 示例应用私钥
  29. /**
  30. * 公钥证书方式生成密钥验签(签名和验签方式)
  31. */
  32. /*
  33. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  34. ### 配置支付公共请求参数
  35. // (必须)设置 支付宝分配给开发者的应用ID
  36. $aliConfig->setAppId('2017082000295641');
  37. // (必须)设置 请求网关(默认为 沙箱模式)
  38. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::NORMAL);
  39. // 设置 参数格式(默认为 'JSON',可选参数),不建议修改
  40. // $aliConfig->setFormat('JSON');
  41. // 设置 return_url(默认为 null,可选参数)
  42. // $aliConfig->setReturnUrl(null);
  43. // 设置 请求使用的编码格式,如utf-8、gbk、gb2312等(默认为 'utf-8')
  44. // $aliConfig->setCharset('utf-8');
  45. // 设置 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2(默认为 'RSA2')
  46. $aliConfig->setSignType('RSA2');
  47. // 设置 调用的接口版本(默认为 '1.0')
  48. // $aliConfig->setApiVersion('1.0');
  49. // 设置 支付宝服务器主动通知商户服务器里指定的页面http/https路径,即支付回调地址(默认为 null,可选参数)
  50. // $aliConfig->setNotifyUrl(null);
  51. // 设置 应用授权参数(默认为 null,可选参数),详细请看(https://opendocs.alipay.com/open/common/105193)
  52. // $aliConfig->setAppAuthToken(null);
  53. // (必须)设置 使用公钥证书方式生密钥延签(签名和验签方式)
  54. $aliConfig->setCertMode(true);
  55. // (必须)设置 支付宝公钥文件路径
  56. $aliConfig->setCertPath(__DIR__ . '/cert/alipayCertPublicKey_RSA2.crt'); // 示例支付宝公钥文件路径
  57. // (必须)设置 支付宝根证书文件路径
  58. $aliConfig->setRootCertPath(__DIR__ . '/cert/alipayRootCert.crt'); // 示例支付宝公钥根证书文件路径
  59. // (必须)设置 阿里应用公钥证书文件路径
  60. $aliConfig->setMerchantCertPath(__DIR__ . '/cert/appCertPublicKey_2016091800538780.crt');
  61. // (必须)设置 阿里应用私钥(支持 .pem 结尾的格式,默认为 PKCS1 格式),用于生成签名
  62. $aliConfig->setPrivateKey('阿里应用私钥字符串');
  63. */
  64. // 以上【普通公钥方式】 和 【公钥证书方式】 生成密钥验签(签名和验签方式) 这 2 种方式,用户可自行选择一种】
  65. $pay = new \EasySwoole\Pay\Pay();
  66. ## (面向对象风格)设置请求参数 biz_content,组件自动帮你组装成对应的格式
  67. $order = new \EasySwoole\Pay\AliPay\RequestBean\Wap();
  68. // (必须)设置 商品标题/交易标题/订单标题/订单关键字等。注意:不可使用特殊字符,如 /,=,& 等。
  69. $order->setSubject('测试'); // 示例商品标题(仅供参考)
  70. // (必须)设置 商户订单号(商户订单号。64 个字符以内的大小,仅支持字母、数字、下划线。需保证该参数在商户端不重复。)
  71. $order->setOutTradeNo(time() . '123456'); // 示例订单号(仅供参考)
  72. // (必须)设置 订单总金额
  73. $order->setTotalAmount('0.01'); // 示例订单总金额,单位:元(仅供参考)
  74. // (必须)设置 用户付款中途退出返回商户网站的地址
  75. $order->addProperty('quit_url', 'http://www.easyswoole.com'); // 示例中途退出返回商户网站的地址(仅供参考)
  76. // (可选)设置 订单描述,默认为 null
  77. // $order->setBody(null);
  78. // (可选)设置 在订单中设置支付宝服务器主动通知商户服务器里指定的页面http/https路径,即支付回调地址(默认为 null,可选参数)
  79. // $order->setNotifyUrl(null); // 等价于在配置中设置 支付回调地址,两者中只要设置一次即可
  80. // (可选)设置 return_url(默认为 null,可选参数)
  81. // $order->setReturnUrl(null); // 等价于在配置中设置 return_url,两者中只要设置一次即可
  82. // 本库只预置了常用的请求参数,没预置的参数请求使用:$order->addProperty('其他字段','其他字段值');
  83. // 支付其他可选参数(详细请看支付宝接口的可选参数,支付宝接口对应地址请看下文)
  84. ## (数组风格)设置请求参数 biz_content,组件自动帮你组装成对应的格式
  85. /*
  86. $order = new \EasySwoole\Pay\AliPay\RequestBean\Wap([
  87. 'out_trade_no' => time() . '123456', // 示例订单号(仅供参考)
  88. 'total_amount' => '0.01', // 示例订单总金额,单位:元(仅供参考)
  89. 'subject' => '测试', // 示例商品标题(仅供参考)
  90. 'quit_url' => 'http://www.easyswoole.com', // 示例中途退出返回商户网站的地址(仅供参考)
  91. '额外的字段键值' => '额外字段值', // 示例支付其他可选参数(详细请看支付宝接口的可选参数,支付宝接口对应地址请看下文)
  92. ], true);
  93. */
  94. // 以上 2 种风格设置请求参数,用户可根据个人需要,选其一即可
  95. // 获取构造请求参数对象
  96. $res = $pay->aliPay($aliConfig)->wap($order);
  97. // 将所有请求参数转为数组
  98. var_dump($res->toArray());
  99. // 构造请求表单(buildPayHtml 该方法的实现请看上文)
  100. $html = buildPayHtml(\EasySwoole\Pay\AliPay\GateWay::NORMAL, $res->toArray());
  101. file_put_contents('test.html', $html);

订单配置参数

所有订单配置中,对于客观非必选参数,用户可以自行选择是否进行配置,也可以不进行配置,扩展包已经为您自动处理了,比如,product_code 等参数。

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

参数查询:https://opendocs.alipay.com/apis/api_1/alipay.trade.wap.pay

APP支付接口 2.0

  1. /**
  2. * 普通公钥方式生成密钥验签(签名和验签方式)
  3. */
  4. // 设置支付配置
  5. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  6. ### 配置支付公共请求参数
  7. // (必须)设置 支付宝分配给开发者的应用ID
  8. $aliConfig->setAppId('2017082000295641');
  9. // (必须)设置 请求网关(默认为 沙箱模式)
  10. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::NORMAL);
  11. // 设置 参数格式(默认为 'JSON',可选参数),不建议修改
  12. // $aliConfig->setFormat('JSON');
  13. // 设置 return_url(默认为 null,可选参数)
  14. // $aliConfig->setReturnUrl(null);
  15. // 设置 请求使用的编码格式,如utf-8、gbk、gb2312等(默认为 'utf-8')
  16. // $aliConfig->setCharset('utf-8');
  17. // 设置 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2(默认为 'RSA2')
  18. $aliConfig->setSignType('RSA2');
  19. // 设置 调用的接口版本(默认为 '1.0')
  20. // $aliConfig->setApiVersion('1.0');
  21. // 设置 支付宝服务器主动通知商户服务器里指定的页面http/https路径,即支付回调地址(默认为 null,可选参数)
  22. // $aliConfig->setNotifyUrl(null);
  23. // 设置 应用授权参数(默认为 null,可选参数),详细请看(https://opendocs.alipay.com/open/common/105193)
  24. // $aliConfig->setAppAuthToken(null);
  25. // 设置 阿里应用公钥(支持 .pem 结尾的格式,默认为 PKCS1 格式),用于支付回调时验证签名
  26. $aliConfig->setPublicKey('阿里应用公钥字符串'); // 示例应用公钥字符串
  27. // 设置 阿里应用私钥(支持 .pem 结尾的格式,默认为 PKCS1 格式),用于生成签名
  28. $aliConfig->setPrivateKey('阿里应用私钥字符串'); // 示例应用私钥
  29. /**
  30. * 公钥证书方式生成密钥验签(签名和验签方式)
  31. */
  32. /*
  33. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  34. ### 配置支付公共请求参数
  35. // (必须)设置 支付宝分配给开发者的应用ID
  36. $aliConfig->setAppId('2017082000295641');
  37. // (必须)设置 请求网关(默认为 沙箱模式)
  38. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::NORMAL);
  39. // 设置 参数格式(默认为 'JSON',可选参数),不建议修改
  40. // $aliConfig->setFormat('JSON');
  41. // 设置 return_url(默认为 null,可选参数)
  42. // $aliConfig->setReturnUrl(null);
  43. // 设置 请求使用的编码格式,如utf-8、gbk、gb2312等(默认为 'utf-8')
  44. // $aliConfig->setCharset('utf-8');
  45. // 设置 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2(默认为 'RSA2')
  46. $aliConfig->setSignType('RSA2');
  47. // 设置 调用的接口版本(默认为 '1.0')
  48. // $aliConfig->setApiVersion('1.0');
  49. // 设置 支付宝服务器主动通知商户服务器里指定的页面http/https路径,即支付回调地址(默认为 null,可选参数)
  50. // $aliConfig->setNotifyUrl(null);
  51. // 设置 应用授权参数(默认为 null,可选参数),详细请看(https://opendocs.alipay.com/open/common/105193)
  52. // $aliConfig->setAppAuthToken(null);
  53. // (必须)设置 使用公钥证书方式生密钥延签(签名和验签方式)
  54. $aliConfig->setCertMode(true);
  55. // (必须)设置 支付宝公钥文件路径
  56. $aliConfig->setCertPath(__DIR__ . '/cert/alipayCertPublicKey_RSA2.crt'); // 示例支付宝公钥文件路径
  57. // (必须)设置 支付宝根证书文件路径
  58. $aliConfig->setRootCertPath(__DIR__ . '/cert/alipayRootCert.crt'); // 示例支付宝公钥根证书文件路径
  59. // (必须)设置 阿里应用公钥证书文件路径
  60. $aliConfig->setMerchantCertPath(__DIR__ . '/cert/appCertPublicKey_2016091800538780.crt');
  61. // (必须)设置 阿里应用私钥(支持 .pem 结尾的格式,默认为 PKCS1 格式),用于生成签名
  62. $aliConfig->setPrivateKey('阿里应用私钥字符串');
  63. */
  64. // 以上【普通公钥方式】 和 【公钥证书方式】 生成密钥验签(签名和验签方式) 这 2 种方式,用户可自行选择一种】
  65. $pay = new \EasySwoole\Pay\Pay();
  66. ## (面向对象风格)设置请求参数 biz_content,组件自动帮你组装成对应的格式
  67. $order = new \EasySwoole\Pay\AliPay\RequestBean\App();
  68. // (必须)设置 订单总金额
  69. $order->setTotalAmount('0.01'); // 示例订单总金额,单位:元(仅供参考)
  70. // (必须)设置 商品标题/交易标题/订单标题/订单关键字等。注意:不可使用特殊字符,如 /,=,& 等。
  71. $order->setSubject('测试'); // 示例商品标题(仅供参考)
  72. // (必须)设置 商户订单号(商户订单号。64 个字符以内的大小,仅支持字母、数字、下划线。需保证该参数在商户端不重复。)
  73. $order->setOutTradeNo(time() . '123456'); // 示例订单号(仅供参考)
  74. // (可选)设置 销售产品码,商家和支付宝签约的产品码,默认为 QUICK_MSECURITY_PAY(App支付)。
  75. // $order->addProperty('product_code', 'QUICK_MSECURITY_PAY'); // 示例销售产品码(仅供参考)
  76. // (可选)设置 订单描述,默认为 null
  77. // $order->setBody(null);
  78. // (可选)设置 在订单中设置支付宝服务器主动通知商户服务器里指定的页面http/https路径,即支付回调地址(默认为 null,可选参数)
  79. // $order->setNotifyUrl(null); // 等价于在配置中设置 支付回调地址,两者中只要设置一次即可
  80. // (可选)设置 return_url(默认为 null,可选参数)
  81. // $order->setReturnUrl(null); // 等价于在配置中设置 return_url,两者中只要设置一次即可
  82. // 本库只预置了常用的请求参数,没预置的参数请求使用:$order->addProperty('其他字段','其他字段值');
  83. // 支付其他可选参数(详细请看支付宝接口的可选参数,支付宝接口对应地址请看下文)
  84. ## (数组风格)设置请求参数 biz_content,组件自动帮你组装成对应的格式
  85. /*
  86. $order = new \EasySwoole\Pay\AliPay\RequestBean\Wap([
  87. 'out_trade_no' => time() . '123456', // 示例订单号(仅供参考)
  88. 'total_amount' => '0.01', // 示例订单总金额,单位:元(仅供参考)
  89. 'subject' => '测试', // 示例商品标题(仅供参考)
  90. '额外的字段键值' => '额外字段值', // 示例支付其他可选参数(详细请看支付宝接口的可选参数,支付宝接口对应地址请看下文)
  91. ], true);
  92. */
  93. // 以上 2 种风格设置请求参数,用户可根据个人需要,选其一即可
  94. // 获取构造请求参数对象
  95. $res = $pay->aliPay($aliConfig)->app($order);
  96. // 将所有请求参数转为数组
  97. var_dump($res->toArray());

订单配置参数

所有订单配置中,对于客观非必选参数,用户可以自行选择是否进行配置,也可以不进行配置,扩展包已经为您自动处理了,比如,product_code 等参数。

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

参数查询:https://opendocs.alipay.com/apis/api_1/alipay.trade.app.pay

刷卡支付

  1. /**
  2. * 普通公钥方式生成密钥验签(签名和验签方式)
  3. */
  4. // 设置支付配置
  5. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  6. ### 配置支付公共请求参数
  7. // (必须)设置 支付宝分配给开发者的应用ID
  8. $aliConfig->setAppId('2017082000295641');
  9. // (必须)设置 请求网关(默认为 沙箱模式)
  10. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::NORMAL);
  11. // 设置 参数格式(默认为 'JSON',可选参数),不建议修改
  12. // $aliConfig->setFormat('JSON');
  13. // 设置 请求使用的编码格式,如utf-8、gbk、gb2312等(默认为 'utf-8')
  14. // $aliConfig->setCharset('utf-8');
  15. // 设置 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2(默认为 'RSA2')
  16. $aliConfig->setSignType('RSA2');
  17. // 设置 调用的接口版本(默认为 '1.0')
  18. // $aliConfig->setApiVersion('1.0');
  19. // 设置 支付宝服务器主动通知商户服务器里指定的页面http/https路径,即支付回调地址(默认为 null,可选参数)
  20. // $aliConfig->setNotifyUrl(null);
  21. // 设置 应用授权参数(默认为 null,可选参数),详细请看(https://opendocs.alipay.com/open/common/105193)
  22. // $aliConfig->setAppAuthToken(null);
  23. // 设置 阿里应用公钥(支持 .pem 结尾的格式,默认为 PKCS1 格式),用于支付回调时验证签名
  24. $aliConfig->setPublicKey('阿里应用公钥字符串'); // 示例应用公钥字符串
  25. // 设置 阿里应用私钥(支持 .pem 结尾的格式,默认为 PKCS1 格式),用于生成签名
  26. $aliConfig->setPrivateKey('阿里应用私钥字符串'); // 示例应用私钥
  27. /**
  28. * 公钥证书方式生成密钥验签(签名和验签方式)
  29. */
  30. /*
  31. $aliConfig = new \EasySwoole\Pay\AliPay\Config();
  32. ### 配置支付公共请求参数
  33. // (必须)设置 支付宝分配给开发者的应用ID
  34. $aliConfig->setAppId('2017082000295641');
  35. // (必须)设置 请求网关(默认为 沙箱模式)
  36. $aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::NORMAL);
  37. // 设置 参数格式(默认为 'JSON',可选参数),不建议修改
  38. // $aliConfig->setFormat('JSON');
  39. // 设置 请求使用的编码格式,如utf-8、gbk、gb2312等(默认为 'utf-8')
  40. // $aliConfig->setCharset('utf-8');
  41. // 设置 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2(默认为 'RSA2')
  42. $aliConfig->setSignType('RSA2');
  43. // 设置 调用的接口版本(默认为 '1.0')
  44. // $aliConfig->setApiVersion('1.0');
  45. // 设置 支付宝服务器主动通知商户服务器里指定的页面http/https路径,即支付回调地址(默认为 null,可选参数)
  46. // $aliConfig->setNotifyUrl(null);
  47. // 设置 应用授权参数(默认为 null,可选参数),详细请看(https://opendocs.alipay.com/open/common/105193)
  48. // $aliConfig->setAppAuthToken(null);
  49. // (必须)设置 使用公钥证书方式生密钥延签(签名和验签方式)
  50. $aliConfig->setCertMode(true);
  51. // (必须)设置 支付宝公钥文件路径
  52. $aliConfig->setCertPath(__DIR__ . '/cert/alipayCertPublicKey_RSA2.crt'); // 示例支付宝公钥文件路径
  53. // (必须)设置 支付宝根证书文件路径
  54. $aliConfig->setRootCertPath(__DIR__ . '/cert/alipayRootCert.crt'); // 示例支付宝公钥根证书文件路径
  55. // (必须)设置 阿里应用公钥证书文件路径
  56. $aliConfig->setMerchantCertPath(__DIR__ . '/cert/appCertPublicKey_2016091800538780.crt');
  57. // (必须)设置 阿里应用私钥(支持 .pem 结尾的格式,默认为 PKCS1 格式),用于生成签名
  58. $aliConfig->setPrivateKey('阿里应用私钥字符串');
  59. */
  60. // 以上【普通公钥方式】 和 【公钥证书方式】 生成密钥验签(签名和验签方式) 这 2 种方式,用户可自行选择一种】
  61. $pay = new \EasySwoole\Pay\Pay();
  62. ## (面向对象风格)设置请求参数 biz_content,组件自动帮你组装成对应的格式
  63. $order = new \EasySwoole\Pay\AliPay\RequestBean\Pos();
  64. // (必须)设置 商户订单号(商户订单号。64 个字符以内的大小,仅支持字母、数字、下划线。需保证该参数在商户端不重复。)
  65. $order->setOutTradeNo(time() . '123456'); // 示例订单号(仅供参考)
  66. // (必须)设置 支付授权码(详细说明请看支付宝官网文档:https://opendocs.alipay.com/apis/api_1/alipay.trade.pay?scene=common)
  67. $order->setAuthCode('289756915257123456'); // 示例支付授权码(仅供参考)
  68. // (必须)设置 商品标题/交易标题/订单标题/订单关键字等。注意:不可使用特殊字符,如 /,=,& 等。
  69. $order->setSubject('测试'); // 示例商品标题(仅供参考)
  70. // (可选)设置 支付场景,(默认为 'bar_code')
  71. // $order->addProperty('scene', 'bar_code');
  72. // (可选)设置 产品码,默认为 'FACE_TO_FACE_PAYMENT'(当面付)
  73. // $order->addProperty('product_code', 'FACE_TO_FACE_PAYMENT');
  74. // (可选)设置 订单描述,默认为 null
  75. // $order->setBody(null);
  76. // (可选)设置 在订单中设置支付宝服务器主动通知商户服务器里指定的页面http/https路径,即支付回调地址(默认为 null,可选参数)
  77. // $order->setNotifyUrl(null); // 等价于在配置中设置 支付回调地址,两者中只要设置一次即可
  78. // 本库只预置了常用的请求参数,没预置的参数请求使用:$order->addProperty('其他字段','其他字段值');
  79. // 支付其他可选参数(详细请看支付宝接口的可选参数,支付宝接口对应地址请看下文)
  80. ## (数组风格)设置请求参数 biz_content,组件自动帮你组装成对应的格式
  81. /*
  82. $order = new \EasySwoole\Pay\AliPay\RequestBean\Wap([
  83. 'out_trade_no' => time() . '123456', // 示例订单号(仅供参考)
  84. 'auth_code' => '289756915257123456', // 示例支付授权码(仅供参考)
  85. 'product_code' => 'FACE_TO_FACE_PAYMENT', // 示例产品码,默认为 'FACE_TO_FACE_PAYMENT'(当面付)
  86. 'subject' => '测试', // 示例商品标题(仅供参考)
  87. '额外的字段键值' => '额外字段值', // 示例支付其他可选参数(详细请看支付宝接口的可选参数,支付宝接口对应地址请看下文)
  88. ], true);
  89. */
  90. // 以上 2 种风格设置请求参数,用户可根据个人需要,选其一即可
  91. // 获取构造请求参数对象
  92. $res = $pay->aliPay($aliConfig)->pos($order);
  93. // 将所有请求参数转为数组
  94. $data = $res->toArray();

订单配置参数

所有订单配置中,对于客观非必选参数,用户可以自行选择是否进行配置,也可以不进行配置,扩展包已经为您自动处理了,比如,product_codeauth_codescene等参数。

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

参数查询:https://opendocs.alipay.com/apis/api_1/alipay.trade.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->setAmount('0.01');
  10. /*
  11. 收款方账户类型。可取值:
  12. 1、ALIPAY_USERID:支付宝账号对应的支付宝唯一用户号。以2088开头的16位纯数字组成。
  13. 2、ALIPAY_LOGONID:支付宝登录号,支持邮箱和手机号格式。
  14. */
  15. $order->setPayeeType('ALIPAY_LOGONID');
  16. $order->setPayeeAccount('hcihsn8174@sandbox.com');
  17. $aliPay = $pay->aliPay($aliConfig);
  18. $data = $aliPay->transfer($order)->toArray();
  19. $aliPay->preQuest($data);
  20. var_dump($data);

本接口用的是老版本的 https://docs.open.alipay.com/309/alipay.fund.trans.toaccount.transfer

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,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);

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

可通过调用如下方法得到响应支付宝的异步通知字符串:’success’/‘failure’

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