Wxappsdk_payment.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Fanwe 方维p2p借贷系统
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2011 http://www.fanwe.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: 云淡风轻(1956838968@qq.com)
  8. // +----------------------------------------------------------------------
  9. /*
  10. $url = 'https://pay.swiftpass.cn/pay/gateway',
  11. // 商户编号
  12. $merchantaccount = '755437000006';
  13. // 商户私钥
  14. $merchantPrivateKey = '7daa4babae15ae17eee90c9e';
  15. */
  16. $payment_lang = array(
  17. 'name' => '威富通微信支付',
  18. 'merchantaccount' => '商户编号',
  19. 'merchantAppId'=> '商户APPID',
  20. 'merchantPrivateKey'=> '商户密钥',
  21. );
  22. $config = array(
  23. 'merchantaccount' => array(
  24. 'INPUT_TYPE' => '0',
  25. ), //商户编号
  26. 'merchantAppId' => array(
  27. 'INPUT_TYPE' => '0',
  28. ), //商户APPID
  29. 'merchantPrivateKey' => array(
  30. 'INPUT_TYPE' => '0',
  31. ), //商户私钥
  32. );
  33. /* 模块的基本信息 */
  34. if (isset($read_modules) && $read_modules == true)
  35. {
  36. $module['class_name'] = 'Wxappsdk';
  37. /* 名称 */
  38. $module['name'] = $payment_lang['name'];
  39. /* 支付方式:1:在线支付;0:线下支付 2:仅wap支付 3:仅app支付 4:兼容wap和app*/
  40. $module['online_pay'] = '4';
  41. /* 配送 */
  42. $module['config'] = $config;
  43. $module['lang'] = $payment_lang;
  44. $module['reg_url'] = 'https://citicmch.swiftpass.cn/';
  45. return $module;
  46. }
  47. // 易宝支付模型
  48. require_once(APP_ROOT_PATH.'system/libs/payment.php');
  49. class Wxappsdk_payment implements payment {
  50. public function get_payment_code($payment_notice_id)
  51. {
  52. $payment_notice = $GLOBALS['db']->getRow("select * from ".DB_PREFIX."payment_notice where id = ".$payment_notice_id);
  53. $money = round($payment_notice['money'],2);
  54. $payment_info = $GLOBALS['db']->getRow("select id,config,logo from ".DB_PREFIX."payment where id=".intval($payment_notice['payment_id']));
  55. $payment_info['config'] = unserialize($payment_info['config']);
  56. require_once(APP_ROOT_PATH.'system/payment/Wxappsdk/request.php');
  57. $wxappsdk = new Request($payment_info['config']['merchantaccount'],$payment_info['config']['merchantPrivateKey']);
  58. $out_trade_no = $payment_notice['notice_sn'];//网页支付的订单在订单有效期内可以进行多次支付请求,但是需要注意的是每次请求的业务参数都要一致,交易时间也要保持一致。否则会报错“订单与已存在的订单信息不符”
  59. $body = $payment_notice['recharge_name']!=''?'购买钻石:'.$payment_notice['recharge_name']:'购买钻石:'.$payment_notice['diamonds'];//商品描述
  60. $total_fee = $money * 100;//订单金额单位为分
  61. $mch_create_ip = CLIENT_IP; //此参数不是固定的商户服务器IP,而是用户每次支付时使用的网络终端IP,否则的话会有不友好提示:“检测到您的IP地址发生变化,请注意支付安全”。
  62. $notify_url = 'http://live.huangjiaxiuchang.com/callback/payment/wxappsdk_notify.php';
  63. $date = array();
  64. $date['out_trade_no'] = $out_trade_no; //商户订单号:
  65. $date['body'] = $body;//商品描述:
  66. $date['total_fee'] =intval($total_fee);//总金额:
  67. $date['mch_create_ip'] = $mch_create_ip;//终端IP:
  68. $date['notify_url'] = $notify_url;//回调地址
  69. $pay = array('status'=>1,'error'=>'');
  70. $result = $wxappsdk->submitOrderInfo($date);
  71. $services = explode("|", $result['services']);
  72. if(!in_array("pay.weixin.app",$services)){
  73. $pay['status'] = 0;
  74. $pay['error'] = '支付失败SDK错误,请联系管理员';
  75. return $pay;
  76. }
  77. $pay['pay_info'] = $date['body'];
  78. $pay['payment_name'] = "微信SDK支付";
  79. $pay['pay_money'] = $date['total_fee'];
  80. $pay['pay_id'] = $payment_notice['id'];
  81. $pay['class_name'] = "Wxappsdk";
  82. $pay['token_id'] =$result['token_id'];
  83. $pay['appid'] =$payment_info['config']['merchantAppId'];
  84. //
  85. $pay['sdk_code'] = array("pay_sdk_type"=>"wxappsdk","config"=>
  86. array(
  87. "token_id"=>$result['token_id'],
  88. "appid"=>$payment_info['config']['merchantAppId'],
  89. )
  90. );
  91. return $pay;
  92. }
  93. public function response($request)
  94. {
  95. }
  96. public function notify($xml)
  97. {
  98. $payment = $GLOBALS['db']->getRow("select id,config from ".DB_PREFIX."payment where class_name='Wxappsdk'");
  99. $payment_info['config'] = unserialize($payment['config']);
  100. require_once(APP_ROOT_PATH.'system/payment/Wxappsdk/request.php');
  101. /**
  102. *此类文件是有关回调的数据处理文件,根据易宝回调进行数据处理
  103. */
  104. $wxappsdk = new Request($payment_info['config']['merchantaccount'],$payment_info['config']['merchantPrivateKey']);
  105. try {
  106. $return = $wxappsdk->callback($xml);
  107. $payment_notice_sn = $return['out_trade_no'];
  108. $outer_notice_sn = $return['out_transaction_id'];
  109. if ($return['status'] == 0){
  110. $payment_notice = $GLOBALS['db']->getRow("select * from ".DB_PREFIX."payment_notice where notice_sn = '".$payment_notice_sn."'");
  111. require_once APP_ROOT_PATH."system/libs/cart.php";
  112. $rs = payment_paid($payment_notice['notice_sn'],$outer_notice_sn);
  113. if($rs)
  114. {
  115. echo 'success';
  116. }
  117. else
  118. {
  119. echo 'fail';
  120. }
  121. }else{
  122. echo 'fail';
  123. }
  124. }catch (Exception $e) {
  125. // TODO:添加订单支付异常逻辑代码
  126. echo 'fail';
  127. }
  128. }
  129. function get_display_code(){
  130. }
  131. }
  132. ?>