public function direct_pay($ecv_sn, $ecv_password, $payment_notice_id)
 {
     $rs = payment_paid($payment_notice_id);
     if ($rs) {
         $GLOBALS['db']->query("update " . DB_PREFIX . "ecv set use_count = use_count + 1 where sn = '" . $ecv_sn . "' and password = '******'");
     }
 }
示例#2
0
 public function get_payment_code($payment_notice_id)
 {
     $rs = payment_paid($payment_notice_id);
     if ($rs) {
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where id = " . $payment_notice_id);
         $order_sn = $GLOBALS['db']->getOne("select order_sn from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
         require_once APP_ROOT_PATH . "system/model/user.php";
         $msg = sprintf('%s订单付款,付款单号%s', $order_sn, $payment_notice['notice_sn']);
         modify_account(array('money' => "-" . $payment_notice['money'], 'score' => 0), $payment_notice['user_id'], $msg);
     }
 }
 public function response($request)
 {
     $return_res = array('info' => '', 'status' => false);
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Yeepay'");
     $payment['config'] = unserialize($payment['config']);
     /* 检查数字签名是否正确 */
     $merchant_id = $payment['config']['yeepay_account'];
     // 获取商户编号
     $merchant_key = $payment['config']['yeepay_key'];
     // 获取秘钥
     $message_type = trim($request['r0_Cmd']);
     $succeed = trim($request['r1_Code']);
     // 获取交易结果,1成功,-1失败
     $trxId = trim($request['r2_TrxId']);
     //易宝的交易流水号
     $amount = trim($request['r3_Amt']);
     // 获取订单金额
     $cur = trim($request['r4_Cur']);
     // 获取订单货币单位
     $product_id = trim($request['r5_Pid']);
     // 获取产品ID
     $orderid = trim($request['r6_Order']);
     // 获取订单ID
     $userId = trim($request['r7_Uid']);
     // 获取产品ID
     $merchant_param = trim($request['r8_MP']);
     // 获取商户私有参数
     $bType = trim($request['r9_BType']);
     // 获取订单ID
     $mac = trim($request['hmac']);
     // 获取安全加密串
     ///生成加密串,注意顺序
     $ScrtStr = $merchant_id . $message_type . $succeed . $trxId . $amount . $cur . $product_id . $orderid . $userId . $merchant_param . $bType;
     $mymac = $this->HmacMd5($ScrtStr, $merchant_key);
     $payment_notice_sn = $orderid;
     $money = $amount;
     $outer_notice_sn = $trxId;
     if (strtoupper($mac) == strtoupper($mymac)) {
         if ($succeed == "1") {
             $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $payment_notice_sn . "'");
             require_once APP_ROOT_PATH . "system/libs/cart.php";
             $rs = payment_paid($payment_notice['id'], $outer_notice_sn);
             $is_paid = intval($GLOBALS['db']->getOne("select is_paid from " . DB_PREFIX . "payment_notice where id = '" . intval($payment_notice['id']) . "'"));
             if ($is_paid == 1) {
                 if ($bType == "2") {
                     echo "success";
                     exit;
                 }
                 app_redirect(url("index", "payment#incharge_done", array("id" => $payment_notice['id'])));
                 //支付成功
             } else {
                 app_redirect(url("index", "payment#pay", array("id" => $payment_notice['id'])));
             }
         } else {
             showErr($GLOBALS['payment_lang']["PAY_FAILED"]);
         }
     } else {
         showErr($GLOBALS['payment_lang']["PAY_FAILED"]);
     }
 }
 public function update()
 {
     $notice_id = intval($_REQUEST['id']);
     $outer_notice_sn = strim($_REQUEST['outer_notice_sn']);
     $bank_id = strim($_REQUEST['bank_id']);
     //开始由管理员手动收款
     require_once APP_ROOT_PATH . "system/libs/cart.php";
     $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where id = " . $notice_id);
     if ($payment_notice['is_paid'] == 0) {
         //			if($bank_id)
         //			{
         //				$GLOBALS['db']->query("update ".DB_PREFIX."payment_notice set  bank_id = ".$bank_id." where id = ".$notice_id." and is_paid = 0");
         //			}else{
         //				//$this->error ("请输入直联银行编号");
         //			}
         payment_paid($notice_id, "订单号 " . ':' . $payment_notice['notice_sn']);
         //对其中一条款支付的付款单付款
         $msg = sprintf(l("ADMIN_PAYMENT_PAID"), $payment_notice['notice_sn']);
         save_log($msg, 1);
         $this->success(l("ORDER_PAID_SUCCESS"));
     } else {
         $this->error(l("INVALID_OPERATION"));
     }
 }
 public function notify($request)
 {
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Chinabank'");
     $payment['config'] = unserialize($payment['config']);
     $v_oid = trim($request['v_oid']);
     $v_idx = trim($request['v_idx']);
     $v_pstatus = trim($request['v_pstatus']);
     $v_amount = trim($request['v_amount']);
     $v_moneytype = trim($request['v_moneytype']);
     $v_md5str = trim($request['v_md5str']);
     $outer_notice_sn = $v_idx;
     //开始初始化参数
     $payment_notice_id = $v_oid;
     $money = $v_amount;
     $payment_id = $payment['id'];
     /**
      * 重新计算md5的值
      */
     $key = $payment['config']['chinabank_key'];
     $md5string = strtoupper(md5($v_oid . $v_pstatus . $v_amount . $v_moneytype . $key));
     if ($v_md5str == $md5string && $v_pstatus == '20') {
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $payment_notice_id . "'");
         require_once APP_ROOT_PATH . "system/libs/cart.php";
         $rs = payment_paid($payment_notice['notice_sn'], $outer_notice_sn);
         echo "ok";
     } else {
         echo 'error';
     }
 }
 public function notify($request)
 {
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Paypal'");
     $payment['config'] = unserialize($payment['config']);
     $merchant_id = $payment['config']['paypal_account'];
     // assign posted variables to local variables
     $item_name = $request['item_name'];
     $item_number = $request['item_number'];
     $payment_status = $request['payment_status'];
     $payment_amount = floatval($request['mc_gross']);
     $payment_currency = $request['mc_currency'];
     $txn_id = $request['txn_id'];
     $receiver_email = $request['receiver_email'];
     $payer_email = $request['payer_email'];
     $data_id = $request['invoice'];
     //开始初始化参数
     $payment_notice_sn = $data_id;
     $money = $payment_amount;
     $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $payment_notice_sn . "'");
     $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
     if ($payment_status != 'Completed' && $payment_status != 'Pending') {
         echo 0;
     } elseif ($receiver_email != $merchant_id) {
         echo 0;
     } elseif (abs($payment_notice['money'] * $payment['config']['paypal_rate'] - $payment_amount) > 0.008999999999999999) {
         echo 0;
     } elseif ($payment['config']['paypal_currency'] != $payment_currency) {
         echo 0;
     } else {
         require_once APP_ROOT_PATH . "system/libs/cart.php";
         $rs = payment_paid($payment_notice['id'], $txn_id);
         if ($rs) {
             $rs = order_paid($payment_notice['order_id']);
             echo 1;
         } else {
             echo 0;
         }
     }
 }
 public function notify($request)
 {
     $return_res = array('info' => '', 'status' => false);
     /* 取返回参数 */
     $MemberID = $request['MemberID'];
     //商户号
     $TerminalID = $request['TerminalID'];
     //商户终端号
     $TransID = $request['TransID'];
     //商户流水号
     $Result = $request['Result'];
     //支付结果
     $ResultDesc = $request['ResultDesc'];
     //支付结果描述
     $FactMoney = $request['FactMoney'];
     //实际成功金额
     $AdditionalInfo = $request['AdditionalInfo'];
     //订单附加消息
     $SuccTime = $request['SuccTime'];
     //支付完成时间
     $Md5Sign = $request['Md5Sign'];
     //md5签名
     /*获取支付信息*/
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Bfwap'");
     $payment['config'] = unserialize($payment['config']);
     $_Md5Key = $payment['config']['baofoo_key'];
     $payment_notice_sn = intval($AdditionalInfo);
     $gopayOutOrderId = $TransID;
     $MARK = "~|~";
     /*比对连接加密字符串*/
     $WaitSign = md5('MemberID=' . $MemberID . $MARK . 'TerminalID=' . $TerminalID . $MARK . 'TransID=' . $TransID . $MARK . 'Result=' . $Result . $MARK . 'ResultDesc=' . $ResultDesc . $MARK . 'FactMoney=' . $FactMoney . $MARK . 'AdditionalInfo=' . $AdditionalInfo . $MARK . 'SuccTime=' . $SuccTime . $MARK . 'Md5Sign=' . $_Md5Key);
     if ($Md5Sign != $WaitSign) {
         echo "Md5CheckFail";
     } else {
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where id = '" . $payment_notice_sn . "'");
         $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
         require_once APP_ROOT_PATH . "system/libs/cart.php";
         $rs = payment_paid($payment_notice['id'], $gopayOutOrderId);
         if ($rs) {
             $rs = order_paid($payment_notice['order_id']);
             if ($rs) {
                 //开始更新相应的outer_notice_sn
                 //$GLOBALS['db']->query("update ".DB_PREFIX."payment_notice set outer_notice_sn = '".$gopayOutOrderId."' where id = ".$payment_notice['id']);
                 echo "OK";
             } else {
                 echo "OK";
             }
         } else {
             echo "OrderFail";
         }
     }
 }
