ECSHOP 银联电子支付(ChinaPay)插件 掉用JAVA签名

帮客户集成接口时候发现客户网站PHP版本达不到要求 只要调用JAVA来解决问题<?php

/**
 * ECSHOP 银联电子支付(ChinaPay)插件
 * ============================================================================
 * @author: qq:3037704620
 * @email: 3037704620#qq.com
 * @date: 2017-01-02
 */

if (!defined(‘IN_ECS‘))
{
    die(‘Hacking attempt‘);
}

$payment_lang = ROOT_PATH . ‘languages/‘ .$GLOBALS[‘_CFG‘][‘lang‘]. ‘/payment/chinapay.php‘;
include ROOT_PATH .‘includes/modules/payment/chinapay/common.php‘;
include ROOT_PATH .‘includes/modules/payment/chinapay/SecssUtil.class.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‘] = ‘chinapay_desc‘;

/* 是否支持货到付款 */
    $modules[$i][‘is_cod‘] = ‘0‘;

/* 是否支持在线支付 */
    $modules[$i][‘is_online‘] = ‘1‘;

/* 支付费用 */
    //$modules[$i][‘pay_fee‘] = ‘1.5%‘;

/* 作者 */
    $modules[$i][‘author‘] = ‘qq:3037704620‘;

/* 网址 */
    $modules[$i][‘website‘] = ‘http://www.chinapay.com‘;

/* 版本号 */
    $modules[$i][‘version‘] = ‘V2.8.3‘;

/* 配置信息 */
    $modules[$i][‘config‘] = array(
    array(‘name‘ => ‘MerId‘, ‘type‘ => ‘text‘, ‘value‘ => ‘000000000017‘)
    //array(‘name‘ => ‘chinapay_MerPrk‘, ‘type‘ => ‘text‘, ‘value‘ => ‘可以不填‘),
    //array(‘name‘ => ‘chinapay_PgPubk‘, ‘type‘ => ‘text‘, ‘value‘ => ‘可以不填‘)
    );

return;
}

/**
 * 类
 */
