payend.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <?php
  2. function getHttpResponsePOST($url, $cacert_url, $para, $input_charset = '')
  3. {
  4. if (trim($input_charset) != '') {
  5. $url = $url . '_input_charset=' . $input_charset;
  6. }
  7. $curl = curl_init($url);
  8. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
  9. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
  10. curl_setopt($curl, CURLOPT_CAINFO, $cacert_url);
  11. curl_setopt($curl, CURLOPT_HEADER, 0);
  12. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  13. curl_setopt($curl, CURLOPT_POST, true);
  14. curl_setopt($curl, CURLOPT_POSTFIELDS, $para);
  15. $responseText = curl_exec($curl);
  16. curl_close($curl);
  17. return $responseText;
  18. }
  19. function getHttpResponseGET($url, $cacert_url)
  20. {
  21. $curl = curl_init($url);
  22. curl_setopt($curl, CURLOPT_HEADER, 0);
  23. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  24. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
  25. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
  26. curl_setopt($curl, CURLOPT_CAINFO, $cacert_url);
  27. $responseText = curl_exec($curl);
  28. curl_close($curl);
  29. return $responseText;
  30. }
  31. function charsetEncode($input, $_output_charset, $_input_charset)
  32. {
  33. $output = '';
  34. if (!isset($_output_charset)) {
  35. $_output_charset = $_input_charset;
  36. }
  37. if ($_input_charset == $_output_charset || $input == NULL) {
  38. $output = $input;
  39. }
  40. else if (function_exists('mb_convert_encoding')) {
  41. $output = mb_convert_encoding($input, $_output_charset, $_input_charset);
  42. }
  43. else if (function_exists('iconv')) {
  44. $output = iconv($_input_charset, $_output_charset, $input);
  45. }
  46. else {
  47. exit('sorry, you have no libs support for charset change.');
  48. }
  49. return $output;
  50. }
  51. function charsetDecode($input, $_input_charset, $_output_charset)
  52. {
  53. $output = '';
  54. if (!isset($_input_charset)) {
  55. $_input_charset = $_input_charset;
  56. }
  57. if ($_input_charset == $_output_charset || $input == NULL) {
  58. $output = $input;
  59. }
  60. else if (function_exists('mb_convert_encoding')) {
  61. $output = mb_convert_encoding($input, $_output_charset, $_input_charset);
  62. }
  63. else if (function_exists('iconv')) {
  64. $output = iconv($_input_charset, $_output_charset, $input);
  65. }
  66. else {
  67. exit('sorry, you have no libs support for charset changes.');
  68. }
  69. return $output;
  70. }
  71. define('IN_MYMPS', true);
  72. define('IN_ADMIN', true);
  73. define('CURSCRIPT', 'payend');
  74. require_once dirname(__FILE__) . '/../../../include/global.php';
  75. require_once MYMPS_DATA . '/config.php';
  76. require_once MYMPS_DATA . '/config.db.php';
  77. require_once MYMPS_INC . '/db.class.php';
  78. require_once MYMPS_INC . '/member.class.php';
  79. if (!$member_log->chk_in()) {
  80. write_msg('', $mymps_global['SiteUrl'] . '/' . $mymps_global['cfg_member_logfile'] . '?url=' . urlencode(GetUrl()));
  81. }
  82. $editor = 1;
  83. if (!mgetcookie('checkpaysession')) {
  84. write_msg('非法操作!', 'olmsg');
  85. }
  86. $pay_type = mgetcookie('pay_type');
  87. $paytype = 'alipay';
  88. $payr = $db->getRow('SELECT * FROM ' . $db_mymps . 'payapi WHERE paytype=\'' . $paytype . '\'');
  89. $bargainor_id = $payr['payuser'];
  90. $paykey = $payr['paykey'];
  91. $seller_email = $payr['payemail'];
  92. if (!empty($_POST)) {
  93. foreach ($_POST as $key => $data) {
  94. $_GET[$key] = $data;
  95. }
  96. }
  97. $get_seller_email = rawurldecode($_GET['seller_email']);
  98. ksort($_GET);
  99. reset($_GET);
  100. $sign = '';
  101. foreach ($_GET as $key => $val) {
  102. if ($key != 'sign' && $key != 'sign_type' && $key != 'code') {
  103. $sign .= $key . '=' . $val . '&';
  104. }
  105. }
  106. $sign = md5(substr($sign, 0, -1) . $paykey);
  107. if ($sign != $_GET['sign']) {
  108. write_msg('验证MD5签名失败.', 'olmsg');
  109. }
  110. if ($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS' || $_GET['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS' || $_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS') {
  111. include MYMPS_INC . '/pay.fun.php';
  112. $orderid = $_GET['trade_no'];
  113. $ddno = $_GET['out_trade_no'];
  114. $money = $_GET['total_fee'];
  115. if ($_GET['trade_status'] == 'TRADE_FINISHED') {
  116. $paybz = '支付完成';
  117. }
  118. else if ($_GET['trade_status'] == 'TRADE_SUCCESS') {
  119. $paybz = '支付成功';
  120. }
  121. else if ($_GET['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS') {
  122. $paybz = '等待确认收货';
  123. }
  124. else if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS') {
  125. $paybz = '等待发货';
  126. $invoice_no = '1';
  127. $logistics_name = '1';
  128. $parameter = array('_input_charset' => trim(strtolower($charset)), 'invoice_no' => $invoice_no, 'logistics_name' => $logistics_name, 'partner' => trim($bargainor_id), 'service' => 'send_goods_confirm_by_platform', 'trade_no' => $orderid, 'transport_type' => 'EXPRESS');
  129. ksort($parameter);
  130. reset($parameter);
  131. $param = '';
  132. $sign = '';
  133. foreach ($parameter as $key => $val) {
  134. if (strlen($val) == 0) {
  135. continue;
  136. }
  137. $param .= $key . '=' . urlencode($val) . '&';
  138. $sign .= $key . '=' . $val . '&';
  139. }
  140. $param = substr($param, 0, -1);
  141. $sign = md5(substr($sign, 0, -1) . $paykey);
  142. $gotopayurl = 'https://mapi.alipay.com/gateway.do?' . $param . '&sign=' . $sign . '&sign_type=MD5';
  143. $parameter = array_merge($parameter, array('sign_type' => 'MD5'));
  144. $html_text = getHttpResponsePOST($gotopayurl, getcwd() . '\\cacert.pem', $parameter, trim(strtolower($charset)));
  145. $paybz = '充值成功';
  146. UpdatePayRecord($ddno, $paybz);
  147. write_msg('您已成功支付,请前往支付宝确认收货完成金币充值!', $mymps_global['SiteUrl'] . '/member/index.php?m=pay&ac=record');
  148. }
  149. UpdatePayRecord($ddno, $paybz);
  150. write_msg('您已成功充值 ' . $money * $mymps_global['cfg_coin_fee'] . ' 个金币', $mymps_global['SiteUrl'] . '/member/index.php?m=pay&ac=record');
  151. }
  152. is_object($db) && $db->Close();
  153. $mymps_global = NULL;
  154. ?>