v1.5.5f php 7.1 OPC v2.3.4
Hello Cindy,
I have been getting PayPal error code 10730 'Shipping Address Postal Code Empty - The field Shipping Address Postal Code is required'... only when checking out as a Guest and electing to pay via PayPal. There are no other issues with checkout and OPC, just this.
I have applied the patch you posted here (https://www.zen-cart.com/showthread....72#post1374172) however it is not working for me. (ever the pessimist I figure it may be a v155F quirk (???) )
I am not getting an OPC debug report but am getting PayPal CURL debugs (see example below)
This is a copy of the segment of my includes/modules/payment/paypalwpp.php (hopefully the patch is inserted correctly)Code:2020-11-13 01:02:51 ------------------- (live transaction) --> https://api-3t.paypal.com/nvp Request Headers: Array ( [0] => Content-Type: text/namevalue [1] => X-VPS-Timeout: 90 [2] => X-VPS-VIT-Client-Type: PHP/cURL [3] => X-VPS-VIT-Integration-Product: PHP::Zen Cart(R) - PayPal/NVP [4] => X-VPS-VIT-Integration-Version: 1.5.5 ) Request Parameters: {DoExpressCheckoutPayment} Array ( [PAYMENTREQUEST_0_AMT] => 17.46 [PAYMENTREQUEST_0_ITEMAMT] => 12.56 [PAYMENTREQUEST_0_SHIPPINGAMT] => 4.9 [L_PAYMENTREQUEST_0_NUMBER0] => ClipOn_433 [L_PAYMENTREQUEST_0_NAME0] => Silver Clip On Earrings, Fashion Earrings, Turkish Influence [212] [L_PAYMENTREQUEST_0_QTY0] => 1 [L_PAYMENTREQUEST_0_AMT0] => 12.56 [PAYMENTREQUEST_0_SHIPTONAME] => Guest Customer, **do not remove** [PAYMENTREQUEST_0_SHIPTOSTREET] => Default billing address [PAYMENTREQUEST_0_SHIPTOCITY] => [PAYMENTREQUEST_0_SHIPTOSTATE] => SA [PAYMENTREQUEST_0_SHIPTOZIP] => [PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE] => AU [BUTTONSOURCE] => ZenCart-EC_us [ADDROVERRIDE] => 1 [RETURNFMFDETAILS] => 0 [PAYMENTREQUEST_0_CUSTOM] => EC-33-1605232971 [PAYMENTREQUEST_0_INVNUM] => 33-1605232971-[DazzlersClipOnEarrings] [PAYMENTREQUEST_0_CURRENCYCODE] => AUD [TOKEN] => EC-45W88961NA283840S [PAYERID] => DFX4AE5BAT5QU [PAYMENTREQUEST_0_PAYMENTACTION] => Sale [NOTIFYURL] => https://www.dazzlerscliponearrings.com.au/ipn_main_handler.php [METHOD] => DoExpressCheckoutPayment [USER] => dazzlers2009_api1.hotmail.com [PWD] => **************** [VERSION] => 124.0 [SIGNATURE] => ****************************************************SLns ) Response: Array ( [TOKEN] => EC-45W88961NA283840S [SUCCESSPAGEREDIRECTREQUESTED] => false [TIMESTAMP] => 2020-11-13T02:02:51Z [CORRELATIONID] => 1ebb03776eb0d [ACK] => Failure [VERSION] => 124.0 [BUILD] => 55058010 [L_ERRORCODE0] => 10730 [L_SHORTMESSAGE0] => Shipping Address Postal Code Empty [L_LONGMESSAGE0] => The field Shipping Address Postal Code is required [L_SEVERITYCODE0] => Error [CURL_ERRORS] => ) DoExpressCheckoutPayment, Elapsed: 387ms -- Failure TOKEN=EC%2d45W88961NA283840S&SUCCESSPAGEREDIRECTREQUESTED=false&TIMESTAMP=2020%2d11%2d13T02%3a02%3a51Z&CORRELATIONID=1ebb03776eb0d&ACK=Failure&VERSION=124%2e0&BUILD=55058010&L_ERRORCODE0=10730&L_SHORTMESSAGE0=Shipping%20Address%20Postal%20Code%20Empty&L_LONGMESSAGE0=The%20field%20Shipping%20Address%20Postal%20Code%20is%20required&L_SEVERITYCODE0=Error&CURL_ERRORS=
cheers,Code:/** * Get Override Address (uses sendto if set, otherwise uses customer's primary address) */ function getOverrideAddress() { global $db; // Only proceed IF *in* markflow mode AND logged-in (have to be logged in to get to markflow mode anyway) if (!empty($_GET['markflow']) && isset($_SESSION['customer_id']) && $_SESSION['customer_id']) { // From now on for this user we will edit addresses in Zen Cart, not by going to PayPal. $_SESSION['paypal_ec_markflow'] = 1; // debug $this->zcLog('getOverrideAddress - 1', 'Now in markflow mode.' . "\n" . 'SESSION[sendto] = ' . (int)$_SESSION['sendto']); // find the users default address id if (!empty($_SESSION['sendto'])) { $address_id = $_SESSION['sendto']; } else { $sql = "SELECT customers_default_address_id FROM " . TABLE_CUSTOMERS . " WHERE customers_id = :customerId"; $sql = $db->bindVars($sql, ':customerId', $_SESSION['customer_id'], 'integer'); $default_address_id_arr = $db->Execute($sql); if (!$default_address_id_arr->EOF) { $address_id = $default_address_id_arr->fields['customers_default_address_id']; } else { // couldn't find an address. return false; } } // ----- // Give a watching observer the opportunity to bypass this address-override. An observer // can disable the address-override processing by setting the $disable_address_override // parameter to specifically (bool)true. // $disable_address_override = false; $this->notify('NOTIFY_PAYPALWPP_DISABLE_GET_OVERRIDE_ADDRESS', $address_id, $disable_address_override); if ($disable_address_override === true) { $this->zcLog('getOverrideAddress - 1a', "Override disabled by observer request.\n"); return false; }
Mike


Reply With Quote