class chinapay
{
    /**
     * 构造函数
     * @access public
     * @param
     * @return void
     */
    private $securityPropFile = ‘‘;//配置文件
    private $pay_url = ‘‘;//配置文件
    function chinapay()
    {

//$this->pay_url="https://payment.chinapay.com/CTITS/service/rest/page/nref/000000000017/0/0/0/0/0";
        //$this->securityPropFile = ROOT_PATH."includes/modules/payment/chinapay/security.properties";

$this->securityPropFile = ROOT_PATH."includes/modules/payment/chinapay/security_test.properties";
        $this->pay_url="http://newpayment-test.chinapay.com/CTITS/service/rest/page/nref/000000000017/0/0/0/0/0";

}

function __construct()
    {
        $this->chinapay();
    }

/**
     * 生成支付代码
     * @param array $order 订单信息
     * @param array $payment 支付方式信息
     */
    function get_code($order, $payment)
    {
        //$MerId = trim($payment[‘chinapay_account‘]);
        $orderNo = pad(mt_rand(), "l", 16, "0");
        //echo $payment[‘MerId‘];
        /**
         * 配置
         * Enter description here ...
         * @var unknown_type
         */
        $Config=Array (
         ‘MerId‘ => trim($payment[‘MerId‘]),//商户号
        ‘MerOrderNo‘ =>pad(mt_rand(), "l", 16, "0") ,//订单长度16位置
        //‘MerOrderNo‘ =>ecshopsn2chinapaysn($order[‘order_sn‘],$payment[‘chinapay_account‘]),//订单长度16位置
        ‘OrderAmt‘ =>intval(floor($order[‘order_amount‘]*100)),
         ‘TranDate‘ => date(‘Ymd‘, time()) ,
         ‘TranTime‘ => date(‘His‘,time()),
         ‘TranType‘ => "0001"  ,
         ‘BusiType‘ => "0001"  ,
         ‘Version‘ => "20140728" ,
         ‘SplitType‘ =>" ",
         ‘SplitMethod‘ =>""  ,
         ‘MerSplitMsg‘ =>""  ,
         ‘BankInstNo‘ =>""  ,
         ‘PayTimeOut‘ =>""  ,
         ‘TimeStamp‘ => " ",
         ‘RemoteAddr‘ => " " ,
         ‘CurryNo‘ => "CNY" ,
         ‘AccessType‘ => "0"  ,
         ‘AcqCode‘ => "000000000000014"  ,
         ‘CommodityMsg‘ => "" ,
         ‘MerPageUrl‘ =>return_url(basename(__FILE__, ‘.php‘)),//返回地址
         ‘MerBgUrl‘ => return_url(basename(__FILE__, ‘.php‘)),//返回地址
         ‘MerResv‘ => $order[‘order_sn‘],
        // ‘TranReserved‘=>‘{" BusiId ":"00000001","P1":"123"," P2":"756"," P3":"123","P4":"23"}‘,
         ‘trans_BusiId‘ => " " ,
         ‘trans_P1‘ => ""  ,
         ‘trans_P2‘ => ""  ,
         ‘trans_P3‘ => ""  ,
         ‘trans_P4‘ => ""  ,
         ‘trans_P5‘ => ""  ,
         ‘trans_P6‘ => ""  ,
         ‘trans_P7‘ => " "  ,
         ‘trans_P8‘ => " "  ,
         ‘trans_P9‘ => " "  ,
         ‘trans_P10‘ =>" "
         );

/**
          * 签名部分开始
          * Enter description here ...
          * @var unknown_type
          */
         try{

require_once("http://localhost:8080/JavaBridgeTemplate621/java/Java.inc");
             java_set_file_encoding("utf-8");
             $map=new Java("java.util.HashMap");

foreach ($Config as $l=>$s){
                 $l=new Java("java.lang.String", $l);
                 $s=new Java("java.lang.String", $s);
                 $map->put($l, $s);// 商户号
             }
             
             
             $index=new Java("com.chinapay.util.index");
             $Path=new Java("java.lang.String", $this->securityPropFile);
             $index->quest=$map;

$respone=java_values($index->GetSign($Path));//读取签名信息
             $def_url = "<form name=‘payment‘ id=‘payment‘ action=‘".$this->pay_url."‘ method=‘POST‘ target=‘_blank‘>";
             $params = "TranReserved;MerId;MerOrderNo;OrderAmt;CurryNo;TranDate;SplitMethod;BusiType;MerPageUrl;MerBgUrl;SplitType;MerSplitMsg;PayTimeOut;MerResv;Version;BankInstNo;CommodityMsg;Signature;AccessType;AcqCode;OrderExpiryTime;TranType;RemoteAddr;Referred;TranTime;TimeStamp;CardTranData";
             foreach ($respone as $k => $v)
             {

if (strstr($params, $k))
                 {
                     $def_url .="<input type=‘text‘ name = ‘".$k."‘ value=‘".$v."‘/>";
                 }

}
             $def_url.= "<input type=‘submit‘ value=‘" . $GLOBALS[‘_LANG‘][‘pay_button‘] . "‘>";
             $def_url .= "</form>";
             return $def_url;

}
         catch (Exception $e)
         {
             return  "<br><font color=‘#FF0000‘>系统错误: ".$e."</font>";
         }
    }

/**
     * 响应操作
     */
    function respond()
    {
        $payment = get_payment(basename(__FILE__, ‘.php‘));
        $return=false;
        if (count($_POST) > 0)
        {

$MerOrderNo = trim($_POST[‘MerOrderNo‘]);
            $OrderStatus = trim($_POST[‘OrderStatus‘]);
            $MerResv=trim($_POST[‘MerResv‘]);
            if($OrderStatus==‘0000‘)
            {
                try
                {
                    require_once("http://localhost:8080/JavaBridgeTemplate621/java/Java.inc");
                    java_set_file_encoding("utf-8");
                    $resultMap=new Java("java.util.HashMap");
                    foreach ($_POST as $l=>$s)
                    {
                        $l=new Java("java.lang.String", $l);
                        $s=new Java("java.lang.String", $s);
                        $resultMap->put($l, $s);// 商户号
                    }
                    $SignUtil=new Java("com.chinapay.util.SignUtil");
                    //验证签名
                    if($SignUtil->verify($resultMap))
                    {
                        /* 改变订单状态 */
                        $order_id = get_order_id_by_sn($MerResv);
                        if(!$order_id)
                        {
                            $order_id = get_order_id_by_sn($MerResv, "true");//会员充值
                        }
                        order_paid($order_id,2);
                        $return=true;
                    }
                    else
             {
                 $return=false;
             }
            }

catch (Exception $e)
            {
                echo  "Caught exception: ".$e."\n";
            }
            
            }
        }
        return $return;
    }
}

?>

时间: 2024-10-17 08:12:18

ECSHOP 银联电子支付(ChinaPay)插件 掉用JAVA签名的相关文章

PHP商城网站绑定中国银联在线支付接口