示例#8
0
 public function notify($request)
 {
     unset($request['city']);
     unset($request['ctl']);
     unset($request['act']);
     unset($request['class_name']);
     unset($_POST['city']);
     unset($_POST['ctl']);
     unset($_POST['act']);
     unset($_POST['class_name']);
     $upop_evn = $this->upop_evn;
     $return_res = array('info' => '', 'status' => false);
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Upop'");
     $payment['config'] = unserialize($payment['config']);
     // 商户名称
     quickpay_conf::$pay_params['merAbbr'] = $payment['config']['upop_merAbbr'];
     foreach (Upop_payment::$api_url[$upop_evn] as $key => $value) {
         quickpay_conf::${$key} = $value;
     }
     if ($upop_evn == '2') {
         quickpay_conf::$security_key = $payment['config']['upop_security_key'];
         quickpay_conf::$pay_params['merId'] = $payment['config']['upop_account'];
     } else {
         if ($upop_evn == '1') {
             quickpay_conf::$security_key = $payment['config']['upop_security_key_pm'];
             quickpay_conf::$pay_params['merId'] = $payment['config']['upop_account_pm'];
         } else {
             if ($upop_evn == '0') {
                 quickpay_conf::$security_key = $payment['upop_security_key'];
                 quickpay_conf::$pay_params['merId'] = $payment['upop_account'];
             }
         }
     }
     try {
         $response = new quickpay_service($request, quickpay_conf::RESPONSE);
         if ($response->get('respCode') != quickpay_service::RESP_SUCCESS) {
             $err = sprintf("Error: %d => %s", $response->get('respCode'), $response->get('respMsg'));
             showErr($err);
         }
         $arr_ret = $response->get_args();
         if (quickpay_conf::$pay_params['merId'] != $arr_ret['merId']) {
             echo "fail";
             die;
         }
         // 如果未支付成功。
         if ($arr_ret['respCode'] != '00') {
             echo "fail";
             die;
         }
         //告诉用户交易完成
         $payment_notice_sn = $arr_ret['orderNumber'];
         $outer_notice_sn = $arr_ret['orderNumber'];
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $payment_notice_sn . "'");
         $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
         require_once APP_ROOT_PATH . "system/model/cart.php";
         $rs = payment_paid($payment_notice['id']);
         if ($rs) {
             $rs = order_paid($payment_notice['order_id']);
             if ($rs) {
                 //开始更新相应的outer_notice_sn
                 $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $outer_notice_sn . "' where id = " . $payment_notice['id']);
                 echo "Success";
             } else {
                 echo "Success";
             }
         } else {
             app_redirect(url("index", "payment#pay", array("id" => $payment_notice['id'])));
         }
     } catch (Exception $exp) {
         $str .= var_export($exp, true);
         echo "fail";
     }
 }
示例#9
0
 public function notify($request)
 {
     $return_res = array('info' => '', 'status' => false);
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Sdo'");
     $payment['config'] = unserialize($payment['config']);
     //获取参数
     $_amount = $request["Amount"];
     //订单金额
     $_payAmount = $request["PayAmount"];
     //实际支付金额
     $_orderNo = $request["OrderNo"];
     //商户订单号
     $_serialNo = $request["serialno"];
     //支付序列号
     $_status = $request["Status"];
     //支付状态 "01"表示成功
     $_merchantNo = $request["MerchantNo"];
     //商户号
     $_payChannel = $request["PayChannel"];
     //实际支付渠道
     $_discount = $request["Discount"];
     //实际折扣率
     $_signType = $request["SignType"];
     //签名方式。1-RSA 2-Md5
     $_payTime = $request["PayTime"];
     //支付时间
     $_currencyType = $request["CurrencyType"];
     //货币类型
     $_productNo = $request["ProductNo"];
     //产品编号
     $_productDesc = $request["ProductDesc"];
     //产品描述
     $_remark1 = $request["Remark1"];
     //产品备注1
     $_remark2 = $request["Remark2"];
     //产品备注2
     $_exInfo = $request["ExInfo"];
     //额外的返回信息
     $_mac = $request["MAC"];
     //签名字符串
     $verifyResult = $this->verifySign($_amount, $_payAmount, $_orderNo, $_serialNo, $_status, $_merchantNo, $_payChannel, $_discount, $_signType, $_payTime, $_currencyType, $_productNo, $_productDesc, $_remark1, $_remark2, $_exInfo, $payment['config']['sdo_key']);
     if (strtoupper($verifyResult) == strtoupper($_mac)) {
         $payment_log_id = intval($_orderNo);
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where id = '" . $payment_log_id . "'");
         $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
         require_once APP_ROOT_PATH . "system/libs/cart.php";
         $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $_serialNo . "' where id = " . $payment_notice['id']);
         $rs = payment_paid($payment_notice['id']);
         if ($rs) {
             $rs = order_paid($payment_notice['order_id']);
             if ($rs) {
                 if ($order_info['type'] == 0) {
                     app_redirect(url("shop", "payment#done", array("id" => $payment_notice['order_id'])));
                 } else {
                     app_redirect(url("shop", "payment#incharge_done", array("id" => $payment_notice['order_id'])));
                 }
                 //支付成功
             } else {
                 if ($order_info['pay_status'] == 2) {
                     if ($order_info['type'] == 0) {
                         app_redirect(url("shop", "payment#done", array("id" => $payment_notice['order_id'])));
                     } else {
                         app_redirect(url("shop", "payment#incharge_done", array("id" => $payment_notice['order_id'])));
                     }
                     //支付成功
                 } else {
                     app_redirect(url("shop", "payment#pay", array("id" => $payment_notice['id'])));
                 }
             }
         } else {
             app_redirect(url("shop", "payment#pay", array("id" => $payment_notice['id'])));
         }
     } else {
         showErr($GLOBALS['payment_lang']["PAY_FAILED"]);
     }
 }
