Payment Api using class

别说谁变了你拦得住时间么 提交于 2019-12-05 07:28:21

问题


I have used a normal class as an api and in that i am passing all the parameters to paypal and i am getting success.

Only thing i am missing is that amount is not being deducted from the sandbox account. This is the code which i am using. Any help is appreciated. Thanks in advance.

$paypalDoDirect = new PaypalDoDirect();

/**passing all parameters to $paypalDoDirect

$response= $paypalDoDirect->MakePayment(); 


class PaypalDoDirect {

/*Declared all fields */

  function MakePayment()
        {

            $API_Endpoint = "https://api-3t.paypal.com/nvp";
            if("sandbox" === $this->environment || "beta-sandbox" === $this->environment)
            {
                $API_Endpoint = "https://api-3t.$this->environment.paypal.com/nvp";
            }


            // Add request-specific fields to the request string.
            $nvpStr =   "&PAYMENTACTION=$this->paymentType&AMT=$this->amount&CREDITCARDTYPE=$this->cc_type&ACCT=$this->cc_number".
                        "&EXPDATE=$this->expdate_month$this->expdate_year&CVV2=$this->cvv2_number&FIRSTNAME=$this->first_name&LASTNAME=$this->last_name&EMAIL=$this->email".
                        "&STREET=$this->address1&CITY=$this->city&STATE=$this->state&ZIP=$this->zip&COUNTRYCODE=$this->country&CURRENCYCODE=$this->currencyID";

            //$httpParsedResponseAr = PPHttpPost('DoDirectPayment', $nvpStr);

            $methodName_='DoDirectPayment';
            $nvpStr_=$nvpStr;

            // Set the curl parameters.
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $API_Endpoint);
            curl_setopt($ch, CURLOPT_VERBOSE, 1);
            // Turn off the server and peer verification (TrustManager Concept).
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_POST, 1);
            // Set the API operation, version, and API signature in the request.
            $nvpreq = "METHOD=$methodName_&VERSION=$this->version&PWD=$this->API_Password&USER=$this->API_UserName&SIGNATURE=$this->API_Signature$nvpStr_";
            // Set the request as a POST FIELD for curl.
            curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq);
            // Get response from the server.
            $httpResponse = curl_exec($ch);
            if(!$httpResponse) {
                return("$methodName_ failed: ".curl_error($ch).'('.curl_errno($ch).')');
            }
            // Extract the response details.
            $httpResponseAr = explode("&", $httpResponse);
            $httpParsedResponseAr = array();
            foreach ($httpResponseAr as $i => $value) {
                $tmpAr = explode("=", $value);
                if(sizeof($tmpAr) > 1) {
                    $httpParsedResponseAr[$tmpAr[0]] = $tmpAr[1];
                }
            }
            if((0 == sizeof($httpParsedResponseAr)) || !array_key_exists('ACK', $httpParsedResponseAr)) {
                exit("Invalid HTTP Response for POST request($nvpreq) to $API_Endpoint.");
            }
            if("SUCCESS" == strtoupper($httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($httpParsedResponseAr["ACK"])) {
            return "success";
            } else  {
                return (urldecode($httpParsedResponseAr["L_LONGMESSAGE0"]));
            }
        }

}

来源:https://stackoverflow.com/questions/18439015/payment-api-using-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!