Vyiwx_payment.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <?php
  2. $payment_lang = array(
  3. 'name' => '微易微信支付',
  4. 'payId' => '商户号',
  5. 'payKey'=> '商户密钥',
  6. );
  7. $config = array(
  8. 'payId' => array(
  9. 'INPUT_TYPE' => '0',
  10. ), //商户编号
  11. 'payKey' => array(
  12. 'INPUT_TYPE' => '0',
  13. ), //商户私钥
  14. );
  15. /* 模块的基本信息 */
  16. if (isset($read_modules) && $read_modules == true)
  17. {
  18. $module['class_name'] = 'Vyiwx';
  19. /* 名称 */
  20. $module['name'] = $payment_lang['name'];
  21. /* 支付方式:1:在线支付;0:线下支付 2:仅wap支付 3:仅app支付 4:兼容wap和app*/
  22. $module['online_pay'] = '4';
  23. /* 配送 */
  24. $module['config'] = $config;
  25. $module['lang'] = $payment_lang;
  26. $module['reg_url'] = 'http://pay.vyipay.cn/';
  27. return $module;
  28. }
  29. // 支付模型
  30. require_once(APP_ROOT_PATH.'system/libs/payment.php');
  31. class Vyiwx_payment implements payment {
  32. public function get_payment_code($payment_notice_id)
  33. {
  34. $pay = array();
  35. $pay['is_wap'] = 1;//
  36. $pay['class_name'] = "Vyiwx";
  37. $pay['is_without'] = 1;//跳转外部浏览器
  38. $pay['url'] = SITE_DOMAIN . APP_ROOT . '/mapi/index.php?ctl=pay&act=get_display_code&pay_code=Vyiwx&notice_id=' . $payment_notice_id;
  39. $pay['sdk_code'] = array("pay_sdk_type" => "yjwap", "config" =>
  40. array(
  41. "url" => SITE_DOMAIN . APP_ROOT . '/mapi/index.php?ctl=pay&act=get_display_code&pay_code=Vyiwx&notice_id=' . $payment_notice_id,
  42. "is_wap" => 1
  43. )
  44. );
  45. return $pay;
  46. }
  47. public function response($request)
  48. {
  49. $payment = $GLOBALS['db']->getRow("select id,config from ".DB_PREFIX."payment where class_name='Vyiwx'");
  50. $config = unserialize($payment['config']);
  51. $result = $this->get_md5($request,$config);
  52. if($result['status']){
  53. $payment_notice_sn = $request['out_trade_no'];
  54. $outer_notice_sn = $request['trade_no'];
  55. $payment_notice = $GLOBALS['db']->getRow("select * from ".DB_PREFIX."payment_notice where notice_sn = '".$payment_notice_sn."'");
  56. $user_diamonds = $GLOBALS['db']->getOne("select diamonds from ".DB_PREFIX."user where id = '".$payment_notice['user_id']."'");
  57. require_once APP_ROOT_PATH."system/libs/cart.php";
  58. $rs = payment_paid($payment_notice['notice_sn'],$outer_notice_sn);
  59. if($rs['status']==1)
  60. {
  61. echo '<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=0,minimum-scale=0.5"><title></title></head><body><div style="width:120px;height:40px;line-height:40px;font-size:14px;text-align:center;background:#ff4d7f;color:#fff;margin:20px auto;border-radius:5px;" >付款成功!当前余额:'.$user_diamonds.'</div></body></html>';
  62. exit;
  63. }
  64. else
  65. {
  66. echo '<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=0,minimum-scale=0.5"><title></title></head><body><div style="width:120px;height:40px;line-height:40px;font-size:14px;text-align:center;background:#ff4d7f;color:#fff;margin:20px auto;border-radius:5px;" >回调失败!关闭当前页面</div></body></html>';
  67. exit;
  68. }
  69. } else{
  70. echo '<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=0,minimum-scale=0.5"><title></title></head><body><div style="width:120px;height:40px;line-height:40px;font-size:14px;text-align:center;background:#ff4d7f;color:#fff;margin:20px auto;border-radius:5px;" >'.$request['msg'].'请关闭当前页面,返回APP查看</div></body></html>';
  71. exit;
  72. }
  73. }
  74. public function notify($request)
  75. {
  76. $payment = $GLOBALS['db']->getRow("select id,config from ".DB_PREFIX."payment where class_name='Vyiwx'");
  77. $config = unserialize($payment['config']);
  78. $result = $this->get_md5($request,$config);
  79. if($result['status']){
  80. $payment_notice_sn = $request['out_trade_no'];
  81. $outer_notice_sn = $request['trade_no'];
  82. $payment_notice = $GLOBALS['db']->getRow("select * from ".DB_PREFIX."payment_notice where notice_sn = '".$payment_notice_sn."'");
  83. require_once APP_ROOT_PATH."system/libs/cart.php";
  84. $rs = payment_paid($payment_notice['notice_sn'],$outer_notice_sn);
  85. if($rs['status']==1)
  86. {
  87. echo 'SUCCESS';
  88. }
  89. else
  90. {
  91. echo 'FAIL';
  92. }
  93. }else
  94. {
  95. echo 'FAIL';
  96. }
  97. }
  98. function get_display_code(){
  99. }
  100. public function display_code($payment_notice_id)
  101. {
  102. $payment_notice = $GLOBALS['db']->getRow("select * from ".DB_PREFIX."payment_notice where id = ".$payment_notice_id);
  103. $money = round($payment_notice['money'],2);
  104. $payment_info = $GLOBALS['db']->getRow("select id,config,logo from ".DB_PREFIX."payment where id=".intval($payment_notice['payment_id']));
  105. $config = unserialize($payment_info['config']);
  106. $order_sn = $payment_notice['notice_sn'];
  107. $m_config = load_auto_cache("m_config");
  108. $title_name = $m_config['ticket_name'];
  109. if($title_name=='')
  110. $title_name = '虚拟印币';
  111. if(empty($title_name))
  112. {
  113. $title_name = "充值".round($payment_notice['money'],2)."元";
  114. }
  115. $Request = array();
  116. //系统生成订单号
  117. $Request['out_trade_no'] = $order_sn;
  118. //商户编号
  119. $Request['pid'] = $config['payId'];
  120. //订单标题
  121. $Request['name'] = $title_name;
  122. //交易金额(单位分)
  123. $Request['money'] = $money;
  124. $url = $this->get_url($Request);
  125. header('Location:'.$url);
  126. }
  127. function get_url($Request){
  128. //支付方式
  129. $type = "wxpay";
  130. //异步通知地址
  131. $notify_url ='http://live.huangjiaxiuchang.com/callback/payment/vyiwx_notify.php';
  132. //客户端同步跳转通知地址
  133. $return_url ='http://live.huangjiaxiuchang.com/callback/payment/vyiwx_response.php';
  134. $url = "http://pay.vyipay.cn/wqpay.php?type=".$type."&pid=".$Request['pid']."&out_trade_no=".$Request['out_trade_no']."&name=".$Request['name']."&money=".$Request['money']."&notify_url=".$notify_url."&return_url=".$return_url;
  135. return $url;
  136. }
  137. function get_md5($request,$config){
  138. $result = array('status'=>0,'error'=>'');
  139. $id = $config['payId'];
  140. $key = $config['payKey'];
  141. $pid = $request['pid'];
  142. //支付成功后返回的订单编号
  143. $out_trade_no = $request['out_trade_no'];
  144. //支付成功后返回的支付状态
  145. $trade_status = $request['trade_status'];
  146. //支付成功后返回的签名
  147. $sign = $request['sign'];
  148. if($request) {
  149. if($trade_status=='SUCCESS') {
  150. $md5 = md5($id . $out_trade_no . $trade_status . $key);
  151. if ($sign == $md5) {
  152. $result['status'] = 1;
  153. } else {
  154. $result['error'] = '签名错误';
  155. }
  156. }else{
  157. $result['error'] = '支付失败,支付状态:'.$trade_status;
  158. }
  159. }else{
  160. $result['error']= '无接收参数';
  161. }
  162. return $result;
  163. }
  164. }
  165. ?>