示例#10
0
$key = "jz";
//干扰码:jz
$notice_sn = $_REQUEST['apporderid'];
$trade_no = $_REQUEST['order_id'];
$sign = $_REQUEST['sign'];
//除去待签名参数数组中的空值和签名参数
$para_filter = paraFilter($_REQUEST);
//对待签名参数数组排序
$para_sort = argSort($para_filter);
//生成签名结果
$sign_str = createLinkstring($para_sort);
$mysign = md5($sign_str . $key);
/*
$sign_str = $amount.$apporderid.$order_id;
$mysign = md5($sing_str.$key);
*/
if ($sign == $mysign) {
    $apporderid = $_REQUEST['apporderid'];
    $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $notice_sn . "'");
    require_once APP_ROOT_PATH . "system/libs/cart.php";
    $rs = payment_paid($notice_sn, $trade_no);
    if ($rs) {
        $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $trade_no . "' where id = " . $payment_notice['id']);
    }
    $url = APP_ROOT . "/../wap/index.php?ctl=cart&act=pay_result&id=" . $payment_notice['id'];
    app_redirect($url);
} else {
    //验证失败
    $url = APP_ROOT . "/../wap/index.php?ctl=cart&act=pay_result";
    app_redirect($url);
}
示例#11
0
 public function incharge()
 {
     $id = intval($_REQUEST['id']);
     $order_info = M("DealOrder")->getById($id);
     if ($order_info) {
         if ($order_info['order_status'] == 0) {
             $result = pay_order($order_info['id']);
             $money = $result['money'];
             $payment_notice['create_time'] = get_gmtime();
             $payment_notice['user_id'] = $order_info['user_id'];
             $payment_notice['payment_id'] = 0;
             $payment_notice['money'] = $money;
             $payment_notice['bank_id'] = "";
             $payment_notice['order_id'] = $order_info['id'];
             $payment_notice['memo'] = "管理员收款";
             $payment_notice['deal_id'] = $order_info['deal_id'];
             $payment_notice['deal_item_id'] = $order_info['deal_item_id'];
             $payment_notice['deal_name'] = $order_info['deal_name'];
             do {
                 $payment_notice['notice_sn'] = to_date(get_gmtime(), "Ymd") . rand(100, 999);
                 $GLOBALS['db']->autoExecute(DB_PREFIX . "payment_notice", $payment_notice, "INSERT", "", "SILENT");
                 $notice_id = $GLOBALS['db']->insert_id();
             } while ($notice_id == 0);
             require_once APP_ROOT_PATH . "system/libs/cart.php";
             $rs = payment_paid($payment_notice['notice_sn'], "");
             $this->error("收款完成");
         } else {
             $this->error("已经付过款");
         }
     } else {
         $this->error("没有该项目的支持");
     }
 }
示例#12
0
 public function notify($request)
 {
     $return_res = array('info' => '', 'status' => false);
     //file_put_contents("./system/payment/log/notify_".strftime("%Y%m%d%H%M%S",time()).".txt",print_r($request,true));
     //$payment_id = $GLOBALS['db']->getOne("select payment_id from ".DB_PREFIX."payment_log where id=".intval($ext1));
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Allinpay'");
     $payment['config'] = unserialize($payment['config']);
     //print_r($payment['config']);exit;
     $merchant_acctid = trim($payment['config']['merchant_id']);
     //人民币账号 不可空
     $key = trim($payment['config']['md5_key']);
     $merchantId = $request["merchantId"];
     $version = $request['version'];
     $language = $request['language'];
     $signType = $request['signType'];
     $payType = $request['payType'];
     $issuerId = $request['issuerId'];
     $paymentOrderId = $request['paymentOrderId'];
     $orderNo = $request['orderNo'];
     $orderDatetime = $request['orderDatetime'];
     $orderAmount = $request['orderAmount'];
     $payDatetime = $request['payDatetime'];
     $payAmount = $request['payAmount'];
     $ext1 = $request['ext1'];
     $ext2 = $request['ext2'];
     $payResult = $request['payResult'];
     $errorCode = $request['errorCode'];
     $returnDatetime = $request['returnDatetime'];
     $signMsg = $request["signMsg"];
     $bufSignSrc = "";
     if ($merchantId != "") {
         $bufSignSrc = $bufSignSrc . "merchantId=" . $merchantId . "&";
     }
     if ($version != "") {
         $bufSignSrc = $bufSignSrc . "version=" . $version . "&";
     }
     if ($language != "") {
         $bufSignSrc = $bufSignSrc . "language=" . $language . "&";
     }
     if ($signType != "") {
         $bufSignSrc = $bufSignSrc . "signType=" . $signType . "&";
     }
     if ($payType != "") {
         $bufSignSrc = $bufSignSrc . "payType=" . $payType . "&";
     }
     if ($issuerId != "") {
         $bufSignSrc = $bufSignSrc . "issuerId=" . $issuerId . "&";
     }
     if ($paymentOrderId != "") {
         $bufSignSrc = $bufSignSrc . "paymentOrderId=" . $paymentOrderId . "&";
     }
     if ($orderNo != "") {
         $bufSignSrc = $bufSignSrc . "orderNo=" . $orderNo . "&";
     }
     if ($orderDatetime != "") {
         $bufSignSrc = $bufSignSrc . "orderDatetime=" . $orderDatetime . "&";
     }
     if ($orderAmount != "") {
         $bufSignSrc = $bufSignSrc . "orderAmount=" . $orderAmount . "&";
     }
     if ($payDatetime != "") {
         $bufSignSrc = $bufSignSrc . "payDatetime=" . $payDatetime . "&";
     }
     if ($payAmount != "") {
         $bufSignSrc = $bufSignSrc . "payAmount=" . $payAmount . "&";
     }
     if ($ext1 != "") {
         $bufSignSrc = $bufSignSrc . "ext1=" . $ext1 . "&";
     }
     if ($ext2 != "") {
         $bufSignSrc = $bufSignSrc . "ext2=" . $ext2 . "&";
     }
     if ($payResult != "") {
         $bufSignSrc = $bufSignSrc . "payResult=" . $payResult . "&";
     }
     if ($errorCode != "") {
         $bufSignSrc = $bufSignSrc . "errorCode=" . $errorCode . "&";
     }
     if ($returnDatetime != "") {
         $bufSignSrc = $bufSignSrc . "returnDatetime=" . $returnDatetime;
     }
     /*
     //验签
     //解析publickey.txt文本获取公钥信息
     $publickeycontent = trim($payment['config']['public_key']);
     //echo "<br>".$content;
     $publickeyarray = explode(PHP_EOL, $publickeycontent);
     $publickey = explode('=',$publickeyarray[0]);
     $modulus = explode('=',$publickeyarray[1]);
     //echo "<br>publickey=".$publickey[1];
     //echo "<br>modulus=".$modulus[1];
     */
     $publickey = trim($payment['config']['public_exponent']);
     $modulus = trim($payment['config']['public_modulus']);
     require_once APP_ROOT_PATH . "system/payment/Allinpay/php_rsa.php";
     $keylength = 1024;
     //验签结果
     //$verifyResult = rsa_verify($bufSignSrc,$signMsg, $publickey[1], $modulus[1], $keylength,"sha1");
     $verifyResult = rsa_verify($bufSignSrc, $signMsg, $publickey, $modulus, $keylength, "sha1");
     /*
     echo 'bufSignSrc:'.$bufSignSrc."<br>";
     	echo 'signMsg:'.$signMsg."<br>";
     	echo 'publickey:'.$publickey."<br>";
     	echo 'modulus:'.$modulus."<br>";
     	
     	if($verifyResult){	
     echo "报文验签成功!";
     	}else{
     echo "报文验签失败!";
     	}
     	exit;
     */
     if ($verifyResult) {
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $orderNo . "'");
         require_once APP_ROOT_PATH . "system/libs/cart.php";
         $rs = payment_paid($payment_notice['id'], $paymentOrderId);
         $is_paid = intval($GLOBALS['db']->getOne("select is_paid from " . DB_PREFIX . "payment_notice where id = '" . intval($payment_notice['id']) . "'"));
         if ($is_paid == 1) {
             echo '1';
         } else {
             echo '0';
         }
     } else {
         echo '0';
     }
 }
示例#13
0
	empty-cells: show;
}
</style>
</head>
<body>
	<?php 
