<?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 银联商务相关推荐

  1. 银联在线支付 java_银联在线 网关支付 (JAVA版)

    这一版本的编写是在我上一次博客的基础上写的,有不懂得童鞋可以先看下我的原先在线支付的博客,熟悉下:http://blog.csdn.net/yulei_qq/article/details/45197 ...

  2. 银联在线支付对接流程以及签名算法

    银联在线支付 简介 银联在线支付支持PC网关.手机SDK.WAP网关.云闪付等多种支付场景,其中云闪付产品可以完美支持ApplePay.Samsung Pay.Huawei Pay等市面上常见的手机厂 ...

  3. 银联在线php支付接口,ecshop银联在线支付接口插件(官方版)

    分享一个银联在线支付(UPOP)ecshop支付接口的插件,亲自用过.你只需放到ec对应的目录,然后进到后台"支付方式"页面安装就能调用了.希望能对你有用!! 此插件在ecshop ...

  4. 关于银联在线支付和短彩信接口的开发——总结

    9月份开始做用二维码做闭环的一个在线订购景区门票的项目,其中这样做是很好的,用二维码连接了线上与线下的交易和兑券.银联在线支付接口(asp.net cs)做的很好,方便调用开发.就是处理回值的时候得找 ...

  5. java银联在线支付开发_银联在线支付案例代码

    [实例简介] 银联在线支付的测试案例代码 [实例截图] [核心代码] PayOnLine └── PayOnLine ├── src │   ├── acp_sdk.properties │   └─ ...

  6. Firefox全面兼容中国银联“在线支付”

    http://www.linuxdiyf.com/viewarticle.php?id=202865 来源: 驱动之家 昨日下午,中国银联正式推出了"在线支付"和"互联网 ...

  7. “银联在线支付”签约无需任何条件,个人也可以完成签约

    申请条件:"银联在线支付"签约无需任何条件,个人也可以完成签约,只需要您购买我们开通好的企业支付宝,账户您自己管理,资金您自己操作(QQ3.0.5.7.1.0.4.3.9),或您也 ...

  8. html跳转qq浏览器,javascript,_银联在线支付接口,qq浏览器不能跳转,javascript - phpStudy...

    银联在线支付接口,qq浏览器不能跳转 银联在线支付接口,qq浏览器不能跳转,其他浏览器可以跳转 //html代码 提交 确认充值 //js代码 function topupmoney() { //充值 ...

  9. 第三方支付平台:银联在线支付

    前言 现将银联在线支付所需相关资料整理如下,前期资料仅涉及相关支付接口内容初步了解,不涉及具体技术实现环节. 银联商户注册所需信息 1.填写两方合作协议并打印二份盖章,一式二份(法定代表人签字盖公章并 ...

最新文章

  1. linux离线安装docker教程,Linux 离线安装docker的过程
  2. HTML5手机端几秒钟自动跳转
  3. java 圆桌_约瑟夫问题求解释(圆桌问题)Java
  4. 单片机的几种数字滤波算法
  5. docker版iOS超级签应用分发平台源码分享[带免签封装]
  6. 冲刺阶段一 11.15--11.21
  7. 老外大赞iPhone 12系列:全面屏版iPhone 4 外形史上最佳
  8. 找回被删并清空了回收站的文件
  9. CentOS7安装mysql数据库完整过程以及安装中遇到的各种问题的解决方案
  10. WSL2之kali安装界面kex
  11. mysql8连接 2002_ERROR 2002 mysql连接失败 解决方法
  12. Dell Inspiron 3443 BIOS升级问题解决
  13. 佳博打印机如何设置热敏打印
  14. 计算一幅图像的信噪比
  15. 实现阿里云DDNS解析
  16. sourcesafe.light 开源项目启动
  17. sqlmap tamper mysql_sqlmap tamper的使用
  18. 关于大数定律的讨论(转)
  19. 读书笔记-全面薪酬体系设计“6+1”
  20. java cos和native cos的区别

热门文章

  1. 文本相关_SAP刘梦_新浪博客
  2. ALV清缓存_SAP刘梦_新浪博客
  3. PPPoE拨号过程解析
  4. 【Benewake(北醒)】 单点系列标品介绍
  5. jQuery显示隐藏
  6. java求水电费_水电煤缴费示例代码
  7. 免费开源的商城系统!可商用!推荐给你
  8. 2021全球与中国波长选择开关(WSS)市场现状及未来发展趋势
  9. 【电力电子技术】 THE FLYBACK 电路
  10. 程序人生之——(释怀)