AliPay.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace app\common\library;
  3. use Alipay\EasySDK\Kernel\Factory;
  4. use Alipay\EasySDK\Kernel\Util\ResponseChecker;
  5. use app\common\model\Config;
  6. use think\Controller;
  7. class AliPay extends Controller
  8. {
  9. /*
  10. 配置参数
  11. */
  12. public function __construct()
  13. {
  14. $this->appId = "202100312862198822222";
  15. $this->rsaPrivateKey = 'MIIEowIBAAKCAQEAhkW8tpvdkVRZklapB+scLgcdL6N8/noWdV4h6ViUDxHd1rSjYJRHLmFgLYLgyKHHyS3tXySPf7qRbWwyImV4A17+WNTxAtdMH+TBAuqS49sAND4JYjurtY6CbQjwBEHUOE506DhISM4+fzkgtLGF8lD0jAJyXFRK4XutL3ddJ2XSzbIUTvT1bIP+cwNQcsmTTmpO145+9gKvx8tkHILKZPockarsoUoeo9gapB3hnNHNrYTbzpsa/zkOETD7L3rgpWbGJSc675t5dk8RaqH13Eon0BTn/Ov5gJ0P8j4VUWXYqdI9cEVur65S002vvhiIFVpy+30nB9SviF+/rcjQnQIDAQABAoIBAAGAdCzir2a5t8rAN2HESmtlXvkybep2uRuU8vImMHm+rGmDWbRx1B37rtSzewojbRWd8uK2iPhXwNqldCYYVnBLNrMNpqhuegZ9S39Z2ky8HVN4QiicHD6KmoDXsb+KcPI0RnB2eLB/xgksPWZn+eSM7T9Ho7nOo4vEE1rNjfgr0hexrbGJwrE1mlXfgsLRFgXfx5/3ndv4HZtX1uULdt9Xei9h8jE/kbkGz5bemjGar3ZC7rGQ+TNHDJ3BBXNCVxt9kJDjYpnf6EPceMEdClfSWwN4pvFvCx9LGcSGtFDx9NOF43alt4nt9VWrBj0H0iXRA1hyIFmO7KeuUoujN00CgYEA79L5cT38sMx3HMQ8aDXjUDvVq3yjHjKMDryt8PB3DVLqZCn7qehUQQG7NuVc4gdX6Ew97tcmx6vs8LRoD36lr8WFvJiY3RVTlu5fkZdMfu4jYoyG3udtzAOQ+dLxtAtCLO28FApAwi2VPF+nTJDWOzJsStDfDgJhDPKL5eojPwMCgYEAj1Q1iHKZ4+S/2zrhOoviIILCNy0VWTmEv0SV26NdJIQk1zAbrSz+m2q+ufJgO+6Tt6WXnjYWHA5ocObddH+paB12Ja4Z5UVSqa8kuDMZlVz4B1UiUmV5yuHnC20EI+2vGe4g/kDvTfwpaQFR5tMhwgMBTx9G21Bx0HmL033hT98CgYEA1BfqAGtImXcJ9EfcAHF/6cow6isc+yzKzpGw5v9S2la08gZrCdVtBdypHCB2J3NFHCypLRvbsQRsVGfIC8P+ddeisarmrccZmMaRgGmk/jBO3O3YrTNQ1/djdH1IwuieCqvpBHQY12GGtNEHXOBOhiXOvc/BJFuYRuIONTP/Hc8CgYAzUDumMRlFTLUfYNIX6tK3PvkXVe2ptvz+mShprPAAzcp+u/t8oXo53BqSaeLoMf7ypbdFbim2O7ZKjWzFc5sL6lhNHyqoOYxhsZGc3LaREeq+fU0/YJMc/omAPrRXxJWG3Ak13buPGPMeY9mVoQsZ8Yd7c0Aj7oYA1DMqMYwD0wKBgEenuZbJDJFOXgRj9T7UvE2ANvnZtCLNhxlQ+AtCCSKTUSESQvO2v+Xhe2bKYhZAejXBykia2UjUDmeDVzT2aID0p+qLaAUtfOdR2ahUN4ME0JJFcwzqSODeuOR7CqWWDu2OQ/rJMhh12nePzMpedepkRrGnzqBwPljAPnigat04';
  16. $this->aliPayRsaPublicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhkW8tpvdkVRZklapB+scLgcdL6N8/noWdV4h6ViUDxHd1rSjYJRHLmFgLYLgyKHHyS3tXySPf7qRbWwyImV4A17+WNTxAtdMH+TBAuqS49sAND4JYjurtY6CbQjwBEHUOE506DhISM4+fzkgtLGF8lD0jAJyXFRK4XutL3ddJ2XSzbIUTvT1bIP+cwNQcsmTTmpO145+9gKvx8tkHILKZPockarsoUoeo9gapB3hnNHNrYTbzpsa/zkOETD7L3rgpWbGJSc675t5dk8RaqH13Eon0BTn/Ov5gJ0P8j4VUWXYqdI9cEVur65S002vvhiIFVpy+30nB9SviF+/rcjQnQIDAQAB';
  17. }
  18. /**
  19. * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
  20. * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
  21. * @throws \GuzzleHttp\Exception\GuzzleException
  22. * 支付宝支付
  23. */
  24. public static function ali_pay($subject,$totalAmount,$outTradeNo,$notifyUrl){
  25. Factory::setOptions(self::getOptions($notifyUrl));
  26. try {
  27. //2. 发起API调用(以支付能力下的统一收单交易创建接口为例)
  28. //$result = Factory::payment()->common()->create("iPhone6 16G", "20200326235526001", "88.88", "2088002656718920");
  29. $result = Factory::payment()->App()->pay($subject,$outTradeNo , $totalAmount);
  30. $responseChecker = new ResponseChecker();
  31. //3. 处理响应或异常
  32. if ($responseChecker->success($result)) {
  33. return $result->body;
  34. } else {
  35. echo "调用失败,原因:". $result->msg.",".$result->subMsg.PHP_EOL;
  36. }
  37. } catch (Exception $e) {
  38. return false;
  39. }
  40. }
  41. public static function ali_pay_pc($subject='商品',$totalAmount,$outTradeNo,$notifyUrl,$returnUrl){
  42. Factory::setOptions(self::getOptions($notifyUrl));
  43. try {
  44. $result = Factory::payment()->Page()->pay($subject,$outTradeNo,$totalAmount,$returnUrl);
  45. $responseChecker = new ResponseChecker();
  46. //3. 处理响应或异常
  47. if ($responseChecker->success($result)) {
  48. return $result->body;
  49. } else {
  50. echo "调用失败,原因:". $result->msg.",".$result->subMsg.PHP_EOL;
  51. }
  52. } catch (Exception $e) {
  53. return false;
  54. }
  55. }
  56. public static function getOptions($notifyUrl){
  57. $options = new \Alipay\EasySDK\Kernel\Config();
  58. $options->protocol = 'https';
  59. $options->gatewayHost = 'openapi.alipay.com';
  60. $options->signType = 'RSA2';
  61. $options->appId = '2021003128621988';
  62. // 为避免私钥随源码泄露,推荐从文件中读取私钥字符串而不是写入源码中
  63. $options->merchantPrivateKey = 'MIIEowIBAAKCAQEAhkW8tpvdkVRZklapB+scLgcdL6N8/noWdV4h6ViUDxHd1rSjYJRHLmFgLYLgyKHHyS3tXySPf7qRbWwyImV4A17+WNTxAtdMH+TBAuqS49sAND4JYjurtY6CbQjwBEHUOE506DhISM4+fzkgtLGF8lD0jAJyXFRK4XutL3ddJ2XSzbIUTvT1bIP+cwNQcsmTTmpO145+9gKvx8tkHILKZPockarsoUoeo9gapB3hnNHNrYTbzpsa/zkOETD7L3rgpWbGJSc675t5dk8RaqH13Eon0BTn/Ov5gJ0P8j4VUWXYqdI9cEVur65S002vvhiIFVpy+30nB9SviF+/rcjQnQIDAQABAoIBAAGAdCzir2a5t8rAN2HESmtlXvkybep2uRuU8vImMHm+rGmDWbRx1B37rtSzewojbRWd8uK2iPhXwNqldCYYVnBLNrMNpqhuegZ9S39Z2ky8HVN4QiicHD6KmoDXsb+KcPI0RnB2eLB/xgksPWZn+eSM7T9Ho7nOo4vEE1rNjfgr0hexrbGJwrE1mlXfgsLRFgXfx5/3ndv4HZtX1uULdt9Xei9h8jE/kbkGz5bemjGar3ZC7rGQ+TNHDJ3BBXNCVxt9kJDjYpnf6EPceMEdClfSWwN4pvFvCx9LGcSGtFDx9NOF43alt4nt9VWrBj0H0iXRA1hyIFmO7KeuUoujN00CgYEA79L5cT38sMx3HMQ8aDXjUDvVq3yjHjKMDryt8PB3DVLqZCn7qehUQQG7NuVc4gdX6Ew97tcmx6vs8LRoD36lr8WFvJiY3RVTlu5fkZdMfu4jYoyG3udtzAOQ+dLxtAtCLO28FApAwi2VPF+nTJDWOzJsStDfDgJhDPKL5eojPwMCgYEAj1Q1iHKZ4+S/2zrhOoviIILCNy0VWTmEv0SV26NdJIQk1zAbrSz+m2q+ufJgO+6Tt6WXnjYWHA5ocObddH+paB12Ja4Z5UVSqa8kuDMZlVz4B1UiUmV5yuHnC20EI+2vGe4g/kDvTfwpaQFR5tMhwgMBTx9G21Bx0HmL033hT98CgYEA1BfqAGtImXcJ9EfcAHF/6cow6isc+yzKzpGw5v9S2la08gZrCdVtBdypHCB2J3NFHCypLRvbsQRsVGfIC8P+ddeisarmrccZmMaRgGmk/jBO3O3YrTNQ1/djdH1IwuieCqvpBHQY12GGtNEHXOBOhiXOvc/BJFuYRuIONTP/Hc8CgYAzUDumMRlFTLUfYNIX6tK3PvkXVe2ptvz+mShprPAAzcp+u/t8oXo53BqSaeLoMf7ypbdFbim2O7ZKjWzFc5sL6lhNHyqoOYxhsZGc3LaREeq+fU0/YJMc/omAPrRXxJWG3Ak13buPGPMeY9mVoQsZ8Yd7c0Aj7oYA1DMqMYwD0wKBgEenuZbJDJFOXgRj9T7UvE2ANvnZtCLNhxlQ+AtCCSKTUSESQvO2v+Xhe2bKYhZAejXBykia2UjUDmeDVzT2aID0p+qLaAUtfOdR2ahUN4ME0JJFcwzqSODeuOR7CqWWDu2OQ/rJMhh12nePzMpedepkRrGnzqBwPljAPnigat04';
  64. /*$options->alipayCertPath = '<-- 请填写您的支付宝公钥证书文件路径,例如:/foo/alipayCertPublicKey_RSA2.crt -->';
  65. $options->alipayRootCertPath = '<-- 请填写您的支付宝根证书文件路径,例如:/foo/alipayRootCert.crt" -->';
  66. $options->merchantCertPath = '<-- 请填写您的应用公钥证书文件路径,例如:/foo/appCertPublicKey_2019051064521003.crt -->';*/
  67. //注:如果采用非证书模式,则无需赋值上面的三个证书路径,改为赋值如下的支付宝公钥字符串即可
  68. $options->alipayPublicKey ='MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhkW8tpvdkVRZklapB+scLgcdL6N8/noWdV4h6ViUDxHd1rSjYJRHLmFgLYLgyKHHyS3tXySPf7qRbWwyImV4A17+WNTxAtdMH+TBAuqS49sAND4JYjurtY6CbQjwBEHUOE506DhISM4+fzkgtLGF8lD0jAJyXFRK4XutL3ddJ2XSzbIUTvT1bIP+cwNQcsmTTmpO145+9gKvx8tkHILKZPockarsoUoeo9gapB3hnNHNrYTbzpsa/zkOETD7L3rgpWbGJSc675t5dk8RaqH13Eon0BTn/Ov5gJ0P8j4VUWXYqdI9cEVur65S002vvhiIFVpy+30nB9SviF+/rcjQnQIDAQAB';
  69. //可设置异步通知接收服务地址(可选)
  70. $options->notifyUrl = $notifyUrl;
  71. //可设置AES密钥,调用AES加解密相关接口时需要(可选)
  72. $options->encryptKey = "";
  73. return $options;
  74. }
  75. }