Пример #1
0
 public function respond()
 {
     $v_oid = trim($_POST['v_oid']);
     //订单编号
     $v_pmode = trim($_POST['v_pmode']);
     //支付方式
     $v_pstatus = trim($_POST['v_pstatus']);
     //支付状态 20(表示支付成功)30(表示支付失败)
     $v_pstring = trim($_POST['v_pstring']);
     //支付结果信息
     $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的值
      */
     $key = $this->config['chinabank_key'];
     $md5string = strtoupper(md5($v_oid . $v_pstatus . $v_amount . $v_moneytype . $key));
     /* 检查秘钥是否正确 */
     if ($v_md5str == $md5string) {
         if ($v_pstatus == '20') {
             order_pay_status($v_oid, '2');
             return true;
         }
     } else {
         return false;
     }
 }
Пример #2
0
 public function respond()
 {
     if (!empty($_POST)) {
         foreach ($_POST as $key => $data) {
             $_GET[$key] = $data;
         }
     }
     $seller_email = rawurldecode($_GET['seller_email']);
     //$order_sn = str_replace($_GET['subject'], '', $_GET['out_trade_no']);
     $order_sn = trim($_GET['out_trade_no']);
     $record = intval($_GET['record']);
     $total_fee = get_safe_replace($_GET['total_fee']);
     /* 检查数字签名是否正确 */
     ksort($_GET);
     reset($_GET);
     $sign = '';
     foreach ($_GET as $key => $val) {
         if ($key != 'sign' && $key != 'sign_type' && $key != 'code' && $key != 'g' && $key != 'm' && $key != 'a' && $key != 'record') {
             $sign .= "{$key}={$val}&";
         }
     }
     $sign = substr($sign, 0, -1) . $this->config['alipay_key'];
     //$sign = substr($sign, 0, -1) . ALIPAY_AUTH;
     if (md5($sign) != $_GET['sign']) {
         return false;
     }
     if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS' || $_GET['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS' || $_GET['trade_status'] == 'WAIT_BUYER_PAY') {
         /* 改变订单状态 进行中*/
         return order_pay_status($order_sn, '1', $total_fee, $record);
     } elseif ($_GET['trade_status'] == 'TRADE_FINISHED') {
         /* 改变订单状态 */
         return order_pay_status($order_sn, '2', $total_fee, $record);
     } elseif ($_GET['trade_status'] == 'TRADE_SUCCESS') {
         /* 改变订单状态 即时交易成功*/
         return order_pay_status($order_sn, '2', $total_fee, $record);
     } else {
         return false;
     }
 }
Пример #3
0
 public function respond()
 {
     $url = $this->config['gateway_url'];
     $record = intval($_GET['record']);
     //Parse url
     $web = parse_url($url);
     //build post string
     foreach ($_POST as $i => $v) {
         $postdata .= $i . "=" . urlencode($v) . "&";
     }
     $postdata .= "cmd=_notify-validate";
     //Set the port number
     if ($web['scheme'] == "https") {
         $web['port'] = "443";
         $ssl = "ssl://";
     } else {
         $web['port'] = "80";
     }
     //Create paypal connection
     $fp = @fsockopen($ssl . $web['host'], $web['port'], $errnum, $errstr, 30);
     if (!$fp) {
         echo "{$errnum}: {$errstr}";
         exit;
     } else {
         fputs($fp, "POST {$web['path']} HTTP/1.1\r\n");
         fputs($fp, "Host: {$web['host']}\r\n");
         fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
         fputs($fp, "Content-length: " . strlen($postdata) . "\r\n");
         fputs($fp, "Connection: close\r\n\r\n");
         fputs($fp, $postdata . "\r\n\r\n");
         while (!feof($fp)) {
             $info[] = @fgets($fp, 1024);
         }
         fclose($fp);
         $result = implode(",", $info);
     }
     if (eregi("VERIFIED", $result)) {
         $invoice = trim(stripslashes($_POST['invoice']));
         $amount = trim(stripslashes(@$_POST['amount']));
         $payment_method = trim(stripslashes(@$_POST['payment_method']));
         // deprecated
         $payment_type = trim(stripslashes(@$_POST['payment_type']));
         // Can be USD, GBP, EUR, CAD, JPY
         $currency_code = trim(stripslashes($_POST['mc_currency']));
         $payer_email = trim(stripslashes($_POST['payer_email']));
         $business = trim(stripslashes($_POST['business']));
         $item_name = trim(stripslashes($_POST['item_name']));
         $item_number = trim(stripslashes(@$_POST['item_number']));
         $txn_id = trim(stripslashes($_POST['txn_id']));
         $receiver_email = trim(stripslashes($_POST['receiver_email']));
         $payment_status = trim(stripslashes($_POST['payment_status']));
         $mc_gross = trim(stripslashes($_POST['mc_gross']));
         $order_sn = trim(stripslashes(@$_POST['item_number']));
         //$Order = M('Order')->where("sn='$order_sn'")->find();
         if (eregi("Completed", $payment_status)) {
             return order_pay_status($order_sn, 2, $mc_gross, $record);
         } elseif (eregi("Pending", $payment_status)) {
             return order_pay_status($order_sn, 1, $mc_gross, $record);
         }
     }
 }