1

我使用了一个普通类作为 api,并且我将所有参数传递给 paypal,并且我获得了成功。

我唯一缺少的是没有从沙盒帐户中扣除金额。这是我正在使用的代码。任何帮助表示赞赏。提前致谢。

$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"]));
            }
        }

}
4

0 回答 0