Question

I am unable to get the shipping Addresses of my customers in the 'Transacton Details' page. It's displaying the following message.

'We have no shipping address on file'

The issue mainly happens when users use PaypalPro (Direct Payment) option.

Can anyone help me in this issue.

Note:

This is my code corresponding to the DoDirectPayment Request.

class ProAuthorizeRequest extends AbstractRequest { protected $action = 'Authorization';

public function getData()
{
    $data = $this->getBaseData('DoDirectPayment');

    $this->validate('amount', 'card');
    $this->getCard()->validate();

    $data['PAYMENTACTION'] = $this->action;
    $data['AMT'] = $this->getAmount();
    $data['CURRENCYCODE'] = $this->getCurrency();
    $data['INVNUM'] = $this->getTransactionId();
    $data['DESC'] = $this->getDescription();

    // add credit card details
    $data['ACCT'] = $this->getCard()->getNumber();
    $data['CREDITCARDTYPE'] = $this->getCard()->getBrand();
    $data['EXPDATE'] = $this->getCard()->getExpiryMonth().$this->getCard()->getExpiryYear();
    $data['STARTDATE'] = $this->getCard()->getStartMonth().$this->getCard()->getStartYear();
    $data['CVV2'] = $this->getCard()->getCvv();
    $data['ISSUENUMBER'] = $this->getCard()->getIssueNumber();
    $data['IPADDRESS'] = $this->getClientIp();
    $data['FIRSTNAME'] = $this->getCard()->getFirstName();
    $data['LASTNAME'] = $this->getCard()->getLastName();
    $data['EMAIL'] = $this->getCard()->getEmail();
    $data['STREET'] = $this->getCard()->getAddress1();
    $data['STREET2'] = $this->getCard()->getAddress2();
    $data['CITY'] = $this->getCard()->getCity();
    $data['STATE'] = $this->getCard()->getState();
    $data['ZIP'] = $this->getCard()->getPostcode();
    $data['COUNTRYCODE'] = strtoupper($this->getCard()->getCountry());

    return $data;
}

}

Was it helpful?

Solution

For DoDirectPayment you need to also include the SHIPTO variables:

public function getData()
{
    $data = $this->getBaseData('DoDirectPayment');

    $this->validate('amount', 'card');
    $this->getCard()->validate();

    $data['PAYMENTACTION'] = $this->action;
    $data['AMT'] = $this->getAmount();
    $data['CURRENCYCODE'] = $this->getCurrency();
    $data['INVNUM'] = $this->getTransactionId();
    $data['DESC'] = $this->getDescription();

    // add credit card details
    $data['ACCT'] = $this->getCard()->getNumber();
    $data['CREDITCARDTYPE'] = $this->getCard()->getBrand();
    $data['EXPDATE'] = $this->getCard()->getExpiryMonth().$this->getCard()->getExpiryYear();
    $data['STARTDATE'] = $this->getCard()->getStartMonth().$this->getCard()->getStartYear();
    $data['CVV2'] = $this->getCard()->getCvv();
    $data['ISSUENUMBER'] = $this->getCard()->getIssueNumber();
    $data['IPADDRESS'] = $this->getClientIp();
    $data['FIRSTNAME'] = $this->getCard()->getFirstName();
    $data['LASTNAME'] = $this->getCard()->getLastName();
    $data['EMAIL'] = $this->getCard()->getEmail();
    $data['STREET'] = $this->getCard()->getAddress1();
    $data['STREET2'] = $this->getCard()->getAddress2();
    $data['CITY'] = $this->getCard()->getCity();
    $data['STATE'] = $this->getCard()->getState();
    $data['ZIP'] = $this->getCard()->getPostcode();
    $data['COUNTRYCODE'] = strtoupper($this->getCard()->getCountry());
    //shipping information as you want displayed on transaction details. name is a single field.
    $data['SHIPTONAME'] = $this->getCard()->getFirstName() . " " . $this->getCard()->getLastName();
    $data['SHIPTOSTREET'] = $this->getCard()->getAddress1();
    $data['SHIPTOSTREET2'] = $this->getCard()->getAddress2();
    $data['SHIPTOCITY'] = $this->getCard()->getCity();
    $data['SHIPTOSTATE'] = $this->getCard()->getState();
    $data['SHIPTOZIP'] = $this->getCard()->getPostcode();
    $data['SHIPTOCOUNTRYCODE'] = strtoupper($this->getCard()->getCountry());

    return $data;
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top