質問

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;
}

}

役に立ちましたか?

解決

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;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top