alipay.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 16/9/21
  6. * Time: 下午7:54
  7. */
  8. namespace Pay;
  9. use Log;
  10. if(defined('SERVER_TYPE') && SERVER_TYPE == 'panda') {
  11. define(ALIPAY_PATH, BASE_DATA_PATH . '/api/alipay');
  12. define(ALIPAY_PARTNER, '2088121219613123');
  13. define(ALIPAY_SELLER_ID, 'napheir.ao@lrlz.com');
  14. Log::record("找到panda 阿里支付密钥",Log::DEBUG);
  15. }
  16. elseif(defined('SERVER_TYPE') && SERVER_TYPE == 'car') {
  17. define(ALIPAY_PATH, BASE_DATA_PATH . '/api/caralipay');
  18. define(ALIPAY_PARTNER, '2088921850833159');
  19. define(ALIPAY_SELLER_ID, 'jyc2018168@163.com');
  20. Log::record("找到car 阿里支付密钥",Log::DEBUG);
  21. }
  22. else {
  23. Log::record("没有找到阿里支付密钥",Log::DEBUG);
  24. }
  25. require_once (ALIPAY_PATH . '/lib/alipay_rsa.function.php');
  26. require_once (ALIPAY_PATH . '/lib/alipay_submit.class.php');
  27. class alipay implements IPay
  28. {
  29. const pri_key_path = ALIPAY_PATH.'/key/lrlz_private_key.pem';
  30. const ali_notifyurl = BASE_SITE_URL . '/mobile/alipay_notify_url.php';
  31. public function gen_pay($pay_sn, $fee,$order_sn,$subject)
  32. {
  33. $param = $this->getParam($pay_sn, $fee, $order_sn, $subject);
  34. $para_filter = paraFilter($param);
  35. $para_sort = argSort($para_filter);
  36. $prestr = createLinkstring($para_sort);
  37. $sign = rsaSign($prestr,self::pri_key_path);
  38. $para_sort['sign'] = $sign;
  39. $para_sort['sign_type'] = "RSA";
  40. $req_param = createLinkstringUrlencode($para_sort);
  41. return array("data" => $req_param);
  42. }
  43. private function getParam($pay_sn, $fee, $order_sn, $subject)
  44. {
  45. $ret['partner'] = ALIPAY_PARTNER; // 合作者身份ID
  46. $ret['seller_id'] = ALIPAY_SELLER_ID; // 签约卖家支付宝账号
  47. $ret['out_trade_no'] = $pay_sn; // 商户网站唯一订单号
  48. $ret['subject'] = $subject; // 商品名称
  49. $ret['body'] = "order_sn={$order_sn}"; // 商品详情
  50. $total_fee = $fee / 100;
  51. $ret['total_fee'] = "{$total_fee}"; // 商品金额
  52. $ret['notify_url'] = self::ali_notifyurl; // 服务器异步通知页面路径
  53. $ret['service'] = 'mobile.securitypay.pay'; // 服务器接口名称,固定值
  54. $ret['payment_type'] = '1'; // 支付类型,固定值
  55. $ret['_input_charset'] = 'utf-8'; // 参数编码,固定值
  56. $ret['it_b_pay'] = '30m'; // 设置未付款交易的超时时间 30min
  57. $ret['return_url'] = 'http://'; // 支付宝完成请求后,当前页面跳转到商户指定页面的路径,可空
  58. return $ret;
  59. }
  60. public function on_notify($post)
  61. {
  62. }
  63. }