6.0 增加京东支付

article/2025/9/12 6:21:31

给系统(只适合版本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

 


http://chatgpt.dhexx.cn/article/e8ppjs9l.shtml

相关文章

uniapp 让支付触手可及,封装了微信支付、QQ支付、支付宝支付、京东支付、银联支付常用的支付方式以及各种常用的接口

下载地址 https://gitee.com/zscat/mallplus 1.uniapp 接入各种h5支付 // 用户点击支付方式处理async toPayHandler(code) {let params = {orderId:this.orderId};let data = {payment_code: code,payment_type: this.type}data[orderId] = (this.type == 1 || this.type == …

RN对接京东支付sdk(IOS)

京东支付IOS接入说明文档 1、根据 京东支付IOS接入说明文档 集成sdk依赖的framework&#xff0c;配置相关的内容&#xff08;xcode 需要配置签名&#xff09; 2、在ios 下封装调用sdk的方法 JDPayManager.h // // JDPayManager.h // b2bapp // // Created by edz on 2021/…

Ecshop小京东支付插件【小京东个人支付宝即时到帐支付插件支持PC电脑版+手机版】

商之翼建立了一整套以标准化电商软件为基础的"一站式"全网营销电商解决方案。包括基于不同运维模式的B2B2B2C、B2B2C、B2C等被企业用户广泛使用的电商解决方案&#xff0c;还包括基于生鲜、农村、汽车、商超百货、建材、母婴、酒行业、跨境、社区等具体解决方案&…

京东支付逻辑存在不安全因素

写在前面的话: 写本文只想引起足够重视,不管是开发还是用户; 关于本文提到问题也提交给京东官方,希望他们能重视. 同时也希望看到本文的用户多一个心眼 希望大家都不要达到以下的全部假设; --------------------------- 以下测试完成于2015-09-08日; 测试条件与步骤: 一手机…

京东支付SDK重构设计与实现

背景 众所周知&#xff0c;软件开发效率、维护成本与自身复杂度成正比&#xff0c;而客户端软件复杂度则主要体现在业务规模上。 京东支付Android SDK从2015年启动以来&#xff0c;已历经五个春秋&#xff0c;如今发展到纯支付业务代码7.5W行的规模&#xff08;不含支付团队内…

php支付接口要改动的参数,京东支付接口2.0PHP集成遇到的一些问题:所有参数必须是string!...

最近发现京东的支付接口升级了&#xff0c;原来的接口以及不一样了&#xff0c;就花了点时间做了升级&#xff0c;但是遇到了一些很基础很二的问题&#xff0c;之前的时候接口跳转通知是get方式的&#xff0c;用在原来的支付驱动上面很正常&#xff0c;但是2.0的接口就没法正常…

京东支付接口

官方文档&#xff1a;http://payapi.jd.com/docList.html?methodName0# 一、本地测试(用官方自带参数测试) 1、下载官方接口文件: 京东支付PC&H5接口文档>>京东支付2.0-PHP 2、测试&#xff0c;把“京东支付2.0-PHP”解压出来的文件放到PHP环境中&#xff0c;什…

RN对接京东支付sdk(Android)

京东支付Android接入说明文档 1、根据 京东支付Android接入说明文档 集成sdk依赖的jar包&#xff0c;配置相关的内容&#xff08;主要根据文档一步一步配置就行&#xff0c;这里就不细说了&#xff0c;本章主要是关于使用RN调用sdk&#xff09; 2、在../android/app/src/java …

京东支付功能流程

1&#xff1a;目前市场上支付API的第三方很多&#xff0c;主流的接口有 支付宝&#xff0c;微信&#xff0c;京东&#xff0c;云闪付&#xff0c;银联 等等 主要包含 付款码支付 &#xff0c; JSAPI支付&#xff0c; APP支付&#xff0c;H5支付 &#xff0c; 小程序支付&…

微信公众账号自动回复小程序链接

<a data-miniprogram-appid"appid" data-miniprogram-path"路径" href"可以不写">小程序</a>效果图 文章引用于&#xff1a; http://dy.163.com/v2/article/detail/DR1H8P840511AOT5.html

微信开发者工具预览/真机调试报错SyntaxError: Invalid or unexpected token [1.06.2210310][win32-x64]

项目在微信开发者工具上能正常运行&#xff0c;但是当点击【预览】或者【真机调试】就会报错&#xff1a; SyntaxError: Invalid or unexpected token [1.06.2210310][win32-x64] 如果是本地调试的话&#xff0c;将以下这些勾选上。

问题解决:微信开发者工具显示清除登录状态失败 TypeError: Failed to fetch [1.06.2303220][win32-x64]

问题&#xff1a; 在编译之前&#xff0c;会进行清除全部缓存操作&#xff0c;但是点击后出现清除清除登录状态失败。 清除登录状态失败 TypeError: Failed to fetch [1.06.2303220][win32-x64]原因&#xff1a; 未连接网络&#xff0c;或者被你连接的网络拦截。 解决&#xf…

公众号自动回复消息添加跳转小程序链接

业务说明&#xff1a; 是要实现在小程序授权公众号收发消息功能 解决方案&#xff1a; 在用户关注后自动回复消息&#xff08;因为要实现授权前提是用户必须先关注了公众&#xff09;&#xff0c;在消息中添加可跳转小程序的链接&#xff0c;就可以将小程序的参数传到授权页面进…

传奇GOM原版引擎支持光柱吗?

很多新手不会设置GOM原版引擎的地面特效&#xff0c;或者说不知道在什么地方设置地面特效功能&#xff0c;今天传奇工具网就把设置方法分享给你们&#xff0c;需要先说明&#xff0c;免费版是不支持设置地面特效的&#xff0c;只有商业版才有这个功能。(文章未附插件下载&#…

使用 create-react-app 创建项目报错 无法加载文件 C:\Users\admin\AppData\Roaming\npm\create-react-app.ps1,因为在此系统上禁止运

报错信息如上 解决步骤 //打开Windows PowerSell //运行: //Set-ExecutionPolicy -Scope CurrentUser //出现ExecutionPolicy: 然后填入RemoteSigned//然后执行get-ExecutionPolicy //发现变成了RemoteSigned&#xff0c;就成功了之后再使用 create-react-app 创建项目就ok啦…

微信支付 公众号关联商户号

1.进入https://mp.weixin.qq.com/ 开发–基本配置–获取appid 2.进入https://pay.weixin.qq.com/ 产品中心–APPID授权管理 3.在下图输入appid 4.进入https://mp.weixin.qq.com/ 5.确认授权&#xff0c;授权成功

小程序授权流程,小程序登录过期,小程序二次请求

写这篇文章&#xff0c;主要是因为前阵子&#xff08;其实就是一两周前&#xff09;被大佬要求画出授权时序图&#xff0c;然后我不出意外被教训了一顿&#xff0c;哈哈&#xff0c;经过一顿梳理&#xff0c;整出了下图&#xff1a; 上图为相应的时序图&#xff08;字丑&#x…

uniapp-小程序发券插件-领券进入微信卡包

这两天有个需求,在小程序领券,然后该优惠券进入微信卡包. 官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter5_3_1.shtml 1.在小程序配置app.json 文件中加入如下配置&#xff1a; {"plugins": {"sendCoupon": {"version": …

wxFormBuilder + wxPython 工具开发第二章-日记本工具数据连接与展示

目录 前言 一、代码目录层级 二、数据库 三、数据表设计 四、展示数据 前言 上一章节已经介绍了如何将程序主窗口设计好生成python代码&#xff0c;运行成功的展示了窗体。 上一章内容地址&#xff1a; wxFormBuilder Python 工具开发第一章-拖出日记本图形界面_魂尾ac…

HBuidler运行小程序:rovider:wxf72d316417b6767f, version:1.0.1, AppID 不合法,invalid appid

解决&#xff1a; 这个是官方的demo,把对应的id值删掉就可以运行成功&#xff0c; 在微信开发者工具里&#xff0c;找到app.json, plugins里的2个广告配置删除可以运行成功。