ECSHOP 银联在线支付 PHP 银联商务
<?php/*** ECSHOP 银联在线支付* ============================================================================* 版权所有 2005-2010 上海商派网络科技有限公司,并保留所有权利。* 网站地址: http://www.ecshop.com;* ----------------------------------------------------------------------------* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和* 使用;不允许对程序代码以任何形式任何目的的再发布。* ============================================================================* $Author: douqinghua $* $Id: upop.php 17063 2010-03-25 06:35:46Z douqinghua $*/if (!defined('IN_ECS'))
{die('Hacking attempt');
}// 包含配置文件
$payment_lang = ROOT_PATH . 'languages/' .$GLOBALS['_CFG']['lang']. '/payment/upop.php';if (file_exists($payment_lang))
{global $_LANG;include_once($payment_lang);
}/* 模块的基本信息 */
if (isset($set_modules) && $set_modules == TRUE)
{$i = isset($modules) ? count($modules) : 0;/* 代码 */$modules[$i]['code'] = basename(__FILE__, '.php');/* 描述对应的语言项 */$modules[$i]['desc'] = 'upop_desc';/* 是否支持货到付款 */$modules[$i]['is_cod'] = '0';/* 是否支持在线支付 */$modules[$i]['is_online'] = '1';/* 作者 */$modules[$i]['author'] = 'ECSHOP TEAM';/* 网址 */$modules[$i]['website'] = 'http://www.ecshop.com';/* 版本号 */$modules[$i]['version'] = '1.0.0';/* 配置信息 */$modules[$i]['config'] = array(array('name' => 'upop_merAbbr', 'type' => 'text', 'value' => '商户名称'),array('name' => 'upop_account', 'type' => 'text', 'value' => ''),array('name' => 'upop_security_key', 'type' => 'text', 'value' => ''),);return;
}/*** 类*/
class UPOP
{/*** 生成支付代码* @param array $order 订单信息* @param array $payment 支付方式信息*/function get_code($order, $payment){// 初始化变量if (!defined('EC_CHARSET')){$charset = 'UTF-8';}else{$charset = strtoupper(EC_CHARSET);}$front_pay_url = 'https://unionpaysecure.com/api/Pay.action';$security_key = $payment['upop_security_key'];$merId = $payment['upop_account'];$orderNumber = $order['order_sn'] . '-' . $this->_formatSN($order['log_id']); $frontEndUrl = return_url(basename(__FILE__, '.php'));$backEndUrl = return_url(basename(__FILE__, '.php'));$merAbbr = $payment['upop_merAbbr'];$params = array("version" => '1.0.0', //接口版本"signMethod" => 'md5', //加密方式"charset" => $charset, //编码"transType" => '01', //交易类型"origQid" => '',"merId" => $merId, //收款账号"merAbbr" => $merAbbr, //商户名称"acqCode" => '',"merCode" => '',"commodityUrl" => '', //商品url"commodityName" => '', //商品名字"commodityUnitPrice" => '', //商品单价"commodityQuantity" => '', //商品数量"commodityDiscount" => '',"transferFee" => '',"orderNumber" => $orderNumber, //订单号,必须唯一"orderAmount" => $order['order_amount'] * 100, //交易金额 转化为分"orderCurrency" => '156', //交易币种,CURRENCY_CNY=>人民币"orderTime" => date('YmdHis'), //交易时间, YYYYmmhhddHHMMSS"customerIp" => $_SERVER['REMOTE_ADDR'], //用户IP"customerName" => '',"defaultPayType" => '',"defaultBankNumber" => '',"transTimeout" => '',"frontEndUrl" => $frontEndUrl, // 前台回调URL"backEndUrl" => $backEndUrl, // 后台回调URL"merReserved" => '' );$params['signature'] =$this->sign($params, $security_key,'md5');$button = "<input type='submit' value='" . $GLOBALS['_LANG']['upop_button'] . "' />";$html = $this->create_html($params,$front_pay_url,$button);return $html;}/*** 响应操作*/function respond(){$payment = get_payment('upop');$arr_args = array();$arr_reserved = array();if (is_array($_POST)) {$arr_args = $_POST;$cupReserved = isset($arr_args['cupReserved']) ? $arr_args['cupReserved'] : '';parse_str(substr($cupReserved, 1, -1), $arr_reserved); //去掉前后的{}}else {$cupReserved = '';$pattern = '/cupReserved=(\{.*?\})/';if (preg_match($pattern, $_POST, $match)) { //先提取cupReserved$cupReserved = $match[1];}//将cupReserved的value清除(因为含有&, parse_str没法正常处理)$args_r = preg_replace($pattern, 'cupReserved=', $_POST);parse_str($args_r, $arr_args);$arr_args['cupReserved'] = $cupReserved;parse_str(substr($cupReserved, 1, -1), $arr_reserved); //去掉前后的{}}//提取服务器端的签名if (!isset($arr_args['signature'])){return false;}//验证签名$signature=$this->sign($arr_args, $payment['upop_security_key'],'md5');if ($signature != $arr_args['signature']) {return false;}$arr_ret = array_merge($arr_args, $arr_reserved);unset($arr_ret['cupReserved']);if ($arr_ret['respCode'] != '00') {return false;}if(!strpos($arr_ret['orderNumber'], '-')) {return false;}$order_sn_arr = explode('-', $arr_ret['orderNumber']);$order_sn = $order_sn_arr['0'];$pay_id = intval($order_sn_arr['1']);$payment_amount = intval($arr_ret['settleAmount']);// 检查商户账号是否一致。if ($payment['upop_account'] != $arr_ret['merId']){return false;}// 检查价格是否一致if (!check_money($pay_id, $payment_amount/100)){return false;}// 如果未支付成功。if ($arr_ret['respCode'] != '00'){return false;}$action_note = $arr_ret['respCode'] . ':' . $arr_ret['respMsg'] . $GLOBALS['_LANG']['upop_txn_id'] . ':' . $arr_ret['qid'];// 完成订单。order_paid($pay_id, PS_PAYED, $action_note);//告诉用户交易完成return true;}/*** 格式订单号*/function _formatSN($sn){return str_repeat('0', 9 - strlen($sn)) . $sn;}function create_html($params,$front_pay_url,$button){$html = <<<eot<br /><form style="text-align:center;" id="pay_form" name="pay_form" action="{$front_pay_url}" method="post" target="_blank">
eot;foreach ($params as $key => $value) {$html .= " <input type=\"hidden\" name=\"{$key}\" id=\"{$key}\" value=\"{$value}\" />\n";}$html .= $button . "</form><br />";return $html;}function sign($params,$security_key,$sign_method){if (strtolower($sign_method) == "md5") {ksort($params);$sign_str = "";$sign_ignore_params=array('bank','signMethod','signature');foreach ($params as $key => $val){if (in_array($key,$sign_ignore_params)) {continue;}$sign_str .= sprintf("%s=%s&", $key, $val);}return md5($sign_str . md5($security_key));}else {exit("Unknown sign_method set in quickpay_conf");}}}
?>
ECSHOP 银联在线支付 PHP 银联商务相关推荐
- 银联在线支付 java_银联在线 网关支付 (JAVA版)
这一版本的编写是在我上一次博客的基础上写的,有不懂得童鞋可以先看下我的原先在线支付的博客,熟悉下:http://blog.csdn.net/yulei_qq/article/details/45197 ...
- 银联在线支付对接流程以及签名算法
银联在线支付 简介 银联在线支付支持PC网关.手机SDK.WAP网关.云闪付等多种支付场景,其中云闪付产品可以完美支持ApplePay.Samsung Pay.Huawei Pay等市面上常见的手机厂 ...
- 银联在线php支付接口,ecshop银联在线支付接口插件(官方版)
分享一个银联在线支付(UPOP)ecshop支付接口的插件,亲自用过.你只需放到ec对应的目录,然后进到后台"支付方式"页面安装就能调用了.希望能对你有用!! 此插件在ecshop ...
- 关于银联在线支付和短彩信接口的开发——总结
9月份开始做用二维码做闭环的一个在线订购景区门票的项目,其中这样做是很好的,用二维码连接了线上与线下的交易和兑券.银联在线支付接口(asp.net cs)做的很好,方便调用开发.就是处理回值的时候得找 ...
- java银联在线支付开发_银联在线支付案例代码
[实例简介] 银联在线支付的测试案例代码 [实例截图] [核心代码] PayOnLine └── PayOnLine ├── src │ ├── acp_sdk.properties │ └─ ...
- Firefox全面兼容中国银联“在线支付”
http://www.linuxdiyf.com/viewarticle.php?id=202865 来源: 驱动之家 昨日下午,中国银联正式推出了"在线支付"和"互联网 ...
- “银联在线支付”签约无需任何条件,个人也可以完成签约
申请条件:"银联在线支付"签约无需任何条件,个人也可以完成签约,只需要您购买我们开通好的企业支付宝,账户您自己管理,资金您自己操作(QQ3.0.5.7.1.0.4.3.9),或您也 ...
- html跳转qq浏览器,javascript,_银联在线支付接口,qq浏览器不能跳转,javascript - phpStudy...
银联在线支付接口,qq浏览器不能跳转 银联在线支付接口,qq浏览器不能跳转,其他浏览器可以跳转 //html代码 提交 确认充值 //js代码 function topupmoney() { //充值 ...
- 第三方支付平台:银联在线支付
前言 现将银联在线支付所需相关资料整理如下,前期资料仅涉及相关支付接口内容初步了解,不涉及具体技术实现环节. 银联商户注册所需信息 1.填写两方合作协议并打印二份盖章,一式二份(法定代表人签字盖公章并 ...
最新文章
- linux离线安装docker教程,Linux 离线安装docker的过程
- HTML5手机端几秒钟自动跳转
- java 圆桌_约瑟夫问题求解释(圆桌问题)Java
- 单片机的几种数字滤波算法
- docker版iOS超级签应用分发平台源码分享[带免签封装]
- 冲刺阶段一 11.15--11.21
- 老外大赞iPhone 12系列:全面屏版iPhone 4 外形史上最佳
- 找回被删并清空了回收站的文件
- CentOS7安装mysql数据库完整过程以及安装中遇到的各种问题的解决方案
- WSL2之kali安装界面kex
- mysql8连接 2002_ERROR 2002 mysql连接失败 解决方法
- Dell Inspiron 3443 BIOS升级问题解决
- 佳博打印机如何设置热敏打印
- 计算一幅图像的信噪比
- 实现阿里云DDNS解析
- sourcesafe.light 开源项目启动
- sqlmap tamper mysql_sqlmap tamper的使用
- 关于大数定律的讨论(转)
- 读书笔记-全面薪酬体系设计“6+1”
- java cos和native cos的区别