PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > CMS教程 > ecshop教程 > 正文

    ecshop商城手机版支付宝支付

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:Ecshop 支付宝手机网页支付,针对ecshop wap手机版<?php/***ECSHOP支付宝手机网页插件www.bcty365.com*/if(!defined(&#39;IN_ECS&#39;)){...
    Ecshop 支付宝手机网页支付,针对ecshop wap手机版

    ecshop商城手机版支付宝支付

     
    1. <?php 
    2.  
    3. /** 
    4. * ECSHOP 支付宝手机网页插件www.bcty365.com
    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.  
    292. return true; 
    293. }else
    294. return false; 
    295.  
    296.  
    297. ?> 

     

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-104-2798-1.html
    相关热词搜索: