JubaoWxsdk_payment.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. $payment_lang = array(
  10. 'name' => '聚宝付微信支付SDK',
  11. 'partner_id' => '商户编号',
  12. /* 'merchantAppId'=> '商户APPID',
  13. 'merchantPrivateKey'=> '商户密钥',*/
  14. );
  15. $config = array(
  16. 'partner_id' => array(
  17. 'INPUT_TYPE' => '0',
  18. ), //商户编号
  19. );
  20. /* 模块的基本信息 */
  21. if (isset($read_modules) && $read_modules == true)
  22. {
  23. $module['class_name'] = 'JubaoWxsdk';
  24. /* 名称 */
  25. $module['name'] = $payment_lang['name'];
  26. /* 支付方式:1:在线支付;0:线下支付 2:仅wap支付 3:仅app支付 4:兼容wap和app*/
  27. $module['online_pay'] = '4';
  28. /* 配送 */
  29. $module['config'] = $config;
  30. $module['lang'] = $payment_lang;
  31. $module['reg_url'] = 'http://www.jubaopay.com/api/register.htm';
  32. return $module;
  33. }
  34. // 易宝支付模型
  35. require_once(APP_ROOT_PATH.'system/libs/payment.php');
  36. class JubaoWxsdk_payment implements payment {
  37. public function get_payment_code($payment_notice_id)
  38. {
  39. $payment_notice = $GLOBALS['db']->getRow("select * from ".DB_PREFIX."payment_notice where id = ".$payment_notice_id);
  40. $money = round($payment_notice['money'],2);
  41. $payment_info = $GLOBALS['db']->getRow("select id,config,logo from ".DB_PREFIX."payment where id=".intval($payment_notice['payment_id']));
  42. $payment_info['config'] = unserialize($payment_info['config']);
  43. $m_config = load_auto_cache("m_config");
  44. $title_name = $m_config['ticket_name'];
  45. if($title_name=='')$title_name = '虚拟印币';
  46. $subject = msubstr($title_name,0,40);
  47. require_once APP_ROOT_PATH . "system/payment/Jubaosdk/jubaopay.php";
  48. $jubaopay=new jubaopay(APP_ROOT_PATH . "system/payment/Jubaosdk/jubaopay.ini");
  49. $payid=$payment_notice['notice_sn'];
  50. $partnerid=$payment_info['config']['partner_id'];
  51. $amount=$money;
  52. $payerName=$payment_notice['user_id'];
  53. $playerid = $GLOBALS['db']->getOne("select nick_name from ".DB_PREFIX."user where id=".$payerName);
  54. $remark=$subject;
  55. $returnURL= 'http://live.huangjiaxiuchang.com/callback/payment/jubaowxapp_response.php'; // 可在商户后台设置
  56. $callBackURL= 'http://live.huangjiaxiuchang.com/callback/payment/jubaowxapp_notify.php'; // 可在商户后台设置
  57. $goodsName=$subject;
  58. //////////////////////////////////////////////////////////////////////////////////////////////////
  59. //商户利用支付订单(payid)和商户号(mobile)进行对账查询
  60. $jubaopay->setEncrypt("payid", $payid);
  61. $jubaopay->setEncrypt("partnerid", $partnerid);
  62. $jubaopay->setEncrypt("amount", $amount);
  63. $jubaopay->setEncrypt("payerName", $payerName);
  64. $jubaopay->setEncrypt("remark", $remark);
  65. $jubaopay->setEncrypt("returnURL", $returnURL);
  66. $jubaopay->setEncrypt("callBackURL", $callBackURL);
  67. $jubaopay->setEncrypt("goodsName", $goodsName);
  68. $jubaopay->interpret();
  69. $message=$jubaopay->message;
  70. $signature=$jubaopay->signature;
  71. //
  72. $pay['sdk_code'] = array("pay_sdk_type"=>"JubaoWxsdk","config"=>
  73. array(
  74. "partnerid"=>$partnerid,
  75. "playerid"=>$playerid,
  76. "goodsname"=>$goodsName,
  77. "amount"=>$amount,
  78. "payid"=>$payid,
  79. "withType"=>1
  80. )
  81. );
  82. //log_result($pay);
  83. return $pay;
  84. }
  85. public function response($request)
  86. {
  87. log_result('=response=');
  88. log_result($request);
  89. $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='JubaoWxsdk'");
  90. $payment['config'] = unserialize($payment['config']);
  91. require_once APP_ROOT_PATH . "system/payment/Jubaosdk/jubaopay.php";
  92. $jubaopay=new jubaopay(APP_ROOT_PATH . "system/payment/Jubaosdk/jubaopay.ini");
  93. $message=$request["message"];
  94. $signature=$request["signature"];
  95. $jubaopay->decrypt($message);
  96. // 校验签名,然后进行业务处理
  97. $result=$jubaopay->verify($signature);
  98. if($result == 1) {
  99. $payment_notice_sn = $jubaopay->getEncrypt("payid");
  100. $outer_notice_sn = $jubaopay->getEncrypt("orderNo");
  101. $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $payment_notice_sn . "'");
  102. require_once APP_ROOT_PATH . "system/libs/cart.php";
  103. $rs = payment_paid($payment_notice['notice_sn'],$outer_notice_sn);
  104. if($rs['status']==1){
  105. echo "支付成功";
  106. } else {
  107. echo "支付成功,回调失败";
  108. }
  109. } else {
  110. echo "支付失败";
  111. }
  112. }
  113. public function notify($request)
  114. {
  115. $payment = $GLOBALS['db']->getRow("select id,config from ".DB_PREFIX."payment where class_name='JubaoWxsdk'");
  116. $payment_info['config'] = unserialize($payment['config']);
  117. require_once APP_ROOT_PATH . "system/payment/Jubaosdk/jubaopay.php";
  118. $jubaopay=new jubaopay(APP_ROOT_PATH . "system/payment/Jubaosdk/jubaopay.ini");
  119. $message=$request["message"];
  120. $signature=$request["signature"];
  121. $jubaopay->decrypt($message);
  122. // 校验签名,然后进行业务处理
  123. $result=$jubaopay->verify($signature);
  124. if ($result==1){
  125. $payment_notice_sn = $jubaopay->getEncrypt("payid");
  126. $outer_notice_sn = $jubaopay->getEncrypt("orderNo");
  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)
  131. {
  132. echo 'success';
  133. }
  134. else
  135. {
  136. echo 'fail';
  137. }
  138. }else{
  139. echo 'fail';
  140. }
  141. }
  142. function get_display_code(){
  143. }
  144. }
  145. ?>