当前位置:首页 > CMS教程 > ecshop > 列表

Ecshop 支付宝手机网页支付免费版

发布:smiling 来源: PHP粉丝网  添加日期:2015-12-24 13:51:59 浏览: 评论:0 

Ecshop手机网页版本支持在网上找了很多需要花钱购买了,在这里小编整理了一个Ecshop 支付宝手机网页支付免费版供大家参考.

Ecshop 支付宝手机网页支付,针对ecshop wap手机版

  1. <?php 
  2.  
  3. /** 
  4. * ECSHOP 支付宝手机网页插件 
  5. */ 
  6.  
  7. if (!defined('IN_ECS')) 
  8. die('Hacking attempt'); 
  9.  
  10. $payment_lang = ROOT_PATH . 'languages/' .$GLOBALS['_CFG']['lang']. '/payment/alipay_wap.php'
  11.  
  12. if (file_exists($payment_lang)) 
  13. global $_LANG
  14.  
  15. include_once($payment_lang); 
  16.  
  17. /* 模块的基本信息 */ 
  18. if (isset($set_modules) && $set_modules == TRUE) 
  19. $i = isset($modules) ? count($modules) : 0; 
  20.  
  21. /* 代码 */ 
  22. $modules[$i]['code'] = basename(__FILE__'.php'); 
  23.  
  24. /* 描述对应的语言项 */ 
  25. $modules[$i]['desc'] = 'alipay_wap_desc'
  26.  
  27. /* 是否支持货到付款 */ 
  28. $modules[$i]['is_cod'] = '0'
  29.  
  30. /* 是否支持在线支付 */ 
  31. $modules[$i]['is_online'] = '1'
  32.  
  33. /* 作者 */ 
  34. $modules[$i]['author'] = 'ECSHOP TEAM'
  35.  
  36. /* 网址 */ 
  37. $modules[$i]['website'] = 'http://www.alipay.com'
  38.  
  39. /* 版本号 */ 
  40. $modules[$i]['version'] = '1.0.2'
  41.  
  42. /* 配置信息 共用?? */ 
  43. $modules[$i]['config'] = array
  44. array('name' => 'alipay_account''type' => 'text''value' => ''), 
  45. array('name' => 'alipay_key''type' => 'text''value' => ''), 
  46. array('name' => 'alipay_partner''type' => 'text''value' => ''), 
  47. array('name' => 'alipay_pay_method''type' => 'select''value' => ''
  48. ); 
  49.  
  50. return
  51.  
  52. /** 
  53. * 类 
  54. */ 
  55. class alipay_wap 
  56.  
  57. /** 
  58. * 构造函数 
  59. * 
  60. * @access public 
  61. * @param 
  62. * 
  63. * @return void 
  64. */ 
  65. function alipay() 
  66.  
  67. function __construct() 
  68. $this->alipay(); 
  69.  
  70. /** 
  71. * 生成支付代码 
  72. * @param array $order 订单信息 
  73. * @param array $payment 支付方式信息 
  74. */ 
  75. function get_code($order$payment
  76.  
  77. if (!defined('EC_CHARSET')) 
  78. $charset = 'utf-8'
  79. else 
  80. $charset = EC_CHARSET; 
  81.  
  82. //合作身份者id,以2088开头的16位纯数字 
  83. $alipay_config['partner'] = $payment['alipay_partner']; 
  84.  
  85. //签名方式 不需修改 
  86. $alipay_config['sign_type'] = '0001'
  87.  
  88. //安全检验码,以数字和字母组成的32位字符 
  89. //如果签名方式设置为“MD5”时,请设置该参数 
  90. //$alipay_config['key'] = $payment['alipay_key']; 
  91.  
  92. //商户的私钥(后缀是.pen)文件相对路径 
  93. //如果签名方式设置为“0001”时,请设置该参数 
  94. $alipay_config['private_key_path'] = dirname(__FILE__)."/alipay_wap/key/rsa_private_key.pem"
  95.  
  96. //支付宝公钥(后缀是.pen)文件相对路径 
  97. //如果签名方式设置为“0001”时,请设置该参数 
  98. $alipay_config['ali_public_key_path']= dirname(__FILE__)."/alipay_wap/key/alipay_public_key.pem"
  99. //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 
  100.  
  101. //字符编码格式 目前支持 gbk 或 utf-8 
  102. $alipay_config['input_charset']= 'utf-8'
  103.  
  104. //ca证书路径地址,用于curl中ssl校验 
  105. //请保证cacert.pem文件在当前文件夹目录中 
  106. $alipay_config['cacert'] = dirname(__FILE__)."/alipay_wap/cacert.pem"
  107.  
  108. //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http 
  109. $alipay_config['transport'] = 'http'
  110.  
  111. require_once(dirname(__FILE__)."/alipay_wap/lib/alipay_submit.class.php"); 
  112.  
  113. //返回格式 
  114. $format = "xml"
  115. //必填,不需要修改 
  116.  
  117. //返回格式 
  118. $v = "2.0"
  119. //必填,不需要修改 
  120.  
  121. //请求号 
  122. $req_id = date('Ymdhis'); 
  123. //必填,须保证每次请求都是唯一 
  124.  
  125. //**req_data详细信息** 
  126.  
  127. //服务器异步通知页面路径 
  128. $notify_url = return_url(basename(__FILE__'.php')); 
  129. //需http://格式的完整路径,不允许加?id=123这类自定义参数 
  130.  
  131. //页面跳转同步通知页面路径 
  132. $call_back_url = return_url(basename(__FILE__'.php')); 
  133. //需http://格式的完整路径,不允许加?id=123这类自定义参数 
  134.  
  135. //操作中断返回地址 
  136. $merchant_url = $GLOBALS['ecs']->url(); 
  137. //用户付款中途退出返回商户的地址。需http://格式的完整路径,不允许加?id=123这类自定义参数 
  138.  
  139. //卖家支付宝帐户 
  140. $seller_email = $payment['alipay_account']; 
  141. //必填 
  142.  
  143. //商户订单号 
  144. $out_trade_no = $order['order_sn'] . $order['log_id']; 
  145. //商户网站订单系统中唯一订单号,必填 
  146.  
  147. //订单名称 
  148. $subject = $order['order_sn']; 
  149. //必填 
  150.  
  151. //付款金额 
  152. $total_fee = $order['order_amount']; 
  153. //必填 
  154.  
  155. //请求业务参数详细 
  156. $req_data = '<direct_trade_create_req><notify_url>' . $notify_url . '</notify_url><call_back_url>' . $call_back_url . '</call_back_url><seller_account_name>' . $seller_email . '</seller_account_name><out_trade_no>' . $out_trade_no . '</out_trade_no><subject>' . $subject . '</subject><total_fee>' . $total_fee . '</total_fee><merchant_url>' . $merchant_url . '</merchant_url></direct_trade_create_req>'
  157. //必填 
  158.  
  159. /************************************************************/ 
  160.  
  161. //构造要请求的参数数组,无需改动 
  162. $para_token = array
  163. "service" => "alipay.wap.trade.create.direct"
  164. "partner" => trim($alipay_config['partner']), 
  165. "sec_id" => trim($alipay_config['sign_type']), 
  166. "format" => $format
  167. "v" => $v
  168. "req_id" => $req_id
  169. "req_data" => $req_data
  170. "_input_charset" => trim(strtolower($alipay_config['input_charset'])) 
  171. ); 
  172.  
  173. //建立请求 
  174. $alipaySubmit = new AlipaySubmit($alipay_config); 
  175. $html_text = $alipaySubmit->buildRequestHttp($para_token); 
  176.  
  177. //URLDECODE返回的信息 
  178. $html_text = urldecode($html_text); 
  179.  
  180. //解析远程模拟提交后返回的信息 
  181. $para_html_text = $alipaySubmit->parseResponse($html_text); 
  182.  
  183. //获取request_token 
  184. $request_token = $para_html_text['request_token']; 
  185.  
  186. /**************************根据授权码token调用交易接口alipay.wap.auth.authAndExecute**************************/ 
  187.  
  188. //业务详细 
  189. $req_data = '<auth_and_execute_req><request_token>' . $request_token . '</request_token></auth_and_execute_req>'
  190. //必填 
  191.  
  192. //构造要请求的参数数组,无需改动 
  193. $parameter = array
  194. "service" => "alipay.wap.auth.authAndExecute"
  195. "partner" => trim($alipay_config['partner']), 
  196. "sec_id" => trim($alipay_config['sign_type']), 
  197. "format" => $format
  198. "v" => $v
  199. "req_id" => $req_id
  200. "req_data" => $req_data
  201. "_input_charset" => trim(strtolower($alipay_config['input_charset'])) 
  202. ); 
  203.  
  204. //建立请求 
  205. $alipaySubmit = new AlipaySubmit($alipay_config); 
  206. $html_text = $alipaySubmit->buildRequestForm($parameter'get''进行付款'); 
  207. return $html_text
  208.  
  209. /** 
  210. * 响应操作 
  211. */ 
  212. function respond() 
  213. if (!emptyempty($_POST)) 
  214. foreach($_POST as $key => $data
  215. $_GET[$key] = $data
  216.  
  217. log_write($_GET'alipay_wap'); 
  218. $payment = get_payment($_GET['code']); 
  219. $seller_email = rawurldecode($_GET['seller_email']); 
  220. $order_sn = str_replace($_GET['subject'], ''$_GET['out_trade_no']); 
  221. $order_sn = trim($order_sn); 
  222.  
  223. /* 检查数字签名是否正确 */ 
  224. ksort($_GET); 
  225. reset($_GET); 
  226.  
  227. //合作身份者id,以2088开头的16位纯数字 
  228. $alipay_config['partner'] = $payment['alipay_partner']; 
  229.  
  230. //签名方式 不需修改 
  231. $alipay_config['sign_type'] = '0001'
  232.  
  233. //安全检验码,以数字和字母组成的32位字符 
  234. //如果签名方式设置为“MD5”时,请设置该参数 
  235. //$alipay_config['key'] = $payment['alipay_key']; 
  236.  
  237. //商户的私钥(后缀是.pen)文件相对路径 
  238. //如果签名方式设置为“0001”时,请设置该参数 
  239. $alipay_config['private_key_path'] = dirname(__FILE__)."/alipay_wap/key/rsa_private_key.pem"
  240.  
  241. //支付宝公钥(后缀是.pen)文件相对路径 
  242. //如果签名方式设置为“0001”时,请设置该参数 
  243. $alipay_config['ali_public_key_path']= dirname(__FILE__)."/alipay_wap/key/alipay_public_key.pem"
  244. //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 
  245.  
  246. //字符编码格式 目前支持 gbk 或 utf-8 
  247. $alipay_config['input_charset']= 'utf-8'
  248.  
  249. //ca证书路径地址,用于curl中ssl校验 
  250. //请保证cacert.pem文件在当前文件夹目录中 
  251. $alipay_config['cacert'] = dirname(__FILE__)."/alipay_wap/cacert.pem"
  252.  
  253. //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http 
  254. $alipay_config['transport'] = 'http'
  255.  
  256. require_once(dirname(__FILE__)."/alipay_wap/lib/alipay_notify.class.php"); 
  257.  
  258. //计算得出通知验证结果 
  259. $alipayNotify = new AlipayNotify($alipay_config); 
  260. $verify_result = $alipayNotify->verifyNotify(); 
  261.  
  262. if(!$verify_result) {//验证不成功 
  263. return false; 
  264.  
  265. $notify_data = $alipayNotify->decrypt($_GET['notify_data']); 
  266.  
  267. $doc = new DOMDocument(); 
  268. $doc->loadXML($notify_data); 
  269.  
  270. if( ! emptyempty($doc->getElementsByTagName( "notify" )->item(0)->nodeValue) ) { 
  271. //商户订单号 
  272. $out_trade_no = $doc->getElementsByTagName( "out_trade_no" )->item(0)->nodeValue; 
  273. $out_trade_no = str_replace($_GET['subject'], ''$out_trade_no); 
  274. $out_trade_no = trim($out_trade_no); 
  275. //支付宝交易号 
  276. $trade_no = $doc->getElementsByTagName( "trade_no" )->item(0)->nodeValue; 
  277. //交易状态 
  278. $trade_status = $doc->getElementsByTagName( "trade_status" )->item(0)->nodeValue; 
  279.  
  280. /* 检查支付的金额是否相符 */ 
  281. if (!check_money($out_trade_no$_GET['total_fee'])) 
  282. return false; 
  283.  
  284. if($_GET['trade_status'] == 'TRADE_FINISHED') { 
  285. /* 改变订单状态 */ 
  286. order_paid($out_trade_no); 
  287. return true; 
  288. }else if ($_GET['trade_status'] == 'TRADE_SUCCESS') { 
  289. /* 改变订单状态 */ 
  290. order_paid($out_trade_no, 2); 
  291. //phpfensi.com 
  292. return true; 
  293. }else
  294. return false; 
  295.  
  296.  
  297. ?> 

Tags: Ecshop支付宝 Ecshop网页支付

分享到: