给系统(只适合版本6.0)增加京东支付,系统原本是没有京东支付,

1、先在met_pay_config表中,增加京东支付参数,7=京东支付

2、在系统中,浏览器在手机状态下增加京东支付

路径:\app\system\pay\web\include\class      interface_pay.class.php

  public function get_pay_list() {global $_M;$return = array();$query = "SELECT * FROM {$_M['table'][pay_config]} WHERE name='payment_type' and lang='{$_M['lang']}'";$payment_type = DB::get_one($query);$list = explode('|', $payment_type['value']);$url = "{$_M['url']['site']}pay/app.php?paytype=";if($this->is_weixin()){//微信端if(strstr($payment_type['value'], '6')){$openId = $this->weixinopenId();$return['weixin_h5']['have'] = 1;$return['weixin_h5']['url'] = $url.'6';$return['weixin_h5']['check_url'] = "{$_M['url']['site']}pay/orderquery.php?paytype=1&out_trade_no=";}if(strstr($payment_type['value'], '3')){$return['alipay']['have'] = 1;$return['alipay']['url'] = $url.'3';}}else if($this->is_mobile()){//是移动端,就出现下面这些支付方式1if(strstr($payment_type['value'], '3')){$return['alipay']['have'] = 1;$return['alipay']['url'] = $url.'3';}if(strstr($payment_type['value'], '5')){$return['paypal']['have'] = 1;$return['paypal']['url'] = $url.'5';}if(strstr($payment_type['value'], '4')){$return['upay']['have'] = 1;$return['upay']['url'] = $url.'4';}if(strstr($payment_type['value'], '7')){//京东支付$return['jd']['have'] = 1;$return['jd']['url'] = $url.'7';}//         if(strstr($payment_type['value'], '6')){//微信公众号支付
//              //$openId = $this->weixinopenId();
//              $return['weixin_h5']['have'] = 1;
//              $return['weixin_h5']['url'] = $url.'6';
//              $return['weixin_h5']['check_url'] = "{$_M['url']['site']}pay/orderquery.php?paytype=1&out_trade_no=";
//          }if(strstr($payment_type['value'], '9')){//微信H5支付//$out_trade_no=date('YmdHis').rand(1, 100000);$return['weixin_jspay']['have'] = 1;$return['weixin_jspay']['url'] = $url.'9';//$return['weixin_jspay']['check_url'] = "{$_M['url']['site']}pay/orderquery.php?paytype=9&out_trade_no=";}}else{//其它端,比如PCif(strstr($payment_type['value'], '1')){$return['weixin']['have'] = 1;$return['weixin']['url'] = $url.'1';$return['weixin']['check_url'] = "{$_M['url']['site']}pay/orderquery.php?paytype=1&out_trade_no=";}if(strstr($payment_type['value'], '2')){$return['tenpay']['have'] = 1;$return['tenpay']['url'] = $url.'2';}if(strstr($payment_type['value'], '3')){$return['alipay']['have'] = 1;$return['alipay']['url'] = $url.'3';}if(strstr($payment_type['value'], '5')){$return['paypal']['have'] = 1;$return['paypal']['url'] = $url.'5';}if(strstr($payment_type['value'], '4')){$return['upay']['have'] = 1;$return['upay']['url'] = $url.'4';}if(strstr($payment_type['value'], '7')){$return['jd']['have'] = 1;$return['jd']['url'] = $url.'7';}}return $return;}

3、在前端模块中增加京东支付链接

\app\app\shop\web\templates\met      shop_pay_order.php

<!--
EOT;
}
if($pay_list['paypal']){
echo <<<EOT
--><li class="text-xs-center pay-order-union" data-toggle="modal" data-target="#pay-order-modal"><a class="block cover pay-online" href="javascript:;" data-url="{$pay_list['paypal']['url']}" target="_blank"><img src="{$_M[url][shop_ui]}static/img/paypal.png" class='img-fluid inline-block'/></a></li>
<!--
EOT;
}
if($pay_list['jd']){
echo <<<EOT
--><li class="text-xs-center pay-order-union" data-toggle="modal" data-target="#pay-order-modal"><a class="block cover pay-online" href="javascript:;" data-url="{$pay_list['jd']['url']}" target="_blank"><img src="{$_M[url][shop_ui]}static/img/jd.png" class='img-fluid inline-block'/></a></li>
<!--
EOT;
}
$disabled = $user_have_balance?'':' disabled';
$balanceinput = $user_have_balance?'data-target="#balanceinput"':'';
$hide = $user_have_balance?' hidden':'';
$validation=$user_have_balance?' class="met-form-validation"':'';$price=substr($order[tprice_str], 0, -3);
echo <<<EOT
-->

4、支付的时候转到H5支付

\app\system\pay\web    app.class.php

5、增加京东支付  路径:\app\system\pay\web\app.class

            case 7://京东return $this->Payment_jd($date);break;

增加Payment_jd函数

    public function Payment_jd($date) {//京东支付$jd = load::mod_class('pay/web/jd.class.php', 'new');      $jd->jd($date);}

6、新增加jd.class.php类文件。路径在:\app\system\pay\web\

<?phpdefined('IN_MET') or exit('No permission');
ini_set('date.timezone','Asia/Shanghai');
require_once "jd/common/ConfigUtil.php";
require_once "jd/common/SignUtil.php";
require_once "jd/common/TDESUtil.php";
require_once "jd/action/CallBack.php";
//require_once "jd/action/AsynNotifyAction.php";
load::mod_class('pay/web/pay');
class jd extends pay {public $jdpay_config;public function __construct() {global $_M;parent::__construct();//这些参数都只能是字符形式,不能是数字//$jd_config = jsondecode($_M['config']['jdpay_config']);
//       $this->jdpay_config['jd_version']          = "V2.0";
//         $this->jdpay_config['jd_merchant']          = "11000002305";
//         $this->jdpay_config['jd_currency']          = "CNY";
//         $this->jdpay_config['jd_callbackUrl'] = "";//支付成功后跳转的URL
//         $this->jdpay_config['jd_notifyUrl']   = "";//支付完成后,异步通知商户相关支付结果,此url外网必须能够访问
//         $this->jdpay_config['jd_userId'] = "sh0000da@163.com";//京东登录帐号
//       $this->jdpay_config['jd_orderType'] = "1";//订单类型 0-实物,1-虚拟
//       $this->jdpay_config['jd_saveUrl_pc'] = "https://wepay.jd.com/jdpay/saveOrder";//PC端调用地址
//       $this->jdpay_config['jd_saveUrl_wap'] = "https://h5pay.jd.com/jdpay/saveOrder";//H5端调用地址}/*** 订单参数提交*/public function jd($date) {global $_M;$tools = new SignUtil();$tetls = new TDESUtil();//var_dump($_M[config]["met_weburl"]);die;$version  = "V2.0";// 版本号$merchant = "11000012005";// 商户编号$device="";//商户门店号$tradeNum=$date['out_trade_no'];//订单号  商户提供的唯一交易流水号(字母和数字)$tradeName=$date['subject'];//商户提供的订单的标题/商品名称/关键字等$tradeDesc=$date['body'];//商户提供的订单的具体描述信息$tradeTime=date('YmdHis');//订单生成时间,格式为“yyyyMMddHHmmss”//$amount = $date['total_fee'];// 订单金额,系统价格单位:元,京东是分$amount = $date['total_fee']*100;// 订单金额,系统价格单位:元,京东是分$amount=strval($amount);//转为字符串$currency = "CNY";// 币种$note="";//商户备注$callbackUrl= $_M[config]["met_weburl"]."pay/return.php";// 支付成功后跳转的URL$notifyUrl= $_M[config]["met_weburl"]."pay/notify.php";// 支付完成后,异步通知商户相关支付结果,此url外网必须能够访问$ip="";$userType="";$userId="shfgdgd000a@163.com";//京东金融登录用户名$expireTime="";$orderType= "1";//订单类型 0-实物,1-虚拟  $industryCategoryCode="";$specCardNo="";$specId="";$specName="";$unSignKeyList = array ("sign");$desKey = "RvLc3GEfdgdgdf45454dfgdg12c2KGZ5h";//商户DES密钥//组成数组,用来验证$param["version"]=$version;$param["merchant"]=$merchant;$param["device"]=$device;$param["tradeNum"]=$tradeNum;$param["tradeName"]=$tradeName;$param["tradeDesc"]=$tradeDesc;$param["tradeTime"]= $tradeTime;$param["amount"]= $amount;$param["currency"]= $currency;$param["note"]= $note;$param["callbackUrl"]= $callbackUrl;$param["notifyUrl"]= $notifyUrl;$param["ip"]= $ip;$param["specCardNo"]= $specCardNo;$param["specId"]= $specId;$param["specName"]= $specName;$param["userType"]= $userType;$param["userId"]= $userId;$param["expireTime"]= $expireTime;$param["orderType"]= $orderType;$param["industryCategoryCode"]= $industryCategoryCode;$sign  = $tools->signWithoutToHex($param, $unSignKeyList);//$sign = SignUtil::signWithoutToHex($param, $unSignKeyList);//$sign = SignUtil::signWithoutToHex($param, $unSignKeyList);//var_dump($sign);die;$keys = base64_decode($desKey);if($device != null && $device!=""){//$device_1=TDESUtil::encrypt2HexStr($keys, $device);$device  = $tetls->encrypt2HexStr($keys, $device);}//$tradeNum_1=TDESUtil::encrypt2HexStr($keys, $tradeNum);$tradeNum=$tetls->encrypt2HexStr($keys, $tradeNum);if($tradeName != null && $tradeName!=""){//$tradeName_1=TDESUtil::encrypt2HexStr($keys, $tradeName);$tradeName  = $tetls->encrypt2HexStr($keys, $tradeName);}if($tradeDesc != null && $tradeDesc!=""){//$tradeDesc_1=TDESUtil::encrypt2HexStr($keys, $param["tradeDesc"]);$tradeDesc  = $tetls->encrypt2HexStr($keys, $tradeDesc);}$tradeTime=$tetls->encrypt2HexStr($keys, $tradeTime);$amount=$tetls->encrypt2HexStr($keys, $amount);$currency=$tetls->encrypt2HexStr($keys, $currency);$callbackUrl=$tetls->encrypt2HexStr($keys, $callbackUrl);$notifyUrl=$tetls->encrypt2HexStr($keys, $notifyUrl);$ip=$tetls->encrypt2HexStr($keys, $ip);if($note != null && $note!=""){$note  = $tetls->encrypt2HexStr($keys, $note);}if($userType != null && $userType!=""){$userType  = $tetls->encrypt2HexStr($keys, $userType);}if($userId != null && $userId!=""){$userId  = $tetls->encrypt2HexStr($keys, $userId);}if($expireTime != null && $expireTime!=""){$expireTime  = $tetls->encrypt2HexStr($keys, $expireTime);}if($orderType != null && $orderType!=""){$orderType  = $tetls->encrypt2HexStr($keys, $orderType);}if($industryCategoryCode != null && $industryCategoryCode!=""){$industryCategoryCode  = $tetls->encrypt2HexStr($keys, $industryCategoryCode);}if($specCardNo != null && $specCardNo!=""){$specCardNo  = $tetls->encrypt2HexStr($keys, $specCardNo);}if($specId != null && $specId!=""){$specId  = $tetls->encrypt2HexStr($keys, $specId);}if($specName != null && $specName!=""){$specName  = $tetls->encrypt2HexStr($keys, $specName);}//var_dump($tradeName_1);die;$v_saveUrl_pc       = "https://wepay.jd.com/jdpay/saveOrder";//PC端调用地址$v_saveUrl_wap      = "https://h5pay.jd.com/jdpay/saveOrder";//H5端调用地址if(is_mobile()){//移动$surl=$v_saveUrl_wap;//form提交表单网址}else{$surl=$v_saveUrl_pc;//form提交表单网址}//$surl=$v_saveUrl_pc;//form提交表单网址echo "支付中,请等待....";echo "<body onload='autosubmit()'>";echo "<form action='".$surl."' method='post' id='batchForm'>";echo "<input type='hidden' name='version' value='".$version."'/>";echo "<input type='hidden' name='merchant' value='".$merchant."'/>";echo "<input type='hidden' name='device' value='".$device."'/>";echo "<input type='hidden' name='tradeNum' value='".$tradeNum."'/>";echo "<input type='hidden' name='tradeName' value='".$tradeName."'/>";echo "<input type='hidden' name='tradeDesc' value='".$tradeDesc."'/>";echo "<input type='hidden' name='tradeTime' value='".$tradeTime."'/>";echo "<input type='hidden' name='amount' value='".$amount."'/>";echo "<input type='hidden' name='currency' value='".$currency."'/>";echo "<input type='hidden' name='note' value='".$note."'/>";echo "<input type='hidden' name='callbackUrl' value='".$callbackUrl."'/>";echo "<input type='hidden' name='notifyUrl' value='".$notifyUrl."'/>";echo "<input type='hidden' name='ip' value='".$ip."'/>";echo "<input type='hidden' name='userType' value='".$userType."'/>";echo "<input type='hidden' name='userId' value='".$userId."'/>";echo "<input type='hidden' name='expireTime' value='".$expireTime."'/>";echo "<input type='hidden' name='orderType' value='".$orderType."'/>";echo "<input type='hidden' name='industryCategoryCode' value='".$industryCategoryCode."'/>";echo "<input type='hidden' name='specCardNo' value='".$specCardNo."'/>";echo "<input type='hidden' name='specId' value='".$specId."'/>";echo "<input type='hidden' name='specName' value='".$specName."'/>";echo "<input type='hidden' name='sign' value='".$sign."'/>";echo "</form>";//自动提交表单echo "<script>";echo "function autosubmit(){";echo "document.getElementById('batchForm').submit();";echo "}";echo "</script>";//        $PayUrl = $url.$fields_string;
//        header("Location:".$PayUrl);exit;}/** 同步通知* PayPal同步通知即为账单支付验证确认方法*/function doreturn($date) {global $_M;$tools = new CallBack();$param['tradeNum']=trim($_POST['tradeNum']); $param['amount']=trim($_POST['amount']); $param['currency']=trim($_POST['currency']); $param['tradeTime']=trim($_POST['tradeTime']);$param['note']=trim($_POST['note']); $param['status']=trim($_POST['status']);$param['sign']=trim($_POST['sign']); $tatus  = $tools->execute($param);//        $key            = $this->jdpay_config['jd_key'];                        // 商户密钥
//
//        $v_oid          =trim($_POST['v_oid']);                                 // 商户发送的v_oid定单编号
//        $v_pmode        =trim($_POST['v_pmode']);                               // 支付方式(字符串)
//        $v_pstatus      =trim($_POST['v_pstatus']);                             // 支付状态 :20(支付成功);30(支付失败)
//        $v_pstring      =trim($_POST['v_pstring']);                             // 支付结果信息 : 支付完成(当v_pstatus=20时);失败原因(当v_pstatus=30时,字符串);
//        $v_amount       =trim($_POST['v_amount']);                              // 订单实际支付金额
//        $v_moneytype    =trim($_POST['v_moneytype']);                           // 订单实际支付币种
//        $remark1        =trim($_POST['remark1' ]);                              // 备注字段1
//        $remark2        =trim($_POST['remark2' ]);                              // 备注字段2
//        $v_md5str       =trim($_POST['v_md5str' ]);                             // 拼凑后的MD5校验值 /*** 重新计算md5的值*///$md5string=strtoupper(md5($v_oid.$v_pstatus.$v_amount.$v_moneytype.$key));if($tatus){return TRUE;}else{return FALSE;}}/*** 异步通知验证*/public function donotify($date) {global $_M;$tools = new AsynNotifyAction();$param['tradeNum']=trim($_POST['tradeNum']); $param['amount']=trim($_POST['amount']); $param['currency']=trim($_POST['currency']); $param['tradeTime']=trim($_POST['tradeTime']);$param['note']=trim($_POST['note']); $param['status']=trim($_POST['status']);$param['sign']=trim($_POST['sign']); $tatus  = $tools->execute($param);//        $key            = $this->jdpay_config['jd_key'];                        // 商户密钥
//
//        $v_oid          =trim($_POST['v_oid']);                                 // 商户发送的v_oid定单编号
//        $v_pmode        =trim($_POST['v_pmode']);                               // 支付方式(字符串)
//        $v_pstatus      =trim($_POST['v_pstatus']);                             // 支付状态 :20(支付成功);30(支付失败)
//        $v_pstring      =trim($_POST['v_pstring']);                             // 支付结果信息 : 支付完成(当v_pstatus=20时);失败原因(当v_pstatus=30时,字符串);
//        $v_amount       =trim($_POST['v_amount']);                              // 订单实际支付金额
//        $v_moneytype    =trim($_POST['v_moneytype']);                           // 订单实际支付币种
//        $remark1        =trim($_POST['remark1' ]);                              // 备注字段1
//        $remark2        =trim($_POST['remark2' ]);                              // 备注字段2
//        $v_md5str       =trim($_POST['v_md5str' ]);                             // 拼凑后的MD5校验值
//
//        /**
//         * 重新计算md5的值
//         */
//
//        $md5string=strtoupper(md5($v_oid.$v_pstatus.$v_amount.$v_moneytype.$key));if($v_pstatus ==="20" && $v_md5str==$md5string){return TRUE;}else{return FALSE;}}
}?>

6、同步、异步通知   路径:\app\system\pay\web\pay.class.php

6-1:同步通知 处理

     if($date['pay_type']==='7') {//京东支付//var_dump($date);//var_dump($date['callback_url']);if($status==="0") {//0-成功var_dump($date['callback_url']);echo "支付成功!";//$url3=$_M[config]["met_weburl"]."shop/order.php?lang=cn&a=docheck&id=";header("Location: {$date['callback_url']}");die();}else{require_once $return_url;}}

6-2:异步通知 处理

修改1

    /*** 异步通知 处理*/public function donotify() {global $_M;//=======【微信异步通知验证】==========================$xml   = $GLOBALS['HTTP_RAW_POST_DATA'];if(!$xml){$xml = file_get_contents("php://input");//$resultData = file_get_contents("php://input");//京东支付专用}$array = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);if($array && $array['out_trade_no']) {$date = $this->GetOeder($array['out_trade_no']);$this->doNotify_wxpay($date);}//=======【京东异步通知验证】==========================if($xml) {require_once "jd/common/TDESUtil.php";$tetls = new TDESUtil();require_once "jd/common/RSAUtils.php";$rstl = new RSAUtils();require_once "jd/common/SignUtil.php";$tools = new SignUtil();$resultXml = simplexml_load_string($xml);$resultObj = json_decode(json_encode($resultXml),TRUE);$encryptStr = $resultObj["encrypt"];$encryptStr=base64_decode($encryptStr);//$desKey = ConfigUtil::get_val_by_key("desKey");$desKey = "RvLc3Gfgdghg445fhfdgfdgfd11KGZ5h";//商户DES密钥$keys = base64_decode($desKey);//$reqBody = TDESUtil::decrypt4HexStr($keys, $encryptStr);$reqBody=$tetls->decrypt4HexStr($keys, $encryptStr);//3DES 解密 进行了补位的16进制表示的字符串数据$bodyXml = simplexml_load_string($reqBody);//echo "请求返回encrypt Des解密后:".$bodyXml->saveXML()."\n";$resData = json_decode(json_encode($bodyXml),TRUE);$inputSign = $resData["sign"];$inputSign2 = $resData["sign"];$startIndex = strpos($reqBody,"<sign>");$endIndex = strpos($reqBody,"</sign>");$xml2;if($startIndex!=false && $endIndex!=false){$xmls = substr($reqBody, 0,$startIndex);$xmle = substr($reqBody,$endIndex+7,strlen($reqBody));$xml2=$xmls.$xmle;}//echo "本地摘要原串:".$xml."\n";$sha256SourceSignString = hash("sha256", $xml2);//echo "本地摘要:".$sha256SourceSignString."\n";//$decryptStr = RSAUtils::decryptByPublicKey($inputSign);$decryptStr=$rstl->decryptByPublicKey($inputSign);//echo "解密后摘要:".$decryptStr."\n";$flag;$array2 = json_decode(json_encode(simplexml_load_string($xml2, 'SimpleXMLElement', LIBXML_NOCDATA)), true);//通过订单号取得参数,然后生成sign,再对返回的SIGN作对比,相等证明数据正确$tradeNum =$array2['tradeNum'];$merchant =$array2['merchant'];$desc=$array2['result']['desc'];//<code>000000</code><desc>success</desc>$amount1 =$array2['amount'];$status =$array2['status'];//=2 成功//判断价格是否整数,如果是,要补两零,因为系统保存价格是保存两位小数的$amount2 = explode('.',$amount1);if(!$amount2[1]){$amount=$amount1.".00";}else{$amount=$amount1;}$date5 = $this->GetOeder($tradeNum);$total_fee =$date5['total_fee']*100;//京东价格单位分,在转到京东支付的时候,价格已经*100,所以也要*100才能相等$ss=$merchant.",".$desc.",".$amount.",".$total_fee.",".$status;
//                if($tradeNum){
//                     $date5 = $this->GetOeder($out_trade_no);
//                      $unSignKeyList = array ("sign");
//                  //组成数组,用来验证
//                      $param["version"]="V2.0";
//                      $param["merchant"]="110263145005";
//                      $param["device"]="";
//                      $param["tradeNum"]=$tradeNum;
//                      $param["tradeName"]=$date5['subject'];
//                      $param["tradeDesc"]=$date5['body'];
//                      $param["tradeTime"]= $array2['tradeTime'];
//                      $param["amount"]= $date5['total_fee'];
//                      $param["currency"]= "CNY";
//                      $param["note"]= "";
//
//                      $param["callbackUrl"]= $_M[config]["met_weburl"]."pay/return.php";// 支付成功后跳转的URL
//                      $param["notifyUrl"]= $_M[config]["met_weburl"]."pay/notify.php";// 支付完成后,异步通知商户相关支付结果,此url外网必须能够访问
//                      $param["ip"]= "";
//                      $param["specCardNo"]= "";
//                      $param["specId"]= "";
//                      $param["specName"]= "";
//                      $param["userType"]= "";
//                      $param["userId"]= "shidehaoda@163.com";//京东金融登录用户名
//                      $param["expireTime"]= "";
//                      $param["orderType"]= "1";//订单类型 0-实物,1-虚拟
//                      $param["industryCategoryCode"]=  "";
//
//                      $sign5  = $tools->signWithoutToHex($param, $unSignKeyList);
//                }if($array2['version']=="V2.0" && $merchant=="11045541221005" && $desc=="success" && $amount==$total_fee && $status=='2'){//if($decryptStr==$sha256SourceSignString){//$tradeNum2="1,".$array2['tradeNum'];//$query8    = "UPDATE {$_M['table']['product_note']} SET content='$ss' WHERE id=255";//DB::query($query8);//echo "验签成功<br/>";$flag=true;}else{
//                      //$tradeNum2=$decryptStr.",|,".$inputSign2.",|,".$sign5.",|,".$sha256SourceSignString;
//                      $tradeNum2=$version.",|,".$array2['merchant'].",|,".$array2['desc'].",|,".$array2['amount'].",|,".$date5['total_fee'];
//                      $query8    = "UPDATE {$_M['table']['product_note']} SET content='$ss' WHERE id=255";
//                      DB::query($query8);//echo "验签失败<br/>";$flag=false;}}

修改二

            if($date['pay_type'] === '7') {$this->doNotify_jd($date,$flag);}

修改3

    public function doNotify_jd($date,$flag) {if($date['out_trade_no'] && $flag){$this->UpadteOrder($date['pay_type'],$date['out_trade_no']);return "success";}else{return "失败";}

整个pay.class.php文件代码

<?php
defined('IN_MET') or exit('No permission');
/*** 支付基类* 集成支付:微信、财付通、支付宝、网银、PayPal*/
ini_set('date.timezone','Asia/Shanghai');
load::sys_class('web');
load::sys_func('admin');
load::sys_func('str');
load::sys_func('array');
class pay extends web{protected $uid;public function __construct() {global $_M;//定义一些可以预定义的变量值parent::__construct();$this->uid = get_met_cookie('id') ? : 0;}/*** 购物车订单提交入口*/public function doindex(){global $_M;// $this->check();$date = array('body'          =>  $_M['form']['body'],                              //商品描述'subject'       =>  $_M['form']['subject'],                           //商品名称'out_trade_no'  =>  $_M['form']['out_trade_no'],                      //订单编号'attach'        =>  $_M['form']['attach'],                            //附加数据'goods_tag'     =>  $_M['form']['goods_tag'],                         //商品标记'product_id'    =>  $_M['form']['product_id'],                        //产品编号'total_fee'     =>  $_M['form']['total_fee'],                         //订单金额'no'            =>  $_M['form']['no'] ? : '1111111111'  //调用接口的应用编号(存在于applist));if($date['out_trade_no'] && $date['total_fee'] && $date['subject']) {$this->CreateOrder($date);                                          //创建账单 存储订单信息到数据库$title = '选择在线支付方式';$paymentlist = $this->GetPaymentList();                             //获取处于开启状态的支付接口if(in_array('7', $paymentlist)){$bank_array = load::mod_class('pay/web/include/class/china_bank', 'new')->bank_array();/** 收款支付类型* 1|储蓄卡* 2|信用卡*/$jd_payment_type = jsondecode($_M['config']['jdpay_config']);$jd_payment_type = explode('|', $jd_payment_type['jd_payment_type']);}require_once $this->template('own/index');}else{echo "<script type=\"text/javascript\">alert(\"订单参数异常!请重新下单\");location.href=\"{$_M['url']['site']}member\"</script>";}}/*** 订单支付跳转*/public function dopay() {global $_M;$out_trade_no = $_M['form']['out_trade_no'];$type         = $_M['form']['paytype']?$_M['form']['paytype']:(empty($_GET["code"])?'':'6');$date         = $this->GetOeder($out_trade_no);$status       = $this->CheckOrderPayStatus($out_trade_no);$paymentlist  = $this->GetPaymentList();                                //获取处于开启状态的支付接口//Paypal回调参数if(!$_M['form']['paytype'] && !empty($_GET["token"]) && !empty($_GET["PayerID"])) { $type = '5'; }//if(!$_M['form']['paytype'] && !empty($_GET["PayerID"])) { $type = '5'; }//京东网银在线if(is_numeric($type) && $type > 7){$banklist_cash = jsondecode($_M['config']['jdpay_config']);$banklist_cash   = explode("|", $banklist_cash['banklist_cash']);$banklist_credit = jsondecode($_M['config']['jdpay_config']);$banklist_credit = explode("|", $banklist_credit['banklist_credit']);if(in_array($type, $banklist_cash) || in_array($type, $banklist_credit)){$date['bank'] = $type;                                          //选择的银行编码$_M['form']['paytype']:$type = '7';}}if(!$this->GetPayOpen()) {//获取接口开关状态,关闭时直接跳转至网站首页echo "<script type=\"text/javascript\">alert(\"未开启支付接口,请联系网站管理员。\");location.href=\"{$_M['url']['site']}\"</script>"; //header("Location:{$_M['url']['site']}member");} else if(!$out_trade_no && $type != '6' && $type != '5') {var_dump($_REQUEST);die();echo "<script type=\"text/javascript\">alert(\"订单异常,请重新下单支付!\");location.href=\"{$_M['url']['site']}member\"</script>";//header("Location:{$_M['url']['site']}member");} else if(!$status && in_array($type, $paymentlist)) {                  //检测订单支付状态,并检测传入支付方式开启状态$this->UpadteOrderPaymentType($type, $out_trade_no);                //更新订单支付类型switch ($type) {case 1://微信扫码支付$wxpay     = load::mod_class('pay/web/wxpay.class.php', 'new'); //加载微信支付处理类$code_url  = $wxpay->wxpay($date);                          //调用微信支付接口require_once $this->template('own/wxpay');break;case 2://财付通支付tenpay$tenpay   = load::mod_class('pay/web/tenpay.class.php', 'new'); //加载财付通支付处理类$code_url = $tenpay->tenpay($date);                         //调用财付通支付接口break;case 3://支付宝支付$alipay = load::mod_class('pay/web/alipay.class.php', 'new');   //加载支付宝支付处理类$alipay->alipay($date);                                     //调用支付宝支付接口break;case 4://网银支付$unionpay = load::mod_class('pay/web/unionpay.class.php', 'new');  //加载银联支付处理类$unionpay->unionpay($date);                                 //调用银联支付接口break;case 5://PayPal支付$paypal = load::mod_class('pay/web/paypal.class.php', 'new');   //加载PayPal支付处理类//没有 PayreIDif(!$_GET['PayerID']){$paypal->paypal($date);                                 //调用paypal支付接口}else{$paypal->ConfirmPayment();}break;case 6://微信H5-JsApiPay支付$wxpay     = load::mod_class('pay/web/wxpay.class.php', 'new'); //加载微信支付处理类if($_GET['code']){session_start();$date           = $_SESSION["temp"];$date['openId'] = $wxpay->GetOpen_ID();$return         = $wxpay->JsApiPay($date);              //调用微信支付接口require_once $this->template('own/jsapi');}else{//session 存储订单信息,备用session_start();$_SESSION["temp"] = $date;$wxpay->GetOpen_ID();}break;case 7://网银在线支付$chinabank = load::mod_class('pay/web/chinabank.class.php', 'new');//加载网银在线支付处理类$chinabank->chinabank($date);                                  //调用网银在线支付接口break;default:break;}} else {// echo "<script type=\"text/javascript\">alert(\"非法操作!\");location.href=\"{$_M['url']['site']}member\"</script>";}}/*** 订单查询*/public function doquery() {global $_M;$pay_type = $_M['form']['paytype'];switch ($pay_type) {case 1://微信订单查询$wxpay  = load::mod_class('pay/web/wxpay.class.php', 'new');$pay    = $wxpay->wxpayQuery();echo json_encode($pay);break;case 2://财付通订单查询$pay = $this->tenpayQuery(); break;case 3://支付宝订单查询$pay = $this->alipayQuery(); break;case 4://网银订单查询$pay = $this->unionpayQuery(); break;case 5://PayPal订单查询$pay = $this->paypalQuery(); break;default:break;}}/*** 创建订单存储至数据库*/public function CreateOrder($date) {global $_M;//根据订单号进行重复订单查询if(!$order = $this->GetOeder($date['out_trade_no'])) {//订单不存在且订单数据不为空时进行订单信息存储,并返回订单号$date['order_time']   = date("YmdHis");$query = "INSERT INTO {$_M['table']['pay_order']} SET no={$date['no']},callback_url='{$date['return_url']}',out_trade_no='{$date['out_trade_no']}',subject='{$date['subject']}',product_id='{$date['product_id']}',body='{$date['body']}',goods_tag='{$date['goods_tag']}',attach='{$date['attach']}',show_url='{$date['show_url']}',total_fee='{$date['total_fee']}',order_time='{$date['order_time']}',pay_time='',pay_type='',callback='0',status='0',uid={$this->uid}";if(DB::query($query)){return DB::insert_id();}else{return false;}}}/*** 异步通知 处理*/public function donotify() {global $_M;//=======【微信异步通知验证】==========================$xml   = $GLOBALS['HTTP_RAW_POST_DATA'];if(!$xml){$xml = file_get_contents("php://input");//$resultData = file_get_contents("php://input");//京东支付专用}$array = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);if($array && $array['out_trade_no']) {$date = $this->GetOeder($array['out_trade_no']);$this->doNotify_wxpay($date);}//=======【京东异步通知验证】==========================if($xml) {require_once "jd/common/TDESUtil.php";$tetls = new TDESUtil();require_once "jd/common/RSAUtils.php";$rstl = new RSAUtils();require_once "jd/common/SignUtil.php";$tools = new SignUtil();$resultXml = simplexml_load_string($xml);$resultObj = json_decode(json_encode($resultXml),TRUE);$encryptStr = $resultObj["encrypt"];$encryptStr=base64_decode($encryptStr);//$desKey = ConfigUtil::get_val_by_key("desKey");$desKey = "RvLc3fd54454fdsfs45452KGZ5h";//商户DES密钥$keys = base64_decode($desKey);//$reqBody = TDESUtil::decrypt4HexStr($keys, $encryptStr);$reqBody=$tetls->decrypt4HexStr($keys, $encryptStr);//3DES 解密 进行了补位的16进制表示的字符串数据$bodyXml = simplexml_load_string($reqBody);//echo "请求返回encrypt Des解密后:".$bodyXml->saveXML()."\n";$resData = json_decode(json_encode($bodyXml),TRUE);$inputSign = $resData["sign"];$inputSign2 = $resData["sign"];$startIndex = strpos($reqBody,"<sign>");$endIndex = strpos($reqBody,"</sign>");$xml2;if($startIndex!=false && $endIndex!=false){$xmls = substr($reqBody, 0,$startIndex);$xmle = substr($reqBody,$endIndex+7,strlen($reqBody));$xml2=$xmls.$xmle;}//echo "本地摘要原串:".$xml."\n";$sha256SourceSignString = hash("sha256", $xml2);//echo "本地摘要:".$sha256SourceSignString."\n";//$decryptStr = RSAUtils::decryptByPublicKey($inputSign);$decryptStr=$rstl->decryptByPublicKey($inputSign);//echo "解密后摘要:".$decryptStr."\n";$flag;$array2 = json_decode(json_encode(simplexml_load_string($xml2, 'SimpleXMLElement', LIBXML_NOCDATA)), true);//通过订单号取得参数,然后生成sign,再对返回的SIGN作对比,相等证明数据正确$tradeNum =$array2['tradeNum'];$merchant =$array2['merchant'];$desc=$array2['result']['desc'];//<code>000000</code><desc>success</desc>$amount1 =$array2['amount'];$status =$array2['status'];//=2 成功//判断价格是否整数,如果是,要补两零,因为系统保存价格是保存两位小数的$amount2 = explode('.',$amount1);if(!$amount2[1]){$amount=$amount1.".00";}else{$amount=$amount1;}$date5 = $this->GetOeder($tradeNum);$total_fee =$date5['total_fee']*100;//京东价格单位分,在转到京东支付的时候,价格已经*100,所以也要*100才能相等$ss=$merchant.",".$desc.",".$amount.",".$total_fee.",".$status;
//                if($tradeNum){
//                     $date5 = $this->GetOeder($out_trade_no);
//                      $unSignKeyList = array ("sign");
//                  //组成数组,用来验证
//                      $param["version"]="V2.0";
//                      $param["merchant"]="110545454005";
//                      $param["device"]="";
//                      $param["tradeNum"]=$tradeNum;
//                      $param["tradeName"]=$date5['subject'];
//                      $param["tradeDesc"]=$date5['body'];
//                      $param["tradeTime"]= $array2['tradeTime'];
//                      $param["amount"]= $date5['total_fee'];
//                      $param["currency"]= "CNY";
//                      $param["note"]= "";
//
//                      $param["callbackUrl"]= $_M[config]["met_weburl"]."pay/return.php";// 支付成功后跳转的URL
//                      $param["notifyUrl"]= $_M[config]["met_weburl"]."pay/notify.php";// 支付完成后,异步通知商户相关支付结果,此url外网必须能够访问
//                      $param["ip"]= "";
//                      $param["specCardNo"]= "";
//                      $param["specId"]= "";
//                      $param["specName"]= "";
//                      $param["userType"]= "";
//                      $param["userId"]= "s55455454@163.com";//京东金融登录用户名
//                      $param["expireTime"]= "";
//                      $param["orderType"]= "1";//订单类型 0-实物,1-虚拟
//                      $param["industryCategoryCode"]=  "";
//
//                      $sign5  = $tools->signWithoutToHex($param, $unSignKeyList);
//                }if($array2['version']=="V2.0" && $merchant=="110440005" && $desc=="success" && $amount==$total_fee && $status=='2'){//if($decryptStr==$sha256SourceSignString){//$tradeNum2="1,".$array2['tradeNum'];//$query8    = "UPDATE {$_M['table']['product_note']} SET content='$ss' WHERE id=255";//DB::query($query8);//echo "验签成功<br/>";$flag=true;}else{
//                      //$tradeNum2=$decryptStr.",|,".$inputSign2.",|,".$sign5.",|,".$sha256SourceSignString;
//                      $tradeNum2=$version.",|,".$array2['merchant'].",|,".$array2['desc'].",|,".$array2['amount'].",|,".$date5['total_fee'];
//                      $query8    = "UPDATE {$_M['table']['product_note']} SET content='$ss' WHERE id=255";
//                      DB::query($query8);//echo "验签失败<br/>";$flag=false;}}//$query9    = "UPDATE {$_M['table']['product_note']} SET content='{$ss}' WHERE id=256";//DB::query($query9);$out_trade_no = $_M['form']['out_trade_no'] ? : $_POST['orderId'];if($_POST['remark1' ]){$out_trade_no = trim($_POST['remark1']);}//=京东支付if($tradeNum){$out_trade_no=$tradeNum;}if($out_trade_no) {$date = $this->GetOeder($out_trade_no);//=======【支付宝异步通知验证】==========================if($date['pay_type'] === '3') {$this->doNotify_alipay($date);}//=======【银联异步通知验证】==========================if($date['pay_type'] === '4') {$this->doNotify_unionpay($date);}//=======【财付通异步通知验证】==========================if($date['pay_type'] === '2') {$this->doNotify_tenpay($date);}//=======【网银在线异步通知验证】==========================
//            if($date['pay_type'] === '7') {
//                $this->doNotify_chinabank($date);
//            }if($date['pay_type'] === '7') {$this->doNotify_jd($date,$flag);}//=======【paypal支付验证】 by:rabbbbit 20171103===============if($date['pay_type'] === '5') {$this->doNotify_paypal($date);}}}public function doNotify_wxpay($date) {$wxpay = load::mod_class('pay/web/wxpay.class.php', 'new');if($wxpay->donotify($date['out_trade_no'])) {                           //异步通知验证$this->UpadteOrder($date['pay_type'],$date['out_trade_no']);}}public function doNotify_alipay($date) {global $_M;$alipay = load::mod_class('pay/web/alipay.class.php', 'new');//异步通知验证if($alipay->donotify()&&!$date['status']&&($_M['form']['trade_status']==='TRADE_SUCCESS'||$_M['form']['trade_status']==='TRADE_FINISHED')) {$this->UpadteOrder($date['pay_type'],$date['out_trade_no']);}}public function doNotify_unionpay($date) {$unionpay = load::mod_class('pay/web/unionpay.class.php', 'new');   //同步通知验证if($unionpay->donotify($date)) {$this->UpadteOrder($date['pay_type'],$date['out_trade_no']);}}public function doNotify_tenpay($date) {$tenpay = load::mod_class('pay/web/tenpay.class.php', 'new');               //异步通知验证if($tenpay->donotify($date)) {$this->UpadteOrder($date['pay_type'],$date['out_trade_no']);}}//京东支付
//    public function doNotify_chinabank($date) {
//        $chinabank = load::mod_class('pay/web/chinabank.class.php', 'new');               //异步通知验证
//        if($chinabank->donotify($date)) {
//            $this->UpadteOrder($date['pay_type'],$date['out_trade_no']);
//        }
//    }public function doNotify_jd($date,$flag) {if($date['out_trade_no'] && $flag){$this->UpadteOrder($date['pay_type'],$date['out_trade_no']);return "success";}else{return "失败";}
//        $jd = load::mod_class('pay/web/jd.class.php', 'new');               //异步通知验证
//        if($jd->donotify($date)) {
//            $this->UpadteOrder($date['pay_type'],$date['out_trade_no']);
//        }}public function doNotify_paypal($date){global $_M;$this->UpadteOrder($date['pay_type'],$date['out_trade_no']);        //paypal同步通知header("Location:{$_M['url']['site']}shop/order.php");}/*** 同步通知 处理*/public function doreturn() {global $_M;$out_trade_no = $_M['form']['out_trade_no'] ? : ($_POST['orderId']?:($_POST['remark1']?trim($_POST['remark1']):''));//京东支付$tradeNum=trim($_POST['tradeNum']);//交易流水号 京东支付  商户唯一交易流水号。格式:字母&数字if($tradeNum){require_once "jd/common/TDESUtil.php";$tetls = new TDESUtil();$desKey = "RvLc3G45gfdgdg5454542KGZ5h";//商户DES密钥$keys = base64_decode($desKey);$out_trade_no=$tetls->decrypt4HexStr($keys, $tradeNum);//3DES 解密 进行了补位的16进制表示的字符串数据$amount=$tetls->decrypt4HexStr($keys,trim($_POST['amount']));$currency=$tetls->decrypt4HexStr($keys,trim($_POST['currency']));$tradeTime=$tetls->decrypt4HexStr($keys,trim($_POST['tradeTime']));$note=$tetls->decrypt4HexStr($keys,trim($_POST['note']));$status=$tetls->decrypt4HexStr($keys,trim($_POST['status']));$sign=trim($_POST['sign']); //$out_trade_no = $tradeNum;}var_dump($status);$date         = $this->GetOeder($out_trade_no);//var_dump($date['pay_type']);//var_dump($date);die;$title        = '订单支付成功';$this->UpadteOrderReturnType($out_trade_no);                            //接收到同步通知后根据订单号更改【同步通知】状态$return_url   = $date['callback_url']?:$this->template('own/return');//获取自定义同步通知返回地址,为自定义则使用默认地址if($date['pay_type']==='1' || $date['pay_type']==='6') {$wxpay = load::mod_class('pay/web/wxpay.class.php', 'new');if($wxpay->OrderQuery($out_trade_no)) {if($date['callback_url']){header("Location: {$date['callback_url']}");die();}else{require_once $return_url;}}}if($date['pay_type'] === '3' && $_M['form']['total_fee'] === $date['total_fee']) {//var_dmup($date);die;$alipay = load::mod_class('pay/web/alipay.class.php', 'new');           //同步通知验证if($alipay->doreturn()&&($_GET['trade_status']==='TRADE_SUCCESS'||$_GET['trade_status']==='TRADE_FINISHED')) {if($date['callback_url']){header("Location: {$date['callback_url']}");die();}else{require_once $return_url;}}}if($date['pay_type']==='4') {$unionpay = load::mod_class('pay/web/unionpay.class.php', 'new');       //同步通知验证if($unionpay->donotify($date)) {if($date['callback_url']){header("Location: {$date['callback_url']}");die();}else{require_once $return_url;}}}if($date['pay_type']==='2') {$unionpay = load::mod_class('pay/web/tempay.class.php', 'new');         //同步通知验证if($unionpay->doreturn($date)) {if($date['callback_url']){header("Location: {$date['callback_url']}");die();}else{require_once $return_url;}}}if($date['pay_type']==='5') {$paypal = load::mod_class('pay/web/paypal.class.php', 'new');           //同步通知验证if($_GET['token']){//if($paypal->doreturn($_GET['token'])) {$payerid = $paypal->doreturn($_GET['token']);if($payerid) {if($date['callback_url']){header("Location: {$date['callback_url']}.PayerID={$payerid}");die();}else{require_once $return_url;}}}}
//        if($date['pay_type']==='7') {
//            $chinabank = load::mod_class('pay/web/chinabank.class.php', 'new');           //同步通知验证
//            if($chinabank->doreturn($date)) {
//                if($date['callback_url']){
//                    header("Location: {$date['callback_url']}");
//                    die();
//                }else{
//                    require_once $return_url;
//                }
//            }
//        }if($date['pay_type']==='7') {//京东支付//var_dump($date);//var_dump($date['callback_url']);if($status==="0") {//0-成功var_dump($date['callback_url']);echo "支付成功!";//$url3=$_M[config]["met_weburl"]."shop/order.php?lang=cn&a=docheck&id=";header("Location: {$date['callback_url']}");die();}else{require_once $return_url;}}}/*** 根据订单号out_trade_no更新订单【支付状态】*/public function UpadteOrder($pay_type,$out_trade_no) {global $_M;$pay_time = date("YmdHis");$query    = "UPDATE {$_M['table']['pay_order']} SET pay_time='{$pay_time}',pay_type='{$pay_type}',status='1' WHERE out_trade_no='{$out_trade_no}'";DB::query($query);$this->toapp($out_trade_no);}public function toapp($out_trade_no) {  global $_M;$query = "SELECT * FROM {$_M['table']['pay_order']} WHERE out_trade_no='{$out_trade_no}'";$pay   = DB::get_one($query);load::plugin('dopay', 0, array('pay'=>$pay));//加载插件}/*** 根据订单号out_trade_no更新订单【开始时间】、【支付类型】*/public function UpadteOrderPaymentType($pay_type,$out_trade_no) {global $_M;$pay_time = date("YmdHis");$query    = "UPDATE {$_M['table']['pay_order']} SET pay_time='{$pay_time}',pay_type='{$pay_type}' WHERE out_trade_no='{$out_trade_no}'";DB::query($query);}/*** 根据订单号out_trade_no更新订单【同步通知状态】* 1|已接收到通知* 0|默认为未接收到通知*/public function UpadteOrderReturnType($out_trade_no) {global $_M;$query    = "UPDATE {$_M['table']['pay_order']} SET callback='1' WHERE out_trade_no='{$out_trade_no}' AND uid={$this->uid}";DB::query($query);}/*** 根据订单号out_trade_no获取订单支付状态*  TRUE|已支付* FALSE|未支付*/public function CheckOrderPayStatus($out_trade_no) {$order = $this->GetOeder($out_trade_no);if($order['status']) {return TRUE;} else {return FALSE;}}/*** 根据out_trade_no查询订单* 返回订单信息*/public function GetOeder($out_trade_no) {global $_M;if($out_trade_no) {$query = "SELECT * FROM {$_M['table']['pay_order']} WHERE out_trade_no='{$out_trade_no}' ";$array = DB::get_one($query);//var_dump($array);die;return $array;} else {return FALSE;}}/*** 根据接口类型获取接口参数*/public function GetAPI($type, $name) {global $_M;if($type&&$name) {$table = $_M['config']['tablepre'].'pay_api';$query = "SELECT value FROM {$table} WHERE name='{$name}'AND paytype='{$type}';";$arr   = DB::get_one($query);$value = $arr['value'];}else{$value = 'Fail!';}return $value;}/*** 获取接口开关*/public function GetPayOpen() {global $_M;$table = $_M['config']['tablepre'].'pay_config';$query = "SELECT value FROM {$table} WHERE name='payment_open'";$arr   = DB::get_one($query);$value = $arr['value'];return $value;}/*** 获取已开启的支付接口*/public function GetPaymentList() {global $_M;$table = $_M['config']['tablepre'].'pay_config';$query = "SELECT value FROM {$table} WHERE name='payment_type'";$arr   = DB::get_one($query);$value = stringto_array($arr['value'],'|');return $value;}protected function template($path){global $_M;list($postion, $file) = explode('/',$path);if ($postion == 'own') {return PATH_OWN_FILE."templates/met/{$file}.php";}if ($postion == 'ui') {return PATH_SYS."include/public/ui/web/{$file}.php";}if($postion == 'tem'){if($_M['custom_template']['sys_content']){$flag = 1;}else{$flag = 0;}if (file_exists(PATH_TEM."pay/{$file}.php")) {$_M['custom_template']['sys_content'] = PATH_TEM."pay/{$file}.php";}else{  if (file_exists(PATH_SYS."web/pay/templates/met/{$file}.php")) {$_M['custom_template']['sys_content'] = PATH_SYS."web/pay/templates/met/{$file}.php";}}if($flag == 1){return $_M['custom_template']['sys_content'];}else{return $this->template('ui/compatible');}}         }/*** 重写web类的load_url_unique方法,获取前台特有URL*/protected function load_url_unique() {global $_M;parent::load_url_unique();$_M['url']['own_func'] = $_M['url']['site'].'app/system/pay/web/include/function/';$_M['url']['own_class'] = $_M['url']['site'].'app/system/pay/web/include/class/';//$_M['url']['own_func'] = $_M['url']['site'].'app/system/web/pay/include/function/';//$_M['url']['own_class'] = $_M['url']['site'].'app/system/web/pay/include/class/';$_M['url']['pay_notify'] = $_M['url']['site'].'pay/notify.php';$_M['url']['pay_return'] = $_M['url']['site'].'pay/return.php';$_M['url']['tem'] = $_M['url']['site'].'app/system/pay/web/templates/met/';//$_M['url']['tem'] = $_M['url']['site'].'app/system/web/pay/templates/met/';if($_M['lang'] != $_M['config']['met_index_type']){$lang = "?lang={$_M['lang']}";}$lang = "?lang={$_M['lang']}";$_M['url']['login'] = $_M['url']['site']."member/login.php{$lang}";$_M['url']['register'] = $_M['url']['site']."member/register_include.php{$lang}";$_M['url']['register_userok'] = $_M['url']['site']."member/register_include.php?lang={$_M['lang']}&a=douserok";$_M['url']['getpassword'] = $_M['url']['site']."member/getpassword.php";$_M['url']['profile'] = $_M['url']['site']."member/basic.php{$lang}"; $_M['url']['profile_safety'] = $_M['url']['site']."member/basic.php?lang={$_M['lang']}&a=dosafety"; $_M['url']['pass_save'] = $_M['url']['site']."member/basic.php?lang={$_M['lang']}&a=dopasssave"; $_M['url']['mailedit'] = $_M['url']['site']."member/basic.php?lang={$_M['lang']}&a=doemailedit"; $_M['url']['maileditok'] = $_M['url']['site']."member/basic.php?lang={$_M['lang']}&a=doemailok"; $_M['url']['profile_safety_emailadd'] = $_M['url']['site']."member/basic.php?lang={$_M['lang']}&a=dosafety_emailadd"; $_M['url']['profile_safety_telok'] = $_M['url']['site']."member/basic.php?lang={$_M['lang']}&a=dosafety_telok"; $_M['url']['profile_safety_telvalid'] = $_M['url']['site']."member/basic.php?lang={$_M['lang']}&a=dosafety_telvalid"; $_M['url']['profile_safety_teladd'] = $_M['url']['site']."member/basic.php?lang={$_M['lang']}&a=dosafety_teladd"; $_M['url']['profile_safety_teledit'] = $_M['url']['site']."member/basic.php?lang={$_M['lang']}&a=dosafety_teledit"; $_M['url']['info_save'] = $_M['url']['site']."member/basic.php?lang={$_M['lang']}&a=doinfosave";$_M['url']['valid_email_repeat'] = $_M['url']['site']."member/basic.php?lang={$_M['lang']}&a=dovalid_email"; $_M['url']['valid_email'] = $_M['url']['site']."member/register_include.php?lang={$_M['lang']}&a=doemailvild"; $_M['url']['valid_phone'] = $_M['url']['site']."member/register_include.php?lang={$_M['lang']}&a=dophonecode"; $_M['url']['login_check'] = $_M['url']['site']."member/login.php?lang={$_M['lang']}&a=dologin";  $_M['url']['register_save'] = $_M['url']['site']."member/register_include.php?lang={$_M['lang']}&a=dosave";  $_M['url']['password_email'] = $_M['url']['site']."member/getpassword.php?lang={$_M['lang']}&a=doemail";$_M['url']['password_valid'] = $_M['url']['site']."member/getpassword.php?lang={$_M['lang']}&a=dovalid";$_M['url']['password_telvalid'] = $_M['url']['site']."member/getpassword.php?lang={$_M['lang']}&a=dotelvalid";$_M['url']['password_valid_phone'] = $_M['url']['site']."member/getpassword.php?lang={$_M['lang']}&a=dophonecode";$_M['url']['login_out'] = $_M['url']['site']."member/login.php?lang={$_M['lang']}&a=dologout";   $_M['url']['login_other'] = $_M['url']['site']."member/login.php?lang={$_M['lang']}&a=doother";  $_M['url']['login_other_register'] = $_M['url']['site']."member/login.php?lang={$_M['lang']}&a=dologin_other_register";  $_M['url']['login_other_info'] = $_M['url']['site']."member/login.php?lang={$_M['lang']}&a=dologin_other_info";  }}
?>

京东支付文件放到这个文件夹:\app\system\pay\web\jd\

京东文件修改包:https://download.csdn.net/download/haibo0668/10606694

6.0 增加京东支付相关推荐

  1. 助力数据运营 | 京东支付-猎户数据监控平台

    点击「京东金融技术说」可快速关注 京东支付研发部-支付支撑研发部 「摘要」随着京东支付业务的迅猛发展,内部很多系统对业务个性化的指标监控需求日益增多,尤其是我们的运营人员,希望能实时监控我们线上的产品 ...

  2. python京东注册账号_玩转京东支付(python)

    说明 做了微信.支付宝和京东支付之后,发现,最扯蛋的支付,肯定是京东支付,要完整开发京东支付,必须要看完京东支付开发者文档的官网每一个角落,绝对不能凭你的任何经验去猜测有些流程,比如公私钥加解密(不看 ...

  3. 【CTO讲堂】支付接入开发的陷阱有多深? 京东支付

    [CTO讲堂]支付接入开发的陷阱有多深? 发表于2015-10-27 15:04| 3926次阅读| 来源CSDN| 0 条评论| 作者蒲婧 CTO俱乐部CTOCTO讲堂移动支付BeeCloud al ...

  4. 玩转京东支付(python)

    说明 github地址 码云地址 做了微信.支付宝和京东支付之后,发现,最扯蛋的支付,肯定是京东支付,要完整开发京东支付,必须要看完京东支付开发者文档的官网每一个角落,绝对不能凭你的任何经验去猜测有些 ...

  5. 考试缴费仅能京东支付?北京发改委:滥用行政权力

    [TechWeb报道]12月28日消息,笔者上学的时候,开学收费一般都是采用现今收费或者是刷卡,随着科技的进步,现在许多高校都采用扫码或者是网上平台支付. 近日有些平台滥用政权排除限制竞争行为,经查, ...

  6. V5SHOP网店系统V 8.0 仿京东模板

    V5SHOP网店系统V 8.0 仿京东模板 V5SHOP网店系统V 8.0  仿京东模板发布[UTF-8] 语言编码:UTF-8 风格作者:威博网络 版权所属:威博网络 风格转换:原创 下载 (166 ...

  7. android 代码等待一秒,【报Bug】安卓微信旧版本7.0.2 ,支付完成,等待几秒后,再点击完成 回到小程序,跳转不了页面。...

    详细问题描述 微信旧版本7.0.2 ,支付完成,等待几秒后,再点击完成 回到小程序,跳转不了页面. (DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你 ...

  8. ThankPHP5.0增加中英文转换(tp5语言翻译)

    ThankPHP5.0增加中英文转换(tp5语言翻译) 这个中英文转换是点击触发的,默认是显示中文的语言,框架使用的是thankphp5.0.24 .废话不多说直接上代码 提示:以下是本篇文章正文内容 ...

  9. Android 7.0 增加以太网设置DHCP和静态IP

    https://blog.csdn.net/zhouyuanjing/article/details/78415891 Android 7.0 自带EthernetService,默认开机就会启动,默 ...

  10. IOS APP端京东支付集成

    京东支付没有现成的SDK, 使用的是加载html.因此,在集成京东支付的时候,我们使用webView来进行加载显示支付的页面. 京东支付需要传递多个参数才能拉起支付页面,那么我们怎么样获得和传递参数呢 ...

最新文章

  1. Supervisor 托管服务
  2. asp.net mvc4三层架构搭建
  3. 论文阅读:Deep Filter Banks for Texture Recognition and Segmentation
  4. 数组的定义格式一_动态初始化
  5. 编程类-----matlab基础语法复习(1)
  6. 安卓操作sqlite3,增删改查
  7. xgboost keras_用catboost lgbm xgboost和keras预测财务交易
  8. apkrenamer_实用软件ApkRenamer:一键重命名apk包
  9. 保护模式下的80386及其编程02:机器状态和存储寻址
  10. Linux C | 查看二进制文件的小工具HexView
  11. Navicat15注册时报错 rsa public key not find
  12. 发那科机器人示教器键盘_不限 发那科机器人示教器触摸屏急停按键失效维修...
  13. 上下文无关输入与输出java_正则表达式与上下文无关文法
  14. vue-quill-editor 上传视频
  15. 50万奖金池:欢迎全球学子报名参加中国移动第二届梧桐杯大数据应用创新大赛湖北赛道
  16. zed相机拆机_TX1入门教程硬件篇-外接双目相机ZED
  17. Sin City --《罪恶之城》
  18. Unity 1.Roll a Ball
  19. ubuntu vi 方向键乱
  20. 1到1000的奇数和偶数和

热门文章

  1. python 欧姆龙plc通信_二进制PLC通信校验和
  2. 移动磁盘修复、格式化【微PE】
  3. 简单的JSON解析工具
  4. R语言数据分析之一-《R语言下载及读取excel导入excel》
  5. 中国价格统计年鉴(2013-2021年)
  6. 苹果七绕过基带激活2020_【最新!】绕过苹果ID可激活
  7. 在一起计时器_三种在PPT里制作计时器的方法,超详细!超漂亮!
  8. 维修iphone6无服务器,苹果6通病——插卡无服务维修思路和教程
  9. java实现modbus rtu协议与 modscan等工具(4)rtu转tcp
  10. The (Near) Future of Database | TiDB DevCon 2019