2013-02-28 119 views
2

我知道你可能會問,爲什麼我不先嚐試谷歌解決方案,現在我可以說我已經爲它搜索了,不幸的是它出現了太多的解決方案和不同的方式來做到這一點。如何在Zend Framework 1.12中集成paypal?

我的情況就是這樣,我想讓這些客戶能夠訂閱我的服務每年

this link,他們提出了太多的解決方案,我不知道哪一個適合我的情況。當然,我想使用免費服務(直接借記需要月租費)

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

綜上所述,

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

謝謝先進。

+1

下手https://www.x.com/developers/paypal/documentation-tools/paypal-how-to-導遊 – RockyFord 2013-02-28 10:43:43

回答

0

您可以使用PayPal Payments Pro和直接付款API來處理初始信用卡交易。然後,您可以將交易存儲在您的系統中,並將您的系統設置爲運行cron作業並執行參考交易API調用以再次向買方收費。這會給您帶來的影響,即建立一個定期的付款配置文件,而無需通過PayPal實際提供服務。但是,如果您希望減少編碼和設置系統以執行cron作業等,那麼您只需註冊PayPal的定期付款/循環計費服務,這將允許您只進行API調用到貝寶設置一個配置文件。然後,PayPal會在您的買家開具賬單時對其進行結算。

0

HI我已代碼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; 
} 
相關問題