PHP商城网站绑定中国银联在线支付接口用的越来越广泛,我们公司这几年给客户建立过很多的商城网站,今天就分析下怎么为自己的PHP商城网站接入中国银联在线支付端的接口.在使用前我们必须先申请成为中国银联在线支付的商户. 第一步:下载中国银联官方PHP支付接口文件 进入中国银联在线官方网站的商户服务网站,下载PHP的技术资料端口文件(https://online.unionpay.com/mer/pages/merser/index.jsp这是中国银联在线支付商户服务网站),点击右上角的“文档下载”

Phonegap 之 iOS银联在线支付(js调用ios端银联支付控件)

Phonegap项目,做支付的时候,当把网站打包到ios或android端成app后,在app上通过wap调用银联在线存在一个问题: 就是当从银联支付成功后,再从服务器返回到app客户端就很难实现. wap银联支付流程是这样:客户端---> 服务器(构建支付请求)--> 银联支付 ---> 返回到服务端(处理支付结果).所以对于手机网站银联支付没有问题,但是对于ios端app和android端app, 再通过wap支付,发现支付成功后,很难在回到app客户端了. 所以这里就必须借助Pho

浅谈第三方电子支付平台测试方法的研究

第三方支付平台的功能和结构特点 在信用方面,第三方支付平台作为中介,在网上交易的商家和消费者之间作一个信用的中转,通过改造支付流程来约束双方的行为,从而在一定程度上缓解彼此对双方信用的猜疑,增加对网上购物的可信度. 在技术层面,第三方支付平台承担安全保障和技术支持的作用,提供一系列的应用接口程序,支持多家银行的多卡种支付,将多家签约银行的支付方式整合到一个界面上,负责交易结算中心与银行的对接.银行与商家通过接入第三方支付平台实现二次结算,并采用国际先进SSL加密模式,在银行.消费者和商家之间传输

B2B商城电子商务平台网上商城系统支付通道申请第三方支付接口对接搭建 支付宝微信扫码网关网银银联快捷支付

需要了解 JR金融项目 区块链,比特币,p2p项目,B2B网关,现货资金盘,期货招商,股票配资,商品交易所 大盘的 金融支付 第三方支付,网关支付,网银支付,银行卡支付,话费卡支付,银联代扣,支付渠道,支付宝支付,微信支付,扫码支付,快捷支付,支付牌照申请,线上支付通道搭建,支付通道申请,支付接口对接,原生支付宝网关支付!独立后台,D0实时结算,API批量代付接口 JR / BC / QP 菠菜奔驰游戏等稳定安全通道!大量三方支付资质出售!请加QQ 2954704394 近年来,第三方支付发展势

github student pack中的digital ocean可以使用银联卡支付

申请了 github student pack却因为一直没有visita信用卡,而无法使用digital ocean的 $50,一直到今天,用中国银行借记卡成功支付. 方法是: (1)注册paypal账号,不需要绑定银行卡或信用卡. (2)打开digital ocean的welcome页面,那里会提示需要打入$5,支付方式可选“信用卡/借记卡”或者 “paypal”,选择paypal (3)进入支付页面,登陆paypal账户,输入银联卡(我的是中国银行)的卡号,然后填入后边的一些相关信息.点击“

王健林豪言:未来十年最暴利的五大行业: 电子支付,旅游,跨境电商,中端餐饮,豪车俱乐部

王健林豪言:未来十年最暴利的五大行业,有你从事的吗? 2017-05-12 04:32 来源:鲤鱼玩乐 NO1.电子支付 国际互联网迅速走向普及化,逐步从大学.科研机构走向企业和家庭,其功能也从信息共享演变为一种大众化的信息传播手段,商业贸易活动逐步进入这个王国.通过使用因特网,即降低了成本,也造就了更多的商业机会,电子商务技术从而得以发展,使其逐步成为了互联网应用的最大热点. NO2.旅游产业 全国共有各类旅游景区20976家,其中,A级旅游景区5573家.旅游景区已成为居民旅游消费的热点之一

使用Email的身份验证(OpenID)、电子支付,及Email的链接处理

使用Email的身份验证(OpenID).电子支付,及Email的链接处理 OpenID 注意,本文所描述的OpenID与公开的OpenID标准有所不同. 在博客网站发表文章或者在网店购物,应当可以直接用Email邮寄文章或订单,而不需要通过复杂的网站登录认证操作.OpenID暗示说,Email地址可以遵循标准的协议公开身份信息.例如,假定某人使用公司的Email地址[email protected],而公司提供OpenID服务,那么从网址http://openid.company.com/pe

php银联网页支付实现方法

本文实例讲述了php银联网页支付实现方法.分享给大家供大家参考.具体分析如下: 这里介绍的银联WAP支付功能,仅限消费功能. 1. PHP代码如下: 复制代码代码如下: <?phpnamespace common\services;class UnionPay{    /**     * 支付配置     * @var array     */    public $config = [];    /**     * 支付参数,提交到银联对应接口的所有参数     * @var array   

电子支付系统安全技术

转自 http://baike.1688.com/doc/view-d36110860.html 电子商务支付信息流动典型结构如图1所示.在图中,信任第三方是CA认证中心.商家和客户都必须到CA得到自己的证书,然后通过CA认证.很明显,各个部分信息传递,必须要经过加密处理:信息来源和目的,必须经过认在电子商务支付系统中,消费者和商家面临的威胁有: 虚假定单:假冒者以客户名义订购商品,而要求客户付款或返还商品: 付款后收不到商品: 商家发货后,得不到付款: 机密性丧失:PIN或口令在传输过程中丢失