我遇到了向用户提供访客结帐(可选)功能的问题。我已经在stackoverflow上尝试了几乎所有的解决方案,但仍然迫使用户在paypal上创建一个帐户。我目前的网站是基于laravel。在我的旧网站上,基于Wordpress,访客结账在我使用插件的情况下运行良好,但在我目前的基于Laravel的网站上,Guest Checkout选项根本不起作用。我正在使用此插件https://github.com/srmklive/laravel-paypal。我在setExpressCheckout函数的src / Services / ExpressCheckout.php中添加了几行,所以setExpressCheckout现在看起来像这样:
public function setExpressCheckout($data, $subscription = false)
{
$this->post = $this->setCartItems($data['items'])->merge([
'PAYMENTREQUEST_0_ITEMAMT' => $data['total'],
'PAYMENTREQUEST_0_AMT' => $data['total'],
'PAYMENTREQUEST_0_PAYMENTACTION' => $this->paymentAction,
'PAYMENTREQUEST_0_CURRENCYCODE' => $this->currency,
'PAYMENTREQUEST_0_DESC' => $data['invoice_description'],
'PAYMENTREQUEST_0_INVNUM' => $data['invoice_id'],
'NOSHIPPING' => 0,
'SOLUTIONTYPE' => 'Mark',
'LANDINGPAGE' => 'Billing',
'USERSELECTEDFUNDINGSOURCE' => 'CreditCard',
'ADDROVERRIDE' => 1,
'RETURNURL' => $data['return_url'],
'CANCELURL' => $data['cancel_url'],
'LOCALE' => $this->locale,
]);
$this->setExpressCheckoutRecurringPaymentConfig($data, $subscription);
$response = $this->doPayPalRequest('SetExpressCheckout');
$response['paypal_link'] = $this->config['gateway_url'].'/webscr?cmd=_express-checkout&token='.$response['TOKEN'];
return $response;
}
我的旧网站paypal页面看起来像这样,用户没有被迫创建PayPal帐户:
我当前的网站paypal页面看起来像这样,用户必须加入paypal。
注意:两个网站上的Paypal帐户都是相同的,因此,如果Guest Checkout适用于一个网站,那么它也适用于另一个网站。
任何人都可以帮助我,我在这里失踪了。您的建议和帮助将受到高度赞赏。
谢谢。
答案 0 :(得分:0)
您可以尝试更改您传递的cmd值,如下所示:
$response['paypal_link'] = $this->config['gateway_url'].'/webscr?cmd=_cart&token='.$response['TOKEN'];
它不会要求创建帐户,用户可以作为PayPal的访客结帐。