JezK
Edit File: paypal_payout.php
<?php $paypal_payment_fee_percent=2.9; // 2.9% $paypal_payment_fee_fixed=0.30; // $ 0.30 (0.30 Dollors) $paypal_masspay_fee_percent=2; // 2% $paypal_masspay_fee_max=1; // $ 1 (One Dollor) $clientID = "AXwi3t9S-6mMvvF-94ozt0D7aBhdRPtt2Q7QldF4HXFuDTlDtjWS6Kt26I9x9BtKnEihQ5YM45Be3Dmh"; $secretKey = "EJXc3Ln8U1trxTtdqrba-pnLqKim9f9lx1dGCgbvyPLrc3SK6fNPgsBPOe5EH8HUEQLLmqMo2ssGqA3y"; $paymentURL = "https://api.sandbox.paypal.com/v1/payments/payouts"; $accessTokenURL = "https://api.sandbox.paypal.com/v1/oauth2/token"; $paymentStatusURL = "https://api.sandbox.paypal.com/v1/payments/payouts/"; $paypalEnv = "sandbox"; $amount = "10.00"; $mediaProductName = "Video Consultation"; $netAmount = $amount; $AccessToken = getaccesstoken($accessTokenURL,$clientID,$secretKey); //$AccessToken ="A21AAFkTOFFsfMGX-VMEYLFDiXItzmxJBsTtimNhKtA7AvpLGTNRKGhD1TAiY22KSE33oggrEPdcKDcz2u_mXtaeKG3Xc734A"; echo "Access Token---".$AccessToken; //calculating massPay which should not exceed $1 $masspay_fee = $netAmount*($paypal_masspay_fee_percent/(100+$paypal_masspay_fee_percent)); if($masspay_fee > $paypal_masspay_fee_max) //massPay exceeeds $1 { $masspay_fee = $paypal_masspay_fee_max; } $totalAmount = number_format(($netAmount - $masspay_fee),2); echo "--Total Amount---".$totalAmount; $sender_batch_header = array('sender_batch_id' => time(), "email_subject"=>"You have a Payout Payment!"); $amount_obj= array("value"=>$totalAmount, "currency"=>"USD"); $items[] = array('recipient_type' => "EMAIL","amount"=>$amount_obj,"note" => "Payment for Video Consultation","sender_item_id"=>"1200","receiver"=>'suresh.g@krify.net'); $data = array("sender_batch_header"=>$sender_batch_header,"items"=>$items); $result = make_payment($data,$AccessToken,'1200',$paymentURL); echo "--Make Payment ---<pre>"; print_r($result); if(isset($result->name) && $result->name == 'INSUFFICIENT_FUNDS') { echo "<h3 style='color:red'>"; echo "</br>".$result->name; echo "</br>".$result->message; echo "</h3>"; exit; } $batch_header = $result->batch_header; $batch_status = $batch_header->batch_status; $payout_batch_id = $batch_header->payout_batch_id; $batch_daata = check_status($payout_batch_id,$AccessToken,'1200',$paymentStatusURL); echo "---HELLO CHECK STATUS---<pre>"; print_r($batch_daata); if(($batch_status == 'PENDING' || $batch_status == 'SUCCESS') ) { $batch_data_header = $batch_daata->batch_header; echo $batch_status = $batch_data_header->batch_status; echo $payout_batch_id = $batch_data_header->payout_batch_id; $payout_payment = $batch_data_header->amount; $payout_fess = $batch_data_header->fees; $sender_batch_id = $batch_data_header->sender_batch_header; print_r($payout_fess); echo $payout_fess->value; echo "<li><span style='color:#0000FF'>Processed order product ".$orderProductID."</span></li>"; //updating payment status for orderProduct } function make_payment($data,$AccessToken,$cart_id,$paymentURL){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $paymentURL); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_POST, 1); $headers = array(); $headers[] = "Content-Type: application/json"; $headers[] = "Authorization: Bearer ".$AccessToken; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); $result_status = 'Error'; } //print_r($result); //print_r($result); $result = json_decode($result); curl_close ($ch); return $result; } function getaccesstoken($accessTokenURL,$clientID,$secretKey){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $accessTokenURL); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_USERPWD, $clientID.":".$secretKey); $headers = array(); $headers[] = "Accept: application/json"; $headers[] = "Accept-Language: en_US"; $headers[] = "Content-Type: application/x-www-form-urlencoded"; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); return false; } $result = json_decode($result); curl_close ($ch); return $result->access_token; } function check_status($payout_batch_id,$AccessToken,$cart_id,$paymentStatusURL) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $paymentStatusURL.$payout_batch_id."?fields=batch_header"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); $headers = array(); $headers[] = "Content-Type: application/json"; $headers[] = "Authorization: Bearer ".$AccessToken; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } $result = json_decode($result); curl_close ($ch); return $result; } ?>