$param = $_REQUEST;
$from = $param['from'];
unset($param['from']);
if (isset($param['signature']) && verify($param)) {
    $outer_notice_sn = $param['queryId'];
    $payment_notice_sn = $param['orderId'];
    $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $payment_notice_sn . "'");
    if ($param['respCode'] == '00') {
        require_once APP_ROOT_PATH . "system/libs/cart.php";
        $rs = payment_paid($payment_notice_sn, $outer_notice_sn);
        if ($from == 'wap') {
            $url = APP_ROOT . "/../wap/index.php?ctl=cart&act=pay_result&id=" . $payment_notice['id'];
            app_redirect($url);
        } else {
            echo "支付成功<br />请点左上角<b>返回</b>按钮";
        }
    } else {
        if ($from == 'wap') {
            $url = APP_ROOT . "/../wap/index.php?ctl=cart&act=pay_result&id=" . $payment_notice['id'];
            app_redirect($url);
        } else {
            echo "支付失败<br />请点左上角<b>返回</b>按钮";
        }
    }
} else {
示例#14
0
 public function response($request)
 {
     //echo APP_ROOT_PATH."/alipaylog/ealipay_".date("Y-m-d H:i:s").".txt";exit;
     //@file_put_contents(APP_ROOT_PATH."/alipaylog/ealipay_".date("Y-m-dHis").".txt",$_SERVER["REQUEST_URI"].print_r($_REQUEST,true));
     /**
     		 * 4.1     服务器通知服务 
     
     		通知参数:notify_data,sign 
     		
     		签名原始字符串: 
     		notify_data=<notify> 
     		    <trade_status>TRADE_FINISHED</trade_status> 
     		    <total_fee>25.00</total_fee> 
     		    <subject>product24</subject> 
     		    <out_trade_no>500000020113134</out_trade_no> 
     		    <notify_reg_time>2010-09-20 15:26:51.000</notify_reg_time> 
     		    <trade_no>2010092000164773</trade_no> 
     		</notify> 
     		
     		签名结果: 
     		sign=590e7b2b1faf573847008d0234992066 
     		
     		TRADE_FINISHED 表示交易成功; 
     		WAIT_BUYER_PAY 等待买家付款。 
     */
     $sign = $request['sign'];
     $notify_data = $request['notify_data'];
     $config_str = $sign . ";notify_data=" . $notify_data;
     //@file_put_contents(APP_ROOT_PATH."/alipaylog/ealipay_".date("Y-m-d H:i:s").".txt",$config_str);
     //
     //		print_r($request)."<br /><br />";
     //		echo $request['notify_data']."<br /><br />";
     //		echo $notify_data."<br /><br />";
     $para_data = @XML_unserialize($notify_data);
     //@file_put_contents(APP_ROOT_PATH."/alipaylog/ealipay2_".date("Y-m-dHis").".txt",print_r($para_data,true));
     $payment_notice_sn = $para_data['notify']['out_trade_no'];
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Malipay'");
     $payment['config'] = unserialize($payment['config']);
     $pubkey = $payment['config']['alipay_rsa_public'];
     //$pubkey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCRm32ueC6j8MiUCUSrHZpSICJmE3nSt3puyh8Yc1MlHlkNy3WSESTtbbihkhvwQnpHkkBdZtcQLkP3ZcXFOaSgPHcLRLRbICtrrpB7AsAfeRV83LGY1mKwqixNzZUGIZl4ZkHrS3x2GiNCwf10es2CeAtkldlO6NE2MGOKRgv3wQIDAQAB';
     $pubkey = $this->getPublicKeyFromX509($pubkey);
     $res = openssl_pkey_get_public($pubkey);
     $sign = base64_decode($sign);
     $verify = openssl_verify("notify_data=" . $notify_data, $sign, $res);
     if ($verify == 1) {
         $trade_status = $para_data['notify']['trade_status'];
         $money = $para_data['notify']['total_fee'];
         $outer_notice_sn = $para_data['notify']['trade_no'];
         if ($trade_status == 'TRADE_SUCCESS' || $trade_status == 'TRADE_FINISHED' || $trade_status == 'WAIT_SELLER_SEND_GOODS') {
             $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $payment_notice_sn . "'");
             //file_put_contents(APP_ROOT_PATH."/alipaylog/payment_notice_sn_3.txt",$payment_notice_sn);
             $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
             require_once APP_ROOT_PATH . "system/model/cart.php";
             $rs = payment_paid($payment_notice['id']);
             if ($rs) {
                 //file_put_contents(APP_ROOT_PATH."/alipaylog/1.txt","");
                 $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $outer_notice_sn . "' where id = " . $payment_notice['id']);
                 order_paid($payment_notice['order_id']);
                 echo "success";
             } else {
                 //file_put_contents(APP_ROOT_PATH."/alipaylog/2.txt","");
                 echo "success";
             }
         } else {
             //file_put_contents(APP_ROOT_PATH."/alipaylog/3.txt","");
             echo "fail";
         }
     } else {
         //file_put_contents(APP_ROOT_PATH."/alipaylog/4.txt","");
         echo "fail";
     }
     exit;
 }
 public function notify($request)
 {
     $return_res = array('info' => '', 'status' => false);
     $BillNo = $_POST["BillNo"];
     $Amount = $_POST["Amount"];
     $Succeed = $_POST["Succeed"];
     $MD5info = $_POST["MD5info"];
     $Result = $_POST["Result"];
     $payment_notice_sn = $_POST['MerRemark'];
     /*获取支付信息*/
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Sqepay'");
     $payment['config'] = unserialize($payment['config']);
     $MerNo = $payment['config']['merno'];
     $MD5key = $payment['config']['md5key'];
     /*比对连接加密字符串*/
     $md5sign = $this->getSignature_return($MerNo, $BillNo, $Amount, $Succeed, $MD5key);
     if ($MD5info == $md5sign && $Succeed == "88") {
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where id = '" . $payment_notice_sn . "'");
         $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
         require_once APP_ROOT_PATH . "system/libs/cart.php";
         $rs = payment_paid($payment_notice['id'], $BillNo);
         if ($rs) {
             $rs = order_paid($payment_notice['order_id']);
             if ($rs) {
                 //开始更新相应的outer_notice_sn
                 //$GLOBALS['db']->query("update ".DB_PREFIX."payment_notice set outer_notice_sn = '".$BillNo."' where id = ".$payment_notice['id']);
                 echo 1;
                 die;
             } else {
                 echo 1;
                 die;
             }
         } else {
             echo 1;
             die;
         }
     } else {
         echo 0;
         die;
     }
 }
