payment.ctrl.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?php
  2. /**
  3. * [WeEngine System] Copyright (c) 2014 WE7.CC
  4. * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
  5. */
  6. defined('IN_IA') or exit('Access Denied');
  7. load()->model('payment');
  8. load()->model('account');
  9. load()->func('communication');
  10. $dos = array('save_setting', 'display', 'test_alipay', 'get_setting');
  11. $do = in_array($do, $dos) ? $do : 'display';
  12. permission_check_account_user('profile_pay_setting');
  13. $_W['page']['title'] = '支付参数 - 公众号选项';
  14. if ($do == 'get_setting') {
  15. $setting = uni_setting_load('payment', $_W['uniacid']);
  16. $pay_setting = $setting['payment'];
  17. if(!is_array($pay_setting) || empty($pay_setting)) {
  18. $pay_setting = array(
  19. 'delivery' => array('switch' => false),
  20. 'credit' => array('switch' => false),
  21. 'alipay' => array('switch' => false),
  22. 'wechat' => array('switch' => false),
  23. 'wechat_facilitator' => array('switch' => false, 'mchid' => '', 'signkey' => ''),
  24. 'unionpay' => array('switch' => false),
  25. 'baifubao' => array('switch' => false),
  26. 'line' => array('switch' => false),
  27. 'jueqiymf' => array('switch' => false),
  28. );
  29. }
  30. iajax(0, $pay_setting, '');
  31. }
  32. if ($do == 'test_alipay') {
  33. $alipay = $_GPC['param'];
  34. $pay_data = array(
  35. 'uniacid' => $_W['uniacid'],
  36. 'acid' => $_W['acid'],
  37. 'uniontid' => date('Ymd', time()).time(),
  38. 'module' => 'system',
  39. 'fee' => '0.01',
  40. 'status' => 0,
  41. 'card_fee' => 0.01
  42. );
  43. $params = array();
  44. $params['tid'] = md5(uniqid());
  45. $params['user'] = '测试用户';
  46. $params['fee'] = '0.01';
  47. $params['title'] = '测试支付接口';
  48. $params['uniontid'] = $pay_data['uniontid'];
  49. $result = alipay_build($params, $alipay);
  50. iajax(0, $result['url'], '');
  51. }
  52. if ($do == 'save_setting') {
  53. $type = $_GPC['type'];
  54. $param = $_GPC['param'];
  55. $setting = uni_setting_load('payment', $_W['uniacid']);
  56. $pay_setting = $setting['payment'];
  57. if ($type == 'credit' || $type == 'delivery' || $type == 'mix') {
  58. $param['switch'] = $param['switch'] == 'false' ? true : false;
  59. }
  60. if ($type == 'jueqiymf') {
  61. $param['switch'] = $param['switch'] == 'true' ? true : false;
  62. }
  63. if ($type == 'alipay' || $type == 'wechat_facilitator' || $type == 'baifubao' || $type == 'line') {
  64. $param['switch'] = $param['switch'] == 'true' ? true : false;
  65. }
  66. if ($type == 'wechat') {
  67. $param['account'] = $_W['acid'];
  68. $param['signkey'] = $param['version'] == 2 ? trim($param['apikey']) : trim($param['signkey']);
  69. }
  70. if ($type == 'unionpay') {
  71. $unionpay = $_GPC['unionpay'];
  72. if ($unionpay['switch'] && empty($_FILES['unionpay']['tmp_name']['signcertpath']) && !file_exists(IA_ROOT . '/attachment/unionpay/PM_'.$_W['uniacid'].'_acp.pfx')) {
  73. itoast('请上联银商户私钥证书.', referer(), 'error');
  74. }
  75. $param = array(
  76. 'switch' => $unionpay['switch'] == 'false'? false : true,
  77. 'merid' => $unionpay['merid'],
  78. 'signcertpwd' => $unionpay['signcertpwd']
  79. );
  80. if($param['switch'] && (empty($param['merid']) || empty($param['signcertpwd']))) {
  81. itoast('请输入完整的银联支付接口信息.', referer(), 'error');
  82. }
  83. if ($param['switch'] && empty($_FILES['unionpay']['tmp_name']['signcertpath']) && !file_exists(IA_ROOT . '/attachment/unionpay/PM_'.$_W['uniacid'].'_acp.pfx')) {
  84. itoast('请上传银联商户私钥证书.', referer(), 'error');
  85. }
  86. if ($param['switch'] && !empty($_FILES['unionpay']['tmp_name']['signcertpath'])) {
  87. load()->func('file');
  88. mkdirs(IA_ROOT . '/attachment/unionpay/');
  89. file_put_contents(IA_ROOT . '/attachment/unionpay/PM_'.$_W['uniacid'].'_acp.pfx', file_get_contents($_FILES['unionpay']['tmp_name']['signcertpath']));
  90. $public_rsa = '-----BEGIN CERTIFICATE-----
  91. MIIEIDCCAwigAwIBAgIFEDRVM3AwDQYJKoZIhvcNAQEFBQAwITELMAkGA1UEBhMC
  92. Q04xEjAQBgNVBAoTCUNGQ0EgT0NBMTAeFw0xNTEwMjcwOTA2MjlaFw0yMDEwMjIw
  93. OTU4MjJaMIGWMQswCQYDVQQGEwJjbjESMBAGA1UEChMJQ0ZDQSBPQ0ExMRYwFAYD
  94. VQQLEw1Mb2NhbCBSQSBPQ0ExMRQwEgYDVQQLEwtFbnRlcnByaXNlczFFMEMGA1UE
  95. Aww8MDQxQDgzMTAwMDAwMDAwODMwNDBA5Lit5Zu96ZO26IGU6IKh5Lu95pyJ6ZmQ
  96. 5YWs5Y+4QDAwMDE2NDkzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
  97. tXclo3H4pB+Wi4wSd0DGwnyZWni7+22Tkk6lbXQErMNHPk84c8DnjT8CW8jIfv3z
  98. d5NBpvG3O3jQ/YHFlad39DdgUvqDd0WY8/C4Lf2xyo0+gQRZckMKEAId8Fl6/rPN
  99. HsbPRGNIZgE6AByvCRbriiFNFtuXzP4ogG7vilqBckGWfAYaJ5zJpaGlMBOW1Ti3
  100. MVjKg5x8t1/oFBkpFVsBnAeSGPJYrBn0irfnXDhOz7hcIWPbNDoq2bJ9VwbkKhJq
  101. Vz7j7116pziUcLSFJasnWMnp8CrISj52cXzS/Y1kuaIMPP/1B0pcjVqMNJjowooD
  102. OxID3TZGfk5V7S++4FowVwIDAQABo4HoMIHlMB8GA1UdIwQYMBaAFNHb6YiC5d0a
  103. j0yqAIy+fPKrG/bZMEgGA1UdIARBMD8wPQYIYIEchu8qAQEwMTAvBggrBgEFBQcC
  104. ARYjaHR0cDovL3d3dy5jZmNhLmNvbS5jbi91cy91cy0xNC5odG0wNwYDVR0fBDAw
  105. LjAsoCqgKIYmaHR0cDovL2NybC5jZmNhLmNvbS5jbi9SU0EvY3JsMjI3Mi5jcmww
  106. CwYDVR0PBAQDAgPoMB0GA1UdDgQWBBTEIzenf3VR6CZRS61ARrWMto0GODATBgNV
  107. HSUEDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQUFAAOCAQEAHMgTi+4Y9g0yvsUA
  108. p7MkdnPtWLS6XwL3IQuXoPInmBSbg2NP8jNhlq8tGL/WJXjycme/8BKu+Hht6lgN
  109. Zhv9STnA59UFo9vxwSQy88bbyui5fKXVliZEiTUhjKM6SOod2Pnp5oWMVjLxujkk
  110. WKjSakPvV6N6H66xhJSCk+Ref59HuFZY4/LqyZysiMua4qyYfEfdKk5h27+z1MWy
  111. nadnxA5QexHHck9Y4ZyisbUubW7wTaaWFd+cZ3P/zmIUskE/dAG0/HEvmOR6CGlM
  112. 55BFCVmJEufHtike3shu7lZGVm2adKNFFTqLoEFkfBO6Y/N6ViraBilcXjmWBJNE
  113. MFF/yA==
  114. -----END CERTIFICATE-----';
  115. file_put_contents(IA_ROOT . '/attachment/unionpay/UpopRsaCert.cer', trim($public_rsa));
  116. }
  117. }
  118. $pay_setting[$type] = $param;
  119. $payment = iserializer($pay_setting);
  120. uni_setting_save('payment', $payment);
  121. if ($type == 'wechat_facilitator') {
  122. cache_clean(cache_system_key('proxy_wechatpay_account:'));
  123. }
  124. if ($type == 'unionpay') {
  125. header('LOCATION: '.url('profile/payment'));
  126. exit();
  127. }
  128. iajax(0, '');
  129. }
  130. if ($do == 'display') {
  131. $proxy_wechatpay_account = account_wechatpay_proxy();
  132. $setting = uni_setting_load('payment', $_W['uniacid']);
  133. $pay_setting = is_array($setting['payment']) ? $setting['payment'] : array();
  134. if (empty($pay_setting['delivery'])) {
  135. $pay_setting['delivery'] = array('switch' => false);
  136. }
  137. if (empty($pay_setting['mix'])) {
  138. $pay_setting['mix'] = array('switch' => false);
  139. }
  140. if (empty($pay_setting['credit'])) {
  141. $pay_setting['delivery'] = array('switch' => false);
  142. }
  143. if (empty($pay_setting['alipay'])) {
  144. $pay_setting['alipay'] = array('switch' => false);
  145. }
  146. if (empty($pay_setting['wechat'])) {
  147. $pay_setting['wechat'] = array('switch' => false);
  148. }
  149. if (empty($pay_setting['unionpay'])) {
  150. $pay_setting['unionpay'] = array('switch' => false);
  151. }
  152. if (empty($pay_setting['baifubao'])) {
  153. $pay_setting['baifubao'] = array('switch' => false);
  154. }
  155. if (empty($pay_setting['line'])) {
  156. $pay_setting['line'] = array('switch' => false);
  157. }
  158. if (empty($pay_setting['jueqiymf'])) {
  159. $pay_setting['jueqiymf'] = array('switch' => false);
  160. }
  161. if (empty($pay_setting['wechat_facilitator'])) {
  162. $pay_setting['wechat_facilitator'] = array('switch' => false, 'mchid' => '', 'signkey' => '');
  163. }
  164. if (empty($_W['isfounder'])) {
  165. $user_account_list = pdo_getall('uni_account_users', array('uid' => $_W['uid']), array(), 'uniacid');
  166. $param['uniacid'] = array_keys($user_account_list);
  167. }
  168. $accounts = array();
  169. $accounts[$_W['acid']] = array_elements(array('name', 'acid', 'key', 'secret', 'level'), $_W['account']);
  170. $pay_setting['unionpay']['signcertexists'] = file_exists(IA_ROOT . '/attachment/unionpay/PM_'.$_W['uniacid'].'_acp.pfx');
  171. }
  172. template('profile/payment');