2013-02-28 3 views
2

Je sais que vous pouvez demander pourquoi je n'essaie pas de google la solution d'abord, maintenant je peux dire que j'ai déjà googlé pour cela, malheureusement, il sort trop de solutions et de façons différentes de le faire.Comment intégrer paypal dans Zend Framework 1.12?

Ma situation est comme ceci, je veux permettre à ces clients d'être en mesure de s'abonner à mon service annuellement. De this link, ils ont suggéré trop de solution, je ne sais pas lequel est adapté à ma situation. Et bien sûr, je veux utiliser le service gratuit (débit mensuel besoin de frais mensuels). Cela veut dire que je veux stocker le numéro de transaction dans ma base de données chaque année lorsque le service souscrit par mon client a expiré, et qu'il envoie automatiquement un accusé de réception aux clients et au courriel de mon entreprise.

En résumé,

  1. Quelle voie convient à ma situation.
  2. Est-ce qu'un travail cron est nécessaire dans ce cas? ou juste besoin d'utiliser le paiement récurrent fourni par paypal?
  3. Y at-il lien ou par exemple (à savoir le codage dans la mise en œuvre bac à sable)?

Merci à l'avance.

+1

départ avec https://www.x.com/developers/paypal/documentation-tools/paypal-how-to- guides – RockyFord

Répondre

0

Vous pouvez utiliser PayPal Paiements Pro avec l'API de paiement direct pour traiter les transactions initiales par carte de crédit. Ensuite, vous pouvez stocker la transaction dans votre système et configurer votre système pour exécuter un travail cron et exécuter un appel d'API de transaction de référence pour recharger l'acheteur. Cela vous donnera les effets de la configuration d'un profil de paiement récurrent sans réellement avoir le service via PayPal. Cependant, si vous préférez faire moins de codage et configurer votre système pour effectuer des tâches cron, etc., vous pouvez simplement vous inscrire aux paiements récurrents/services de facturation récurrents de PayPal, ce qui vous permettrait de faire un appel d'API. à PayPal pour configurer un profil. Ensuite, PayPal prendra de facturer vos acheteurs quand ils devraient être facturés.

0

HI Je le code fait pour 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; 
} 
Questions connexes