示例#16
0
 function notify($request)
 {
     /*取返回参数*/
     $billno = $request['billno'];
     $amount = $request['amount'];
     $mydate = $request['date'];
     $succ = $request['succ'];
     $msg = $request['msg'];
     $attach = $request['attach'];
     $ipsbillno = $request['ipsbillno'];
     $retEncodeType = $request['retencodetype'];
     $currency_type = $request['Currency_type'];
     $signature = $request['signature'];
     $content = 'billno' . $billno . 'currencytype' . $currency_type . 'amount' . $amount . 'date' . $mydate . 'succ' . $succ . 'ipsbillno' . $ipsbillno . 'retencodetype' . $retEncodeType;
     $payment_info = $GLOBALS['db']->getRow("select id,config,logo from " . DB_PREFIX . "payment where class_name='Ips'");
     $payment_info['config'] = unserialize($payment_info['config']);
     $payment_info['config']['Mer_key'];
     //请在该字段中放置商户登陆merchant.ips.com.cn下载的证书
     $cert = $payment_info['config']['Mer_key'];
     $signature_1ocal = md5($content . $cert);
     if ($signature_1ocal == $signature && $succ == "Y") {
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $billno . "'");
         $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
         require_once APP_ROOT_PATH . "system/libs/cart.php";
         $rs = payment_paid($payment_notice['id']);
         if ($rs) {
             $rs = order_paid($payment_notice['order_id']);
             if ($rs) {
                 //开始更新相应的outer_notice_sn
                 $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $ipsbillno . "' where id = " . $payment_notice['id']);
                 echo "Success";
                 die;
             } else {
                 echo "Success";
                 die;
             }
         } else {
             echo "Success";
             die;
         }
     } else {
         echo "Failed";
         die;
     }
 }
 public function notify($request)
 {
     //		$url = "http://o2o.7dit.com/tenpay.php?";
     //		foreach($_REQUEST as $k=>$v)
     //		{
     //			$url.=$k."=".$v."&";
     //		}
     //		$str = file_get_contents(APP_ROOT_PATH."log.txt")."\n".print_r($_REQUEST,1)."\n".$url;
     //		@file_put_contents(APP_ROOT_PATH."log.txt", $str);
     require_once APP_ROOT_PATH . "system/payment/tenpayc2c/ResponseHandler.class.php";
     require_once APP_ROOT_PATH . "system/payment/tenpayc2c/RequestHandler.class.php";
     require_once APP_ROOT_PATH . "system/payment/tenpayc2c/TenpayHttpClient.class.php";
     require_once APP_ROOT_PATH . "system/payment/tenpayc2c/ClientResponseHandler.class.php";
     $return_res = array('info' => '', 'status' => false);
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='tenpayc2c'");
     $payment['config'] = unserialize($payment['config']);
     /* 创建支付应答对象 */
     $resHandler = new ResponseHandler();
     $resHandler->setKey($payment['config']['tencentpay_key']);
     //判断签名
     if ($resHandler->isTenpaySign()) {
         //通知id
         //		error_reporting(E_ALL);
         //		ini_set("display_errors",1);
         $notify_id = $resHandler->getParameter("notify_id");
         //通过通知ID查询,确保通知来至财付通
         //创建查询请求
         $queryReq = new RequestHandler();
         $queryReq->init();
         $queryReq->setKey($payment['config']['tencentpay_key']);
         $queryReq->setGateUrl("https://gw.tenpay.com/gateway/simpleverifynotifyid.xml");
         $queryReq->setParameter("partner", $payment['config']['tencentpay_id']);
         $queryReq->setParameter("notify_id", $notify_id);
         //通信对象
         $httpClient = new TenpayHttpClient();
         $httpClient->setTimeOut(5);
         //设置请求内容
         $httpClient->setReqContent($queryReq->getRequestURL());
         //后台调用
         if ($httpClient->call()) {
             //设置结果参数
             $queryRes = new ClientResponseHandler();
             $queryRes->setContent($httpClient->getResContent());
             $queryRes->setKey($payment['config']['tencentpay_key']);
             if ($resHandler->getParameter("trade_mode") == "2") {
                 //判断签名及结果(中介担保)
                 //只有签名正确,retcode为0,trade_state为0才是支付成功
                 //				print_r($queryRes);
                 if ($queryRes->isTenpaySign() && $queryRes->getParameter("retcode") == "0") {
                     //取结果参数做业务处理
                     $out_trade_no = $resHandler->getParameter("out_trade_no");
                     //财付通订单号
                     $transaction_id = $resHandler->getParameter("transaction_id");
                     //金额,以分为单位
                     $total_fee = $resHandler->getParameter("total_fee");
                     //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
                     $discount = $resHandler->getParameter("discount");
                     //------------------------------
                     //处理业务开始
                     //------------------------------
                     //处理数据库逻辑
                     //注意交易单不要重复处理
                     //注意判断返回金额
                     if ($resHandler->getParameter("trade_state") == "0" || $resHandler->getParameter("trade_state") == '5' || $resHandler->getParameter("status") == "3") {
                         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $out_trade_no . "'");
                         $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
                         require_once APP_ROOT_PATH . "system/libs/cart.php";
                         $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $transaction_id . "' where id = " . $payment_notice['id']);
                         $rs = payment_paid($payment_notice['id']);
                         if ($rs) {
                             order_paid($payment_notice['order_id']);
                             echo "success";
                         } else {
                             echo 'fail';
                         }
                     } else {
                         echo "success";
                     }
                 } else {
                     //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。
                     //echo "验证签名失败 或 业务错误信息:trade_state=" . $resHandler->getParameter("trade_state") . ",retcode=" . $queryRes->             										       getParameter("retcode"). ",retmsg=" . $queryRes->getParameter("retmsg") . "<br/>" ;
                     echo "fail";
                 }
             }
             //获取查询的debug信息,建议把请求、应答内容、debug信息,通信返回码写入日志,方便定位问题
             /*
             echo "<br>------------------------------------------------------<br>";
             echo "http res:" . $httpClient->getResponseCode() . "," . $httpClient->getErrInfo() . "<br>";
             echo "query req:" . htmlentities($queryReq->getRequestURL(), ENT_NOQUOTES, "GB2312") . "<br><br>";
             echo "query res:" . htmlentities($queryRes->getContent(), ENT_NOQUOTES, "GB2312") . "<br><br>";
             echo "query reqdebug:" . $queryReq->getDebugInfo() . "<br><br>" ;
             echo "query resdebug:" . $queryRes->getDebugInfo() . "<br><br>";
             */
         } else {
             //通信失败
             echo "fail";
             //后台调用通信失败,写日志,方便定位问题
             echo "<br>call err:" . $httpClient->getResponseCode() . "," . $httpClient->getErrInfo() . "<br>";
         }
     } else {
         header("Content-Type:text/html; charset=utf-8");
         echo "<br/>" . "认证签名失败" . "<br/>";
         echo $resHandler->getDebugInfo() . "<br>";
     }
 }
 public function notify($request)
 {
     $return_res = array('info' => '', 'status' => false);
     $payment_notice_sn = $BillNo = $request["BillNo"];
     $Amount = $request["Amount"];
     $Succeed = $request["Succeed"];
     $MD5info = $request["MD5info"];
     $Result = $request["Result"];
     $payment_notice_id = $request['MerRemark'];
     /*获取支付信息*/
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Sqepay'");
     $payment['config'] = unserialize($payment['config']);
     $MerNo = $payment['config']['merno'];
     $MD5key = $payment['config']['md5key'];
     /*比对连接加密字符串*/
     $md5sign = $this->getSignature_return($MerNo, $BillNo, $Amount, $Succeed, $MD5key);
     if ($MD5info == $md5sign && $Succeed == "88") {
         require_once APP_ROOT_PATH . "system/libs/cart.php";
         $rs = payment_paid($payment_notice_sn, $BillNo);
         echo 1;
         die;
     } else {
         echo 0;
         die;
     }
 }
示例#19
0
 if ($payment_notice['is_paid'] == 1) {
     echo "订单已经收款";
     exit;
 }
 $trade_no = $_REQUEST['transaction_id'];
 $out_trade_no = $payment_notice['notice_sn'];
 if ($wx_config['type'] == 'V2') {
     $request = $_REQUEST;
     $sign = $request['sign'];
     unset($request['order_id'], $request['sign']);
     ksort($request);
     if ($notify->md5_verifySignature($notify->formatBizQueryParaMap($request, false), $sign, $notify->trimString($wx_config['partnerkey']))) {
         $pay_result = $request['trade_state'];
         if ($pay_result == 0) {
             require_once APP_ROOT_PATH . "system/libs/cart.php";
             $rs = payment_paid($out_trade_no, $trade_no);
             if ($rs) {
                 $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $trade_no . "' where id = " . $payment_notice['id']);
             }
             echo "success";
             //此处应该更新一下订单状态,商户自行增删操作
             $log_->log_result($log_name, "【支付成功】:\n" . $xml . "\n");
         } else {
             echo 'fail';
             exit;
         }
     } else {
         echo 'fail';
         exit;
     }
 }
 public function response($request)
 {
     $return_res = array('info' => '', 'status' => false);
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Tenpay'");
     $payment['config'] = unserialize($payment['config']);
     /*取返回参数*/
     $cmd_no = $request['cmdno'];
     $pay_result = $request['pay_result'];
     $pay_info = $request['pay_info'];
     $bill_date = $request['date'];
     $bargainor_id = $request['bargainor_id'];
     $transaction_id = $request['transaction_id'];
     $sp_billno = $request['sp_billno'];
     $total_fee = $request['total_fee'];
     $fee_type = $request['fee_type'];
     $attach = $request['attach'];
     $sign = $request['sign'];
     //$payment    = D("Payment")->where("class_name='Tencentpay'")->find();
     //$order_sn   = $bill_date . str_pad(intval($sp_billno), 5, '0', STR_PAD_LEFT);
     //$log_id = preg_replace('/0*([0-9]*)/', '\1', $sp_billno); //取得支付的log_id
     //开始初始化参数
     $payment_notice_id = intval($sp_billno);
     $payment_id = $payment['id'];
     if ($pay_result > 0) {
         showErr($GLOBALS['payment_lang']["PAY_FAILED"]);
     }
     $total_price = $total_fee / 100;
     /* 检查数字签名是否正确 */
     $sign_text = "cmdno=" . $cmd_no . "&pay_result=" . $pay_result . "&date=" . $bill_date . "&transaction_id=" . $transaction_id . "&sp_billno=" . $sp_billno . "&total_fee=" . $total_fee . "&fee_type=" . $fee_type . "&attach=" . $attach . "&key=" . $payment['config']['tencentpay_key'];
     $sign_md5 = strtoupper(md5($sign_text));
     if ($sign_md5 == $sign) {
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where id = '" . $payment_notice_id . "'");
         require_once APP_ROOT_PATH . "system/libs/cart.php";
         //$GLOBALS['db']->query("update ".DB_PREFIX."payment_notice set outer_notice_sn = '".$transaction_id."' where id = ".$payment_notice['id']);
         $rs = payment_paid($payment_notice['id'], $transaction_id);
         $is_paid = intval($GLOBALS['db']->getOne("select is_paid from " . DB_PREFIX . "payment_notice where id = '" . intval($payment_notice['id']) . "'"));
         if ($is_paid == 1) {
             app_redirect(url("index", "payment#incharge_done", array("id" => $payment_notice['id'])));
             //支付成功
         } else {
             app_redirect(url("index", "payment#pay", array("id" => $payment_notice['id'])));
         }
     } else {
         showErr($GLOBALS['payment_lang']["PAY_FAILED"]);
     }
 }
示例#21
0
    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
    //商户订单号
    $out_trade_no = $_GET['out_trade_no'];
    //支付宝交易号
    $trade_no = $_GET['trade_no'];
    //交易状态
    $result = $_GET['result'];
    //判断该笔订单是否在商户网站中已经做过处理
    //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
    //如果有做过处理,不执行商户的业务程序
    $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $out_trade_no . "'");
    //file_put_contents(APP_ROOT_PATH."/alipaylog/payment_notice_sn_3.txt",$payment_notice_sn);
    $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
    require_once APP_ROOT_PATH . "system/libs/cart.php";
    $rs = payment_paid($payment_notice['id']);
    if ($rs) {
        //file_put_contents(APP_ROOT_PATH."/alipaylog/1.txt","");
        $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $trade_no . "' where id = " . $payment_notice['id']);
        order_paid($payment_notice['order_id']);
        echo "支付成功<br />请点左上角<b>返回</b>按钮";
    } else {
        //file_put_contents(APP_ROOT_PATH."/alipaylog/2.txt","");
        echo "支付成功<br />请点左上角<b>返回</b>按钮";
    }
    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
} else {
    //验证失败
    //如要调试,请看alipay_notify.php页面的verifyReturn函数
    echo "验证失败<br />请点左上角<b>返回</b>按钮";
示例#22
0
 //交易状态
 $trade_status = $doc->getElementsByTagName("trade_status")->item(0)->nodeValue;
 if ($trade_status == 'TRADE_FINISHED') {
     //判断该笔订单是否在商户网站中已经做过处理
     //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
     //如果有做过处理,不执行商户的业务程序
     //注意:
     //该种交易状态只在两种情况下出现
     //1、开通了普通即时到账,买家付款成功后。
     //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。
     //调试用,写文本函数记录程序运行情况是否正常
     //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
     $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $out_trade_no . "'");
     $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
     require_once APP_ROOT_PATH . "system/libs/cart.php";
     $rs = payment_paid($payment_notice['id'], $trade_no);
     if ($rs) {
         //file_put_contents(APP_ROOT_PATH."/alipaylog/1.txt","");
         //$GLOBALS['db']->query("update ".DB_PREFIX."payment_notice set outer_notice_sn = '".$trade_no."' where id = ".$payment_notice['id']);
         order_paid($payment_notice['order_id']);
         //echo "验证成功<br />";
     } else {
         //file_put_contents(APP_ROOT_PATH."/alipaylog/2.txt","");
         //echo "验证成功<br />";
     }
     echo "success";
     //请不要修改或删除
 } else {
     if ($trade_status == 'TRADE_SUCCESS') {
         //判断该笔订单是否在商户网站中已经做过处理
         //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
示例#23
0
 public function notify($request)
 {
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Yjpay'");
     $payment_info['config'] = unserialize($payment['config']);
     include "yeepay/yeepayMPay.php";
     /**
      *此类文件是有关回调的数据处理文件,根据易宝回调进行数据处理
      */
     $yeepay = new yeepayMPay($payment_info['config']['merchantaccount'], $payment_info['config']['merchantPublicKey'], $payment_info['config']['merchantPrivateKey'], $payment_info['config']['yeepayPublicKey']);
     try {
         $return = $yeepay->callback($_POST['data'], $_POST['encryptkey']);
         // TODO:添加订单处理逻辑代码
         /*
         名称 	中文说明 	数据类型 	描述
         merchantaccount 	商户账户 	string
         yborderid 	易宝交易流水号 	string
         orderid 	交易订单 	String
         amount 	支付金额 	int 	以“分”为单位的整型
         bankcode 	银行编码 	string 	支付卡所属银行的编码,如ICBC
         bank 	银行信息 	string 	支付卡所属银行的名称
         cardtype 	卡类型 	int 	支付卡的类型,1为借记卡,2为信用卡
         lastno 	卡号后4位 	string 	支付卡卡号后4位
         status 	订单状态 	int 	1:成功
         */
         $payment_notice_sn = $return['orderid'];
         $money = intval($return['amount'] / 100);
         $outer_notice_sn = $return['yborderid'];
         if ($return['amount'] == 1) {
             $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $payment_notice_sn . "'");
             $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
             require_once APP_ROOT_PATH . "system/libs/cart.php";
             $rs = payment_paid($payment_notice['id']);
             if ($rs) {
                 $rs = order_paid($payment_notice['order_id']);
                 if ($rs) {
                     //开始更新相应的outer_notice_sn
                     $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $outer_notice_sn . "' where id = " . $payment_notice['id']);
                     return 'success';
                 } else {
                     if ($order_info['pay_status'] == 2) {
                         return 'success';
                     } else {
                         return 'fail';
                     }
                 }
             } else {
                 return 'fail';
             }
         } else {
             return 'fail';
         }
     } catch (yeepayMPayException $e) {
         // TODO:添加订单支付异常逻辑代码
         return 'fail';
     }
 }
