簡體   English   中英

如何將Paypal集成到Zend Framework 1.12中?

[英]How to integrate paypal in Zend Framework 1.12?

我知道您可能會問為什么我不首先嘗試使用Google解決方案,現在我可以說我已經用Google搜索了,不幸的是,它提出了太多的解決方案和不同的實現方式。

我的情況就是這樣,我希望允許那些客戶能夠每年訂閱我的服務。

這個鏈接中 ,他們建議了太多解決方案,我不知道哪個1適合我的情況。 當然,我想使用免費服務(直接付款需要月費)

這意味着,我想每年在我的客戶訂閱的服務到期時將事務號存儲到我的數據庫中,並且它會自動向客戶和我公司的電子郵件發送確認電子郵件。

綜上所述,

  1. 哪種方式適合我的情況。
  2. 在這種情況下需要cron工作嗎? 還是只需要使用貝寶提供的定期付款?
  3. 是否有任何鏈接或示例(即,沙箱中的編碼實現)

提前致謝。

您可以將PayPal Payments Pro與Direct Payment API結合使用來處理初始信用卡交易。 然后,您可以將交易存儲在系統中,並設置系統以運行cron作業並執行參考交易API調用以再次向買方收取費用。 這將為您提供設置定期付款資料的效果,而無需通過PayPal實際使用該服務。

但是,如果您希望減少編碼並設置系統以執行cron作業等,則可以只注冊PayPal的定期付款/定期結算服務,這將使您可以對PayPal進行API調用來進行設置建立個人資料。 然后,貝寶(PayPal)會在應收帳單時向您的買方付款。

