<?php $MerchantID = '0164205'; $Password = '******'; $Price = 1000; //Price By Toman if (isset($_POST['status']) && $_POST['status'] == 100) { $Status = $_POST['status']; $Refnumber = $_POST['refnumber']; $Resnumber = $_POST['resnumber']; //Your Order ID $client = new SoapClient('http://merchant.parspal.com/WebService.asmx?wsdl'); $res = $client->VerifyPayment(array("MerchantID" => $MerchantID, "Password" => $Password, "Price" => $Price, "RefNum" => $Refnumber)); $Status = $res->verifyPaymentResult->ResultStatus; $PayPrice = $res->verifyPaymentResult->PayementedPrice; if ($Status == 'success') { echo '<div style="color:green; font-family:tahoma; direction:rtl; text-align:right"> پرداخت با موفقیت انجام شد ، شماره رسید پرداخت : ' . $Refnumber . ' ، مبلغ پرداختی : ' . $PayPrice . ' ! <br /></div>'; } else { echo '<div style="color:green; font-family:tahoma; direction:rtl; text-align:right"> خطا در پردازش عملیات پرداخت ، نتیجه پرداخت : ' . $Status . ' ! <br /></div>'; } } else { echo '<div style="color:red; font-family:tahoma; direction:rtl; text-align:right"> بازگشت از عمليات پرداخت، خطا در انجام عملیات پرداخت ( پرداخت ناموق ) ! <br /></div>'; }
public function finish_cc_processing() { $return_code = $this->sales_controller->input->get("ReturnCode"); //TODO //Check return code 0 //Check return code 101: Decline //Only make verify payment call with the above return codes $service_url = (!defined("ENVIRONMENT") or ENVIRONMENT == 'development') ? 'https://hc.mercurydev.net/hcws/hcservice.asmx?WSDL' : 'https://hc.mercurypay.com/hcws/hcservice.asmx?WSDL'; $parameters = array('request' => array('MerchantID' => $this->sales_controller->Location->get_info_for_key('merchant_id'), 'PaymentID' => $this->sales_controller->input->get('PaymentID'), 'Password' => $this->sales_controller->Location->get_info_for_key('merchant_password'))); $client = new SoapClient($service_url, array('trace' => TRUE)); $result = $client->VerifyPayment($parameters); $response_code = $result->VerifyPaymentResult->ResponseCode; $status = $result->VerifyPaymentResult->Status; $total_amount = $result->VerifyPaymentResult->Amount; $auth_amount = $result->VerifyPaymentResult->AuthAmount; $auth_code = $result->VerifyPaymentResult->AuthCode; $acq_ref_data = $result->VerifyPaymentResult->AcqRefData; $ref_no = $result->VerifyPaymentResult->RefNo; $token = $result->VerifyPaymentResult->Token; $masked_account = $result->VerifyPaymentResult->MaskedAccount; $process_data = $result->VerifyPaymentResult->ProcessData; $card_issuer = $result->VerifyPaymentResult->CardType; if ($response_code == 0 && $status == 'Approved') { $result = $client->AcknowledgePayment($parameters); $response_code = $result->AcknowledgePaymentResult; $this->sales_controller->session->set_userdata('ref_no', $ref_no); $this->sales_controller->session->set_userdata('auth_code', $auth_code); if ($response_code == 0 && $auth_amount == $total_amount) { $this->sales_controller->session->set_userdata('masked_account', $masked_account); $this->sales_controller->session->set_userdata('card_issuer', $card_issuer); $info = $this->sales_controller->Customer->get_info($this->sales_controller->sale_lib->get_customer()); //We want to save/update card: //1. User decides to save credit card info //2. We already have a saved credit and need to update if (($this->sales_controller->sale_lib->get_save_credit_card_info() or $info->cc_token && $info->cc_preview) && $this->sales_controller->sale_lib->get_customer() != -1) { $person_info = array('person_id' => $this->sales_controller->sale_lib->get_customer()); $customer_info = array('cc_token' => $token, 'cc_preview' => $masked_account, 'card_issuer' => $card_issuer); $this->sales_controller->Customer->save($person_info, $customer_info, $this->sales_controller->sale_lib->get_customer()); } //If the sale payments cover the total, redirect to complete (receipt) if ($this->sales_controller->_payments_cover_total()) { redirect(site_url('sales/complete')); } else { $invoice_number = substr(date('mdy') . (time() - strtotime("today")) . $this->sales_controller->Employee->get_logged_in_employee_info()->person_id, 0, 16); $credit_card_amount = to_currency_no_money($this->sales_controller->sale_lib->get_payment_amount(lang('sales_credit'))); $partial_transaction = array('AuthCode' => $auth_code, 'Frequency' => 'OneTime', 'Memo' => 'PHP POS ' . APPLICATION_VERSION, 'Invoice' => $invoice_number, 'MerchantID' => $this->sales_controller->Location->get_info_for_key('merchant_id'), 'OperatorID' => (!defined("ENVIRONMENT") or ENVIRONMENT == 'development') ? 'test' : $this->sales_controller->Employee->get_logged_in_employee_info()->person_id, 'PurchaseAmount' => $credit_card_amount, 'RefNo' => $ref_no, 'Token' => $token, 'AcqRefData' => $acq_ref_data, 'ProcessData' => $process_data); $this->sales_controller->sale_lib->delete_payment($this->sales_controller->sale_lib->get_payment_ids(lang('sales_credit'))); $this->sales_controller->sale_lib->add_payment(lang('sales_partial_credit'), $credit_card_amount, FALSE, $masked_account, $card_issuer); $this->sales_controller->sale_lib->add_partial_transaction($partial_transaction); $this->sales_controller->_reload(array('warning' => lang('sales_credit_card_partially_charged_please_complete_sale_with_another_payment_method')), false); } } elseif ($response_code == 0 && $auth_amount < $total_amount) { $invoice_number = substr(date('mdy') . (time() - strtotime("today")) . $this->sales_controller->Employee->get_logged_in_employee_info()->person_id, 0, 16); $partial_transaction = array('AuthCode' => $auth_code, 'Frequency' => 'OneTime', 'Memo' => 'PHP POS ' . APPLICATION_VERSION, 'Invoice' => $invoice_number, 'MerchantID' => $this->sales_controller->Location->get_info_for_key('merchant_id'), 'OperatorID' => (!defined("ENVIRONMENT") or ENVIRONMENT == 'development') ? 'test' : $this->sales_controller->Employee->get_logged_in_employee_info()->person_id, 'PurchaseAmount' => $auth_amount, 'RefNo' => $ref_no, 'Token' => $token, 'AcqRefData' => $acq_ref_data, 'ProcessData' => $process_data); $this->sales_controller->sale_lib->delete_payment($this->sales_controller->sale_lib->get_payment_ids(lang('sales_credit'))); $this->sales_controller->sale_lib->add_payment(lang('sales_partial_credit'), $auth_amount, FALSE, $masked_account, $card_issuer); $this->sales_controller->sale_lib->add_partial_transaction($partial_transaction); $this->sales_controller->_reload(array('warning' => lang('sales_credit_card_partially_charged_please_complete_sale_with_another_payment_method')), false); } else { $this->sales_controller->_reload(array('error' => lang('sales_acknowledge_payment_failed_please_contact_support')), false); } } else { $client->AcknowledgePayment($parameters); $this->sales_controller->_reload(array('error' => $result->VerifyPaymentResult->StatusMessage . ': ' . $result->VerifyPaymentResult->DisplayMessage), false); } }