示例#24
0
 public function notify($request)
 {
     unset($_POST['city']);
     unset($_GET['city']);
     require APP_ROOT_PATH . "system/payment/TenpayBank/classes/ResponseHandler.class.php";
     require APP_ROOT_PATH . "system/payment/TenpayBank/classes/function.php";
     $return_res = array('info' => '', 'status' => false);
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='TenpayBank'");
     $payment['config'] = unserialize($payment['config']);
     $resHandler = new ResponseHandler();
     $resHandler->setKey($payment['config']['tencentpay_key']);
     //判断签名
     if ($resHandler->isTenpaySign()) {
         //通知id
         $notify_id = $resHandler->getParameter("notify_id");
         //商户订单号
         $out_trade_no = $resHandler->getParameter("out_trade_no");
         //财付通订单号
         $transaction_id = $resHandler->getParameter("transaction_id");
         //金额,以分为单位
         $total_fee = $resHandler->getParameter("total_fee");
         //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
         $discount = $resHandler->getParameter("discount");
         //支付结果
         $trade_state = $resHandler->getParameter("trade_state");
         //交易模式,1即时到账
         $trade_mode = $resHandler->getParameter("trade_mode");
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $out_trade_no . "'");
         $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
         require_once APP_ROOT_PATH . "system/model/cart.php";
         $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $out_trade_no . "' where id = " . $payment_notice['id']);
         $rs = payment_paid($payment_notice['id']);
         if ($rs) {
             $rs = order_paid($payment_notice['order_id']);
             if ($rs) {
                 echo "success";
             } else {
                 echo "success";
             }
         } else {
             echo "fail";
         }
     } else {
         echo "fail";
     }
 }
示例#25
0
 public function do_incharge()
 {
     $order_id = intval($_REQUEST['order_id']);
     $payment_id = intval($_REQUEST['payment_id']);
     $payment_info = M("Payment")->getById($payment_id);
     $memo = $_REQUEST['memo'];
     $order_info = M("DealOrder")->where("id=" . $order_id . " and is_delete = 0 and type = 0")->find();
     if (!$order_info) {
         $this->error(l("INVALID_ORDER"));
     }
     if ($order_info['region_lv4'] > 0) {
         $region_id = $order_info['region_lv4'];
     } elseif ($order_info['region_lv3'] > 0) {
         $region_id = $order_info['region_lv3'];
     } elseif ($order_info['region_lv2'] > 0) {
         $region_id = $order_info['region_lv2'];
     } else {
         $region_id = $order_info['region_lv1'];
     }
     $delivery_id = $order_info['delivery_id'];
     $payment_id = intval($_REQUEST['payment_id']);
     $goods_list = $GLOBALS['db']->getAll("select * from " . DB_PREFIX . "deal_order_item where order_id = " . $order_id);
     $GLOBALS['user_info']['id'] = $order_info['user_id'];
     require_once APP_ROOT_PATH . "system/model/cart.php";
     $result = count_buy_total($region_id, $delivery_id, $payment_id, $account_money = 0, $all_account_money = 0, $ecvsn, $ecvpassword, $goods_list, $order_info['account_money'], $order_info['ecv_money'], $order_info['bank_id']);
     $user_money = M("User")->where("id=" . $order_info['user_id'])->getField("money");
     //$pay_amount = $order_info['deal_total_price']+ $order_info['delivery_fee']-$order_info['account_money']-$order_info['ecv_money']+$payment_info['fee_amount'];
     $pay_amount = $result['pay_price'];
     if ($payment_info['class_name'] == 'Account' && $user_money < $pay_amount) {
         $this->error(l("ACCOUNT_NOT_ENOUGH"));
     }
     $notice_id = make_payment_notice($pay_amount, $order_id, $payment_id, $memo);
     $order_info['total_price'] = $result['pay_total_price'];
     $order_info['payment_fee'] = $result['payment_fee'];
     $order_info['delivery_fee'] = $result['delivery_fee'];
     $order_info['discount_price'] = $result['user_discount'];
     $order_info['payment_id'] = $payment_info['id'];
     $order_info['update_time'] = NOW_TIME;
     M("DealOrder")->save($order_info);
     $payment_notice = M("PaymentNotice")->getById($notice_id);
     $rs = payment_paid($payment_notice['id']);
     if ($rs && $payment_info['class_name'] == 'Account') {
         //余额支付
         require_once APP_ROOT_PATH . "system/payment/Account_payment.php";
         require_once APP_ROOT_PATH . "system/model/user.php";
         $msg = sprintf($payment_lang['USER_ORDER_PAID'], $order_info['order_sn'], $payment_notice['notice_sn']);
         modify_account(array('money' => "-" . $payment_notice['money'], 'score' => 0), $payment_notice['user_id'], $msg);
     }
     if ($rs) {
         order_paid($order_id);
         $msg = sprintf(l("MAKE_PAYMENT_NOTICE_LOG"), $order_info['order_sn'], $payment_notice['notice_sn']);
         save_log($msg, 1);
         order_log($msg . $_REQUEST['memo'], $order_id);
         $this->assign("jumpUrl", U("DealOrder/view_order", array("id" => $order_id)));
         $this->success(l("ORDER_INCHARGE_SUCCESS"));
     } else {
         $this->assign("jumpUrl", U("DealOrder/view_order", array("id" => $order_id)));
         $this->success(l("ORDER_INCHARGE_FAILED"));
     }
 }
示例#26
0
 public function notify($request)
 {
     $return_res = array('info' => '', 'status' => false);
     /* 取返回参数 */
     $version = $request["version"];
     $charset = $request["charset"];
     $language = $request["language"];
     $signType = $request["signType"];
     $tranCode = $request["tranCode"];
     $merchantID = $request["merchantID"];
     $merOrderNum = $request["merOrderNum"];
     $tranAmt = $request["tranAmt"];
     $feeAmt = $request["feeAmt"];
     $frontMerUrl = $request["frontMerUrl"];
     $backgroundMerUrl = $request["backgroundMerUrl"];
     $tranDateTime = $request["tranDateTime"];
     $tranIP = $request["tranIP"];
     $respCode = $request["respCode"];
     $msgExt = $request["msgExt"];
     $orderId = $request["orderId"];
     $gopayOutOrderId = $request["gopayOutOrderId"];
     $bankCode = $request["bankCode"];
     $tranFinishTime = $request["tranFinishTime"];
     $merRemark1 = $request["merRemark1"];
     $merRemark2 = $request["merRemark2"];
     $signValue = $request["signValue"];
     //参数转换
     $payment_notice_sn = $merRemark1;
     //系统订单号
     $total_price = $tranAmt;
     //总价
     /*获取支付信息*/
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Guofubao'");
     $payment['config'] = unserialize($payment['config']);
     $currency_id = $payment['currency'];
     /*比对连接加密字符串*/
     $signValue2 = 'version=[' . $version . ']tranCode=[' . $tranCode . ']merchantID=[' . $merchantID . ']merOrderNum=[' . $merOrderNum . ']tranAmt=[' . $tranAmt . ']feeAmt=[' . $feeAmt . ']tranDateTime=[' . $tranDateTime . ']frontMerUrl=[' . $frontMerUrl . ']backgroundMerUrl=[' . $backgroundMerUrl . ']orderId=[' . $orderId . ']gopayOutOrderId=[' . $gopayOutOrderId . ']tranIP=[' . $tranIP . ']respCode=[' . $respCode . ']gopayServerTime=[]VerficationCode=[' . $payment['config']['VerficationCode'] . ']';
     $signValue2 = md5($signValue2);
     if ($signValue != $signValue2 || $respCode != "0000") {
         showErr($GLOBALS['payment_lang']["VALID_ERROR"]);
     } else {
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where id = '" . $payment_notice_sn . "'");
         $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
         require_once APP_ROOT_PATH . "system/model/cart.php";
         $rs = payment_paid($payment_notice['id']);
         if ($rs) {
             $rs = order_paid($payment_notice['order_id']);
             if ($rs) {
                 //开始更新相应的outer_notice_sn
                 $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $gopayOutOrderId . "' where id = " . $payment_notice['id']);
                 if ($order_info['type'] == 0) {
                     app_redirect(url("index", "payment#done", array("id" => $payment_notice['order_id'])));
                 } else {
                     app_redirect(url("index", "payment#incharge_done", array("id" => $payment_notice['order_id'])));
                 }
                 //支付成功
             } else {
                 if ($order_info['pay_status'] == 2) {
                     if ($order_info['type'] == 0) {
                         app_redirect(url("index", "payment#done", array("id" => $payment_notice['order_id'])));
                     } else {
                         app_redirect(url("index", "payment#incharge_done", array("id" => $payment_notice['order_id'])));
                     }
                     //支付成功
                 } else {
                     app_redirect(url("index", "payment#pay", array("id" => $payment_notice['id'])));
                 }
             }
         } else {
             app_redirect(url("index", "payment#pay", array("id" => $payment_notice['id'])));
         }
     }
 }
 public function notify($request)
 {
     $return_res = array('info' => '', 'status' => false);
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='AlipayBank'");
     $payment['config'] = unserialize($payment['config']);
     /* 检查数字签名是否正确 */
     ksort($request);
     reset($request);
     foreach ($request as $key => $val) {
         if ($key != 'sign' && $key != 'sign_type' && $key != 'code' && $key != 'class_name' && $key != 'act' && $key != 'ctl' && $key != 'city') {
             $sign .= "{$key}={$val}&";
         }
     }
     $sign = substr($sign, 0, -1) . $payment['config']['alipay_key'];
     if (md5($sign) != $request['sign']) {
         echo '0';
     }
     $payment_notice_sn = $request['out_trade_no'];
     $money = $request['total_fee'];
     $outer_notice_sn = $request['trade_no'];
     if ($request['trade_status'] == 'TRADE_SUCCESS' || $request['trade_status'] == 'TRADE_FINISHED' || $request['trade_status'] == 'WAIT_SELLER_SEND_GOODS' || $request['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS') {
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $payment_notice_sn . "'");
         $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
         require_once APP_ROOT_PATH . "system/libs/cart.php";
         $rs = payment_paid($payment_notice['id'], $outer_notice_sn);
         if ($rs) {
             //$GLOBALS['db']->query("update ".DB_PREFIX."payment_notice set outer_notice_sn = '".$outer_notice_sn."' where id = ".$payment_notice['id']);
             order_paid($payment_notice['order_id']);
             $this->auto_do_send_goods($payment_notice, $order_info);
             echo '1';
         } else {
             $this->auto_do_send_goods($payment_notice, $order_info);
             echo '0';
         }
     } else {
         echo '0';
     }
 }
示例#28
0
 public function notify($request)
 {
     $return_res = array('info' => '', 'status' => false);
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Sdo'");
     $payment['config'] = unserialize($payment['config']);
     $shengpay = new shengpay();
     $shengpay->setKey($payment['config']['sdo_key']);
     if ($shengpay->returnSign()) {
         /*支付成功
         		$oid=$_POST['OrderNo'];
         		$fee=$_POST['TransAmount'];
         		*/
         $payment_log_id = intval($_POST['OrderNo']);
         $_serialNo = trim($_POST['TransNo']);
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where id = '" . $payment_log_id . "'");
         $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
         require_once APP_ROOT_PATH . "system/libs/cart.php";
         //$GLOBALS['db']->query("update ".DB_PREFIX."payment_notice set outer_notice_sn = '".$_serialNo."' where id = ".$payment_notice['id']);
         $rs = payment_paid($payment_notice['id'], $_serialNo);
         if ($rs) {
             $rs = order_paid($payment_notice['order_id']);
             if ($rs) {
                 echo 'OK';
             } else {
                 echo 'OK';
             }
         } else {
             echo 'Error';
         }
     } else {
         echo 'Error';
     }
 }
示例#29
0
 public function notify($request)
 {
     $return_res = array('info' => '', 'status' => false);
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Alipay'");
     $payment['config'] = unserialize($payment['config']);
     /* 检查数字签名是否正确 */
     ksort($request);
     reset($request);
     foreach ($request as $key => $val) {
         if ($key != 'sign' && $key != 'sign_type' && $key != 'code' && $key != 'class_name' && $key != 'act' && $key != 'ctl') {
             $sign .= "{$key}={$val}&";
         }
     }
     $sign = substr($sign, 0, -1) . $payment['config']['alipay_key'];
     if (md5($sign) != $request['sign']) {
         echo "fail";
     }
     $payment_notice_sn = $request['out_trade_no'];
     $money = $request['total_fee'];
     $outer_notice_sn = $request['trade_no'];
     if ($request['trade_status'] == 'TRADE_SUCCESS' || $request['trade_status'] == 'TRADE_FINISHED' || $request['trade_status'] == 'WAIT_SELLER_SEND_GOODS' || $request['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS') {
         require_once APP_ROOT_PATH . "system/libs/cart.php";
         $rs = payment_paid($payment_notice_sn, $outer_notice_sn);
         echo "success";
     } else {
         echo "fail";
     }
 }
示例#30
0
 public function notify($request)
 {
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Paypal'");
     $payment['config'] = unserialize($payment['config']);
     $merchant_id = $payment['config']['paypal_account'];
     $token = $payment['config']['paypal_token'];
     $req = 'cmd=_notify-synch&tx=' . $request["tx"] . "&at=" . $token;
     foreach ($request as $key => $value) {
         $value = urlencode(stripslashes($value));
         $req .= "&{$key}={$value}";
     }
     $ppCurl = curl_init();
     // initialize curl handle
     curl_setopt($ppCurl, CURLOPT_POST, true);
     // set POST method
     curl_setopt($ppCurl, CURLOPT_URL, "http://www.paypal.com/cgi-bin/webscr");
     // set url
     curl_setopt($ppCurl, CURLOPT_POSTFIELDS, $req);
     // fields to POST
     curl_setopt($ppCurl, CURLOPT_RETURNTRANSFER, true);
     // return var
     curl_setopt($ppCurl, CURLOPT_TIMEOUT, 4);
     // time out after 5 secs
     curl_setopt($ppCurl, CURLOPT_FAILONERROR, true);
     curl_setopt($ppCurl, CURLOPT_FOLLOWLOCATION, true);
     // allow redirects
     curl_setopt($ppCurl, CURLOPT_FRESH_CONNECT, true);
     // no caching
     $result = curl_exec($ppCurl);
     // engage!
     $curlErrorNum = curl_errno($ppCurl);
     // save error code; 0=none
     $curlErrorText = curl_error($ppCurl);
     // save error message; ""=none
     curl_close($ppCurl);
     $lines = explode("\n", $result);
     if (strcmp($lines[0], "SUCCESS") == 0) {
         $keyarray = explode("\n", $lines[0]);
         foreach ($lines as $kk => $vv) {
             $val = explode("=", $vv);
             $request[strim($val[0])] = strim(urldecode($val[1]));
         }
     } elseif (strcmp($lines[0], "FAIL") == 0) {
         echo 0;
     }
     // assign posted variables to local variables
     $item_name = $request['item_name'];
     $item_number = $request['item_number'];
     $payment_status = $request['payment_status'];
     $payment_amount = floatval($request['mc_gross']);
     $payment_currency = $request['mc_currency'];
     $txn_id = $request['txn_id'];
     $receiver_email = $request['receiver_email'];
     $payer_email = $request['payer_email'];
     $data_id = $request['invoice'];
     //开始初始化参数
     $payment_notice_sn = $data_id;
     $money = $payment_amount;
     $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $payment_notice_sn . "'");
     $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
     if ($payment_status != 'Completed' && $payment_status != 'Pending') {
         echo 0;
     } elseif ($receiver_email != $merchant_id) {
         echo 0;
     } elseif (abs($payment_notice['money'] * $payment['config']['paypal_rate'] - $payment_amount) > 0.008999999999999999) {
         echo 0;
     } elseif ($payment['config']['paypal_currency'] != $payment_currency) {
         echo 0;
     } else {
         require_once APP_ROOT_PATH . "system/model/cart.php";
         $rs = payment_paid($payment_notice['id']);
         if ($rs) {
             $rs = order_paid($payment_notice['order_id']);
             echo 1;
         } else {
             echo 0;
         }
     }
 }