嗨,我已經為ZF編寫了代碼

 public function processPaymentAction() { $methodName = 'CreateRecurringPaymentsProfile'; // from nvpHeader function $API_Endpoint = 'https://api-3t.sandbox.paypal.com/nvp'; $version = '65.2'; 
    // But you can use here your own Sandbox API credentials of Business account
    // and you can get through Payapl Sandbox API Credentials Link on Left.

    $API_UserName = 'platfo_1255077030_biz_api1.gmail.com';
    $API_Password = '1255077037';
    $API_Signature = 'Abg0gYcQyxQvnf2HDJkKtA-p6pqhA1k-KTYE0Gcy1diujFio4io5Vqjf';
    $subject = '';
    global $nvp_Header, $AUTH_token, $AUTH_signature, $AUTH_timestamp;
    $nvpHeaderStr = "";

    //pr($this->data);die;
    //$this->data['User']['paymentType']
    $paymentType = urlencode('Sale');
    $firstName = urlencode("Jaskaran");
    $lastName = urlencode("Singh");
    $creditCardType = urlencode("Visa");
    $creditCardNumber = urlencode("4798720058660243");
    $expDateMonth =urlencode(11);

    // Month must be padded with leading zero
    $padDateMonth = str_pad($expDateMonth, 2, '0', STR_PAD_LEFT);

    $expDateYear = urlencode(2015);
    $cvv2Number = urlencode(962);
    $address1 = urlencode("1 Main St");
    $address2 = urlencode("");
    $city = urlencode("San Jose");
    $state = urlencode("CA");
    $zip = urlencode(95131);
    $amount = urlencode(1.00);

//  $init_amount = urlencode($this->data['User']['pack_price']);

    $currencyCode="USD";

    $profileDesc = urlencode("Welcome to the world of shopping where you get everything");
    $billingPeriod = urlencode("Week");
    $billingFrequency = urlencode(4);
    $totalBillingCycles = urlencode(0);

    ################# Commented as we need to define through Admin ##############

    $profileStartDateDay = 10;
    // Day must be padded with leading zero
    $padprofileStartDateDay = str_pad($profileStartDateDay, 2, '0', STR_PAD_LEFT);

    $profileStartDateMonth = 02;
    // Month must be padded with leading zero
    $padprofileStartDateMonth = str_pad($profileStartDateMonth, 2, '0', STR_PAD_LEFT);

    $profileStartDateYear = 2015;

    $profileStartDate = urlencode($profileStartDateYear . '-' . $padprofileStartDateMonth . '-' . $padprofileStartDateDay . 'T00:00:00Z');

    //string from nvpHeader
    $nvpHeaderStr = "&PWD=".urlencode($API_Password)."&USER=".urlencode($API_UserName)."&SIGNATURE=".urlencode($API_Signature);

    $nvpstr="&AMT=$amount&CREDITCARDTYPE=$creditCardType&ACCT=$creditCardNumber&EXPDATE=". $padDateMonth.$expDateYear."&CVV2=$cvv2Number&FIRSTNAME=$firstName&LASTNAME=$lastName&STREET=$address1&CITY=$city&STATE=$state".
    "&ZIP=$zip&COUNTRYCODE=US&CURRENCYCODE=$currencyCode&PROFILESTARTDATE=$profileStartDate&DESC=$profileDesc&BILLINGPERIOD=$billingPeriod&BILLINGFREQUENCY=$billingFrequency&TOTALBILLINGCYCLES=$totalBillingCycles";

    $nvpstr = $nvpHeaderStr.$nvpstr;
    //check if version is included in $nvpStr else include the version.
    if(strlen(str_replace('VERSION=','', strtoupper($nvpstr))) == strlen($nvpstr)) 
    {
        $nvpstr = "&VERSION=" . urlencode($version) . $nvpstr;
    }
    $nvpreq="METHOD=".urlencode($methodName).$nvpstr;


    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$API_Endpoint);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    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);

    //$nvpreq=”METHOD=”.urlencode($methodName).$nvpStr;

    //setting the nvpreq as POST FIELD to curl
    curl_setopt($ch,CURLOPT_POSTFIELDS,$nvpreq);

    //getting response from server
    $response = curl_exec($ch);

    //convrting NVPResponse to an Associative Array
    $nvpResArray=$this->deformatNVP($response);
    $nvpReqArray=$this->deformatNVP($nvpreq);


    if (curl_errno($ch)) 
    {
        echo "cURL Error";
        die;
        // moving to display page to display curl errors
        $_SESSION['curl_error_no']=curl_errno($ch) ;
        $_SESSION['curl_error_msg']=curl_error($ch);
        //$location = "APIError.php";
        //header("Location: $location");
    } 
    else 
    {
        //closing the curl
        curl_close($ch);
    }

    #### Checking error ###
    if(!empty($nvpResArray))
    {
        if($nvpResArray['ACK'] == 'Failure')
        {
            echo "ERROR : ". $errmsg = $nvpResArray["L_LONGMESSAGE0"];
            echo "<pre>";
            print_r($nvpResArray);
            die;
        }
    }

    // Print this array you will get some necessary info
    ################ Starting data insert##################

    if($nvpResArray['ACK'] == 'Success')
    {
        echo 'Success';
        print_r($nvpResArray);
        die;
        // save data into tables for Recurring Profile
    }



}

############### Function deformatNVP #########
/** This function will take NVPString and convert it to an Associative Array and it will decode the response.
 * It is usefull to search for a particular key and displaying arrays.
 * @nvpstr is NVPString.
 * @nvpArray is Associative Array.
 */
function deformatNVP ($nvpstr)
{
    $intial = 0;
    $nvpArray = array();
    while (strlen($nvpstr)) {
        //postion of Key
        $keypos = strpos($nvpstr, '=');
        //position of value
        $valuepos = strpos($nvpstr, '&') ? strpos($nvpstr, '&') : strlen(
        $nvpstr);
        /*getting the Key and Value values and storing in a Associative Array*/
        $keyval = substr($nvpstr, $intial, $keypos);
        $valval = substr($nvpstr, $keypos + 1, $valuepos - $keypos - 1);
        //decoding the respose
        $nvpArray[urldecode($keyval)] = urldecode($valval);
        $nvpstr = substr($nvpstr, $valuepos + 1, strlen($nvpstr));
    }
    return $nvpArray;
}
function formAutorization ($auth_token, $auth_signature, $auth_timestamp)
{
    $authString = "token=" . $auth_token . ",signature=" . $auth_signature .
     ",timestamp=" . $auth_timestamp;
    return $authString;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM