Different Paypal Payment with API example (NVP Operation).
- DoDirect Payment - Sale
- Authorization - PayPal / Capture - PayPal
- Mass Pay
- Parallel Payment
Do-Direct Payment:
Direct Payment lets buyers pay using their credit cards and amount is directly transferred to merchant account.
https://developer.paypal.com/docs/classic/paypal-payments-pro/integration-guide/WPDirectPayment/
Payment
Authorization:
In this case paypal will not charge immediately from the customer. We will hold the
customer amount with the transaction-Id. Further with
transaction-Id, we can decide whether charge the amount(
Capture amount) OR
return the amount to customer (
Void Payment).
It have two parts
a. Authorization
the customer money and store the transaction
Id in our database.
b. Capture
Payment- Charge the payment from
hold amount with use of Transaction Id
OR
MayPay Payment
Following are Request and Response of paypal APIs (Please update User, Pwd and Signature, these are dummy)
Sr |
Operation |
Method |
Payment Action |
Request Sample |
Response Sample |
Introduction |
1 |
DoDirectPayment |
DoDirectPayment |
Sale |
Array
(
[METHOD] => DoDirectPayment
[USER] => testname_api1.no-spam.ws
[PWD] => 55555526677
[SIGNATURE] => Alsdfdsfafds.zYsROoDYkL2AigOq
[VERSION] => 95
[PAYMENTACTION] => Sale
[IPADDRESS] => 127.0.0.1
[CREDITCARDTYPE] => MasterCard
[ACCT] => 5522340006063638
[EXPDATE] => 092015
[CVV2] => 123
[FIRSTNAME] => Aman
[LASTNAME] => Jaiswal
[STREET] => Phase+7%2C+Mohali+
[CITY] => Largo
[STATE] => Punjab
[COUNTRYCODE] => US
[ZIP] => 160055
[AMT] => 100
[CURRENCYCODE] => USD
)
|
Array
(
[TIMESTAMP] => 2014-07-29T06:24:35Z
[CORRELATIONID] => 5866bc2f19ac7
[ACK] => Success
[VERSION] => 95
[BUILD] => 11950065
[AMT] => 100.00
[CURRENCYCODE] => USD
[AVSCODE] => X
[CVV2MATCH] => M
[TRANSACTIONID] => 4VT01737UB5183903
)
|
Get the Payment from Buyer to Merchant Account |
2 |
MassPayment |
MassPay |
-NA- |
Array
(
[METHOD] => MassPay
[USER] => testname_api1.no-spam.ws
[PWD] => 55555526677
[SIGNATURE] => Alsdfdsfafdsfs.zYsROoDYkL2AigOq
[VERSION] => 95
[RECEIVERTYPE] => EmailAddress
[CURRENCYCODE] => USD
[L_EMAIL0] => testnamel@no-spam.ws
[L_AMT0] => 10.00
[L_EMAIL1] => testname2@no-spam.ws
[L_AMT1] => 10.00
)
|
Array
(
[AUTHORIZATIONID] => 7FU87403AH3981018
[TIMESTAMP] => 2014-07-29T05:39:09Z
[CORRELATIONID] => c86dbba49cc4b
[ACK] => Success
[VERSION] => 95
[BUILD] => 11950065
)
|
Distribute the Payment between 2 more partner |
3 |
DoAuthorization |
DoDirectPayment |
authorization |
Array
(
[METHOD] => DoDirectPayment
[USER] => testname_api1.no-spam.ws
[PWD] => 55555526677
[SIGNATURE] => Alsdfdsfafdsf.zYsROoDYkL2AigOq
[VERSION] => 95
[PAYMENTACTION] => authorization
[IPADDRESS] => 127.0.0.1
[CREDITCARDTYPE] => MasterCard
[ACCT] => 5522340006063638
[EXPDATE] => 102015
[CVV2] => 123
[FIRSTNAME] => Aman
[LASTNAME] => Jaiswal
[STREET] => Phase+8%2C+Mohali+
[CITY] => Largo
[STATE] => Punjab
[COUNTRYCODE] => US
[ZIP] => 160055
[AMT] => 124.00
[CURRENCYCODE] => USD
)
|
Array
(
[TIMESTAMP] => 2014-07-29T06:26:30Z
[CORRELATIONID] => 42ec9f542fc9f
[ACK] => Success
[VERSION] => 95
[BUILD] => 11950065
[AMT] => 124.00
[CURRENCYCODE] => USD
[AVSCODE] => X
[CVV2MATCH] => M
[TRANSACTIONID] => 2EY34762VW9685022
)
|
Authorize(Hold) the payment from Buyer |
4 |
DoCapture |
DoCapture |
-NA- |
Array
(
[METHOD] => DoCapture
[USER] => testname_api1.no-spam.ws
[PWD] => 55555526677
[SIGNATURE] => Alsdfdsfafdsf.zYsROoDYkL2AigOq
[VERSION] => 95
[AUTHORIZATIONID] => 2EY34762VW9685022
[IPADDRESS] => 127.0.0.1
[AMT] => 124
[CURRENCYCODE] => USD
[COMPLETETYPE] => Complete
)
|
Array
(
[AUTHORIZATIONID] => 2EY34762VW9685022
[TIMESTAMP] => 2014-07-29T06:28:02Z
[CORRELATIONID] => 943ba369b948d
[ACK] => Success
[VERSION] => 95
[BUILD] => 11950065
[TRANSACTIONID] => 0U8601158C887733S
[PARENTTRANSACTIONID] => 2EY34762VW9685022
[RECEIPTID] => 3177-5474-1146-7724
[TRANSACTIONTYPE] => webaccept
[PAYMENTTYPE] => instant
[ORDERTIME] => 2014-07-29T06:28:02Z
[AMT] => 124.00
[FEEAMT] => 3.90
[TAXAMT] => 0.00
[CURRENCYCODE] => USD
[PAYMENTSTATUS] => Completed
[PENDINGREASON] => None
[REASONCODE] => None
[PROTECTIONELIGIBILITY] => Ineligible
|
Capture money which we have Authorized(Hold) |
5 |
DoVoid |
DoVoid |
-NA- |
Array
(
[METHOD] => DoVoid
[USER] => testname_api1.no-spam.ws
[PWD] => 55555526677
[SIGNATURE] => Alsdfdsfafds.zYsROoDYkL2AigOq
[VERSION] => 95
[AUTHORIZATIONID] => 9VP549332Y830720W
[IPADDRESS] => 127.0.0.1
[AMT] => 124
[CURRENCYCODE] => USD
[COMPLETETYPE] => Complete
)
|
Array
(
[AUTHORIZATIONID] => 9VP549332Y830720W
[TIMESTAMP] => 2014-07-29T06:28:52Z
[CORRELATIONID] => 8a5d49a877bad
[ACK] => Success
[VERSION] => 95
[BUILD] => 11950065
)
|
Return the Authorized(Holded) Amount to buyer account |
Include Paypal Library
class Global_Paypal {
private $_api_version = '95';
private $_api_username = 'test_api1.no-spam.ws';//this is dummpy plz update
private $_api_password = '1406987677';//this is dummpy plz update
private $_api_signature = 'ARDESpesJftWYRUVq94d7LvquBZIApzl9Jq3wuT.zYsROoDYkL2AigOq';//this is dummpy plz update
private $_uri = 'https://api-3t.sandbox.paypal.com/nvp';
/** DoDirect Payment - SALE* */
function doDirectPayment(array $data) {
$postData = array(
'METHOD' => 'DoDirectPayment',
'USER' => ($this->_api_username),
'PWD' => ($this->_api_password),
'SIGNATURE' => ($this->_api_signature),
'VERSION' => ($this->_api_version),
'PAYMENTACTION' => $data['paymentAction'],
'IPADDRESS' => $data['ip'],
'CREDITCARDTYPE' => $data['cctype'],
'ACCT' => $data['ccno'],
'EXPDATE' => $data['expdate'],
'CVV2' => $data['cvv2'],
'FIRSTNAME' => $data['fname'],
'LASTNAME' => $data['lname'],
'STREET' => $data['address'],
'CITY' => $data['city'],
'STATE' => $data['state'],
'COUNTRYCODE' => $data['ccode'],
'ZIP' => $data['zip'],
'AMT' => $data['amt'],
'CURRENCYCODE' => $data['currencycode'],
);
try {
$client = new Zend_Http_Client($this->_uri);
$postData = array_map('urlencode', $postData);
$client->setParameterPost($postData);
$response = $client->request('POST');
$body = $response->getRawBody();
parse_str($body, $nvpResponseArray);
return $nvpResponseArray;
} catch (Exception $e) {
echo $e->getMessage();
die;
}
}
/** Transfer Money to number of peoples - MassPay **/
function masspayment(array $receiverArray) {
$postData = array(
'METHOD' => 'MassPay',
'USER' => ($this->_api_username),
'PWD' => ($this->_api_password),
'SIGNATURE' => ($this->_api_signature),
'VERSION' => ($this->_api_version),
'RECEIVERTYPE' => 'EmailAddress',
'CURRENCYCODE' => 'USD',
);
$i = 0;
foreach ($receiverArray as $emailAddress => $amt) {
$postData["L_EMAIL{$i}"] = $emailAddress;
$postData["L_AMT{$i}"] = $amt;
$i++;
}
try {
$client = new Zend_Http_Client($this->_uri);
//$postData = array_map('urlencode', $postData);
pr($postData);
$client->setParameterPost($postData);
$response = $client->request('POST');
$body = $response->getRawBody();
parse_str($body, $nvpResponseArray);
return $nvpResponseArray;
} catch (Exception $e) {
echo $e->getMessage();
die;
}
}
/** DoDirect Payment - Authorization* */
function doauthPayment(array $data) {
$postData = array(
'METHOD' => 'DoDirectPayment',
'USER' => ($this->_api_username),
'PWD' => ($this->_api_password),
'SIGNATURE' => ($this->_api_signature),
'VERSION' => ($this->_api_version),
'PAYMENTACTION' => $data['paymentAction'],
'IPADDRESS' => $data['ip'],
'CREDITCARDTYPE' => $data['cctype'],
'ACCT' => $data['ccno'],
'EXPDATE' => $data['expdate'],
'CVV2' => $data['cvv2'],
'FIRSTNAME' => $data['fname'],
'LASTNAME' => $data['lname'],
'STREET' => $data['address'],
'CITY' => $data['city'],
'STATE' => $data['state'],
'COUNTRYCODE' => $data['ccode'],
'ZIP' => $data['zip'],
'AMT' => $data['amt'],
'CURRENCYCODE' => $data['currencycode'],
);
try {
/** Get the Transaction Id * */
$client = new Zend_Http_Client($this->_uri);
$postData = array_map('urlencode', $postData);
$client->setParameterPost($postData);
$response = $client->request('POST');
$body = $response->getRawBody();
parse_str($body, $nvpResponseArray);
/** Get the Transaction Id * */
if (!empty($nvpResponseArray['TRANSACTIONID'])) {
return $nvpResponseArray;
} else {
pr($nvpResponseArray);
die("TransactionId is empty");
}
return $nvpResponseArray;
} catch (Exception $e) {
echo $e->getMessage();
die;
}
}
/** DoCapture* */
function doCapturePayment($data = array()) {
$postData = array(
'METHOD' => 'DoCapture',
'USER' => ($this->_api_username),
'PWD' => ($this->_api_password),
'SIGNATURE' => ($this->_api_signature),
'VERSION' => ($this->_api_version),
'AUTHORIZATIONID' => $data['TransactionID'],
'IPADDRESS' => $data['ip'],
'AMT' => $data['amt'],
'CURRENCYCODE' => $data['currencycode'],
'COMPLETETYPE' => 'Complete'
);
try {
pr($postData);
/** Get the Transaction Id * */
$client = new Zend_Http_Client($this->_uri);
$postData = array_map('urlencode', $postData);
$client->setParameterPost($postData);
$response = $client->request('POST');
$body = $response->getRawBody();
parse_str($body, $nvpResponseArray);
pr($nvpResponseArray);
die;
/** Get the Transaction Id * */
if (!empty($nvpResponseArray['TRANSACTIONID'])) {
return $nvpResponseArray;
} else {
pr($nvpResponseArray);
die("TransactionId is empty");
}
return $nvpResponseArray;
} catch (Exception $e) {
echo $e->getMessage();
die;
}
}
}
Following are different functions which you can used to achieve above actions
- doDirectPayment: DoDirect Payment - Sale
- masspayment: Mass Pay
- doauthPayment: Authorization - PayPal
- doCapturePayment: Capture - PayPal
class PaypalController extends Zend_Controller_Action {
/** DoDirect Payment - SALE* */
public function indexAction() {
/** Sample Data* */
/** set Data * */
$amount = 100.00;
$creditCardType = 'MasterCard';
$creditCardNumber = '5522340006063638';
$expirationMonth = '09';
$expirationYear = '2015';
$cvv2 = '123';
$firstName = 'Aman';
$lastName = 'Jaiswal';
$address1 = 'Phase 7, Mohali';
$address2 = '';
$city = 'Largo';
$state = 'Punjab';
$zip = '160055';
$postData = array();
$countryCode = 'US';
$currencyCode = 'USD';
$ipAddress = $_SERVER['REMOTE_ADDR'];
/** set Data * */
$postData = array(
'paymentAction' => 'Sale',
'ip' => $_SERVER['REMOTE_ADDR'],
'cctype' => $creditCardType,
'ccno' => $creditCardNumber,
'expdate' => "{$expirationMonth}{$expirationYear}",
'cvv2' => urlencode($cvv2),
'fname' => $firstName,
'lname' => $lastName,
'address' => $address1 . ' ' . $address2,
'city' => $city,
'state' => $state,
'ccode' => $countryCode,
'zip' => $zip,
'amt' => $amount,
'currencycode' => $currencyCode,
'DESC' => 'Testing Payments Pro'
);
$paypal = new Global_PayPal();
$result = $paypal->doDirectPayment($postData);
print_r($result);
die;
/** Sample Data* */
}
/** Transfer Money to number of peoples - MassPay **/
function masspayAction() {
$paypal = new Global_PayPal();
$receiverArray = array(
'ajit@no-spam.ws' => '10.00',
'ajit@no-spam.ws' => '10.00',
);
$result = $paypal->masspayment($receiverArray);
print_r($result);die;
}
/** DoDirect Payment - Authorization* */
public function authAction() {
/** set Data * */
$amount = '124.00';
$creditCardType = 'MasterCard';
$creditCardNumber = '5522340006063638';
$expirationMonth = '10';
$expirationYear = '2015';
$cvv2 = '123';
$firstName = 'Aman';
$lastName = 'Jaiswal';
$address1 = 'Phase 8, Mohali';
$address2 = '';
$city = 'Largo';
$state = 'Punjab';
$zip = '160055';
$postData = array();
$countryCode = 'US';
$currencyCode = 'USD';
$ipAddress = $_SERVER['REMOTE_ADDR'];
$transActionId = '8f4de96650a85';
/** set Data * */
$postData = array(
'paymentAction' => 'authorization',
'ip' => $_SERVER['REMOTE_ADDR'],
'cctype' => $creditCardType,
'ccno' => $creditCardNumber,
'expdate' => "{$expirationMonth}{$expirationYear}",
'cvv2' => urlencode($cvv2),
'fname' => $firstName,
'lname' => $lastName,
'address' => $address1 . ' ' . $address2,
'city' => $city,
'state' => $state,
'ccode' => $countryCode,
'zip' => $zip,
'amt' => $amount,
'currencycode' => $currencyCode,
);
$paypal = new Global_PayPal();
$result = $paypal->doauthPayment($postData);
print_r($result);
die;
/** Sample Data* */
// action body
}
/** DoCapture* */
function captureAction(){
$postData = array(
'paymentAction' => 'DoCapture',
'ip' => $_SERVER['REMOTE_ADDR'],
'amt' => 124,
'currencycode' => 'USD',
'TransactionID' => '49760658JE805135N',
);
$paypal = new Global_PayPal();
$result = $paypal->doCapturePayment($postData);
print_r($result);
die;
}
}