Vyi_payment.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. <?php
  2. $payment_lang = array(
  3. 'name' => '微易支付宝支付',
  4. 'payId' => '商户号',
  5. //'merchantAppId'=> '商户APPID',
  6. 'payKey'=> '商户密钥',
  7. );
  8. $config = array(
  9. 'payId' => array(
  10. 'INPUT_TYPE' => '0',
  11. ), //商户编号
  12. /*'merchantAppId' => array(
  13. 'INPUT_TYPE' => '0',
  14. ), //商户APPID*/
  15. 'payKey' => array(
  16. 'INPUT_TYPE' => '0',
  17. ), //商户私钥
  18. );
  19. /* 模块的基本信息 */
  20. if (isset($read_modules) && $read_modules == true)
  21. {
  22. $module['class_name'] = 'Vyi';
  23. /* 名称 */
  24. $module['name'] = $payment_lang['name'];
  25. /* 支付方式:1:在线支付;0:线下支付 2:仅wap支付 3:仅app支付 4:兼容wap和app*/
  26. $module['online_pay'] = '4';
  27. /* 配送 */
  28. $module['config'] = $config;
  29. $module['lang'] = $payment_lang;
  30. $module['reg_url'] = 'http://pay.vyipay.cn/';
  31. return $module;
  32. }
  33. // 支付模型
  34. require_once(APP_ROOT_PATH.'system/libs/payment.php');
  35. class Vyi_payment implements payment {
  36. public function get_payment_code($payment_notice_id)
  37. {
  38. $pay = array();
  39. $pay['is_wap'] = 1;//
  40. $pay['class_name'] = "Vyi";
  41. $pay['url'] = SITE_DOMAIN . APP_ROOT . '/mapi/index.php?ctl=pay&act=get_display_code&pay_code=Vyi&notice_id=' . $payment_notice_id;
  42. $pay['sdk_code'] = array("pay_sdk_type" => "yjwap", "config" =>
  43. array(
  44. "url" => SITE_DOMAIN . APP_ROOT . '/mapi/index.php?ctl=pay&act=get_display_code&pay_code=Vyi&notice_id=' . $payment_notice_id,
  45. "is_wap" => 1
  46. )
  47. );
  48. return $pay;
  49. }
  50. public function response($request)
  51. {
  52. }
  53. public function notify($request)
  54. {
  55. $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Vyi'");
  56. $config = unserialize($payment['config']);
  57. //require_once(APP_ROOT_PATH.'system/payment/Ispay/Ispay.class.php');
  58. //$Ispay = new ispayService($config['payId'], $config['payKey']);
  59. //require_once("lib/vpay_notify.class.php");
  60. require_once(APP_ROOT_PATH.'system/payment/Vyi/vpay_notify.class.php');
  61. //商户ID
  62. $alipay_config['partner'] = $config['payId'];
  63. //商户KEY
  64. $alipay_config['key'] = $config['payKey'];
  65. //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
  66. //签名方式 不需修改
  67. $alipay_config['sign_type'] = strtoupper('MD5');
  68. //字符编码格式 目前支持 gbk 或 utf-8
  69. $alipay_config['input_charset']= strtolower('utf-8');
  70. //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
  71. $alipay_config['transport'] = 'http';
  72. //计算得出通知验证结果
  73. $alipayNotify = new AlipayNotify($alipay_config);
  74. $verify_result = $alipayNotify->verifyNotify();
  75. if($verify_result) {//验证成功
  76. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  77. //请在这里加上商户的业务逻辑程序代
  78. //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
  79. //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
  80. //商户订单号
  81. $out_trade_no = $_GET['out_trade_no'];
  82. //微易支付交易号
  83. $trade_no = $_GET['trade_no'];
  84. //交易状态
  85. $trade_status = $_GET['trade_status'];
  86. //支付方式
  87. $type = $_GET['type'];
  88. if ($_GET['trade_status'] == 'TRADE_SUCCESS') {
  89. $payment_notice_sn = $out_trade_no;
  90. $outer_notice_sn = $trade_no;
  91. $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $payment_notice_sn . "'");
  92. require_once APP_ROOT_PATH . "system/libs/cart.php";
  93. $rs = payment_paid($payment_notice['notice_sn'],$outer_notice_sn);
  94. if($rs['status']==1){
  95. echo 'SUCCESS';
  96. } else {
  97. echo 'callbackSign fail!';
  98. }
  99. }
  100. //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
  101. echo "success"; //请不要修改或删除
  102. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  103. }
  104. else {
  105. //验证失败
  106. echo "fail";
  107. }
  108. //设置时区
  109. //date_default_timezone_set('Asia/Shanghai');
  110. //接受ISPAY通知返回的支付渠道
  111. /*$Array['payChannel'] = $request['payChannel']; //(支付通道)
  112. //接受ISPAY通知返回的支付金额
  113. $Array['Money'] = $request['Money']; //(单位分)
  114. //接受ISPAY通知返回的订单号
  115. $Array['orderNumber'] = $request['orderNumber']; //(商户订单号)
  116. //接受ISPAY通知返回的附加数据
  117. $Array['attachData'] = $request['attachData']; //(商户自定义附加数据)
  118. //接受ISPAY通知返回的回调签名
  119. $Array['callbackSign'] = $request['callbackSign']; //(详情查看ISPAY开发文档)
  120. //回调签名校验
  121. if($Ispay->callbackSignCheck($Array)){
  122. //回调请求校验 (有效预防商户泄露payKey导致回调签名遭到破解的另一种校验方式,弊端会影响回调的成功率,要求安全性建议开启。) 开启请将下方注释//去掉
  123. //if(!$Ispay->callbackRequestCheck($Array)){echo "fail!";exit;}
  124. //<--------------------------商户业务代码写在下方-------------------------->
  125. $payment_notice_sn = $request['orderNumber'];
  126. $outer_notice_sn = '';
  127. $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $payment_notice_sn . "'");
  128. require_once APP_ROOT_PATH . "system/libs/cart.php";
  129. $rs = payment_paid($payment_notice['notice_sn'],$outer_notice_sn);
  130. if($rs['status']==1){
  131. echo 'SUCCESS';
  132. } else {
  133. echo 'callbackSign fail!';
  134. }
  135. //<--------------------------商户业务代码写在上方-------------------------->
  136. //下方输出是告知ISPAY服务器业务受理成功,请不要修改下方输出内容,否则会导致重复通知,ISPAY服务器会在24小时内通知8次,输出SUCCESS则不再进行通知
  137. //echo "SUCCESS";
  138. }else{
  139. echo "callbackSign fail!";
  140. exit;
  141. }
  142. */
  143. }
  144. function get_display_code(){
  145. }
  146. public function display_code($payment_notice_id)
  147. {
  148. $payment_notice = $GLOBALS['db']->getRow("select * from ".DB_PREFIX."payment_notice where id = ".$payment_notice_id);
  149. $money = round($payment_notice['money'],2);
  150. $payment_info = $GLOBALS['db']->getRow("select id,config,logo from ".DB_PREFIX."payment where id=".intval($payment_notice['payment_id']));
  151. $config = unserialize($payment_info['config']);
  152. $order_sn = $payment_notice['notice_sn'];
  153. //require_once 'lib/Ispay.class.php';
  154. require_once(APP_ROOT_PATH.'system/payment/Vyi/vpay_submit.class.php');
  155. //$Ispay = new ispayService($config['payId'], $config['payKey']);
  156. //支付通道
  157. if (isset($_GET['payChannel'])) {
  158. $Request['payChannel'] = $_GET['payChannel'];
  159. } else {
  160. $Request['payChannel'] = "alipay";
  161. }
  162. $m_config = load_auto_cache("m_config");
  163. $title_name = $m_config['ticket_name'];
  164. if($title_name=='')
  165. $title_name = '虚拟印币';
  166. if(empty($title_name))
  167. {
  168. $title_name = "充值".round($payment_notice['money'],2)."元";
  169. }
  170. //商户ID
  171. $alipay_config['partner'] = $config['payId'];
  172. //商户KEY
  173. $alipay_config['key'] = $config['payKey'];
  174. //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
  175. $alipay_config['type'] = "wxpay";
  176. //签名方式 不需修改
  177. $alipay_config['sign_type'] = strtoupper('MD5');
  178. //字符编码格式 目前支持 gbk 或 utf-8
  179. $alipay_config['input_charset']= strtolower('utf-8');
  180. //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
  181. $alipay_config['transport'] = 'http';
  182. //支付API地址
  183. $alipay_config['apiurl'] = 'http://pay.vyipay.cn/';
  184. //构造要请求的参数数组,无需改动
  185. $parameter = array(
  186. "pid" => trim($alipay_config['partner']),
  187. "notify_url" => 'http://live.huangjiaxiuchang.com/callback/payment/vyi_notify.php',
  188. "return_url" => 'http://live.huangjiaxiuchang.com/callback/payment/vyi_response.php',
  189. "out_trade_no" => $order_sn,
  190. "name" => $title_name,
  191. "money" => $money,
  192. );
  193. //建立请求
  194. $alipaySubmit = new AlipaySubmit($alipay_config);
  195. $html_text = $alipaySubmit->buildRequestForm($parameter);
  196. return $html_text;
  197. $Request['type'] = "wxpay";
  198. /*$post_url = "http://pay.vyipay.cn/submit.php";
  199. //商户编号
  200. $Request['pid'] = $config['payId'];
  201. //随机生成订单号
  202. $Request['out_trade_no'] = $order_sn;
  203. //异步通知地址
  204. $Request['notify_url'] = SITE_DOMAIN . '/callback/payment/vyi_notify.php';
  205. //客户端同步跳转通知地址
  206. $Request['Return_url'] = SITE_DOMAIN .'/callback/payment/vyi_response.php';
  207. //订单标题
  208. $Request['name'] = $title_name;
  209. //交易金额(单位分)
  210. $Request['money'] = intval($money * 100);
  211. //签名(加密算法详见开发文档)
  212. $Request['sign'] = $Ispay -> Sign($Request);
  213. //加密方式
  214. $Request['sign_type'] = "MD5";
  215. //附加数据(没有可不填)
  216. //$Request['attachData'] = "";
  217. $payLinks = '<form id="payForm" name="form2" action="' . $post_url . '" method="post">';
  218. $payLinks .= '<input type="hidden" name="payId" id="payId" value="' . $Request['payId'] . '" />';
  219. $payLinks .= '<input type="hidden" name="payChannel" id="payChannel" value="' . $Request['payChannel'] . '"/>';
  220. $payLinks .= '<input type="hidden" name="Subject" id="Subject" value="' . $Request['Subject'] . '"/>';
  221. $payLinks .= '<input type="hidden" name="Money" id="Money" value="' . $Request['Money'] . '" />';
  222. $payLinks .= '<input type="hidden" name="orderNumber" id="orderNumber" value="' . $Request['orderNumber'] . '"/>';
  223. $payLinks .= '<input type="hidden" name="attachData" id="attachData" value="' . $Request['attachData'] . '"/>';
  224. $payLinks .= '<input type="hidden" name="Notify_url" id="Notify_url" value="' . $Request['Notify_url'] . '"/>';
  225. $payLinks .= '<input type="hidden" name="Return_url" id="Return_url" value="' . $Request['Return_url'] . '"/>';
  226. $payLinks .= '<input type="hidden" name="Sign" id="Sign" value="' . $Request['Sign'] . '"/>';
  227. $payLinks .= '</form>';
  228. $payLinks .= '<script type="text/javascript">document.getElementById("payForm").submit();</script>';
  229. return $payLinks;*/
  230. }
  231. }
  232. ?>