微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用实时模型srmklive-paypal

如何解决无法使用实时模型srmklive-paypal

我正在使用srmk / paypal软件包1.0。

在沙箱模式下使用这个很棒的软件包几个月以来,我一直在努力使用实时模式。

我到处都是别人和其他地方都无法解决的问题。

如果我删除沙盒凭据,则在dd($response)的{​​{1}}之后立即出现无限循环

我使用的是1.0,所以ExpressCheckout应该不是问题

我已经在实时服务器上测试了相同的结果。

我的配置

$response = $provider->setExpressCheckout($checkoutData);

env和env.example

return [
    'mode'    => 'live',// Can only be 'sandBox' Or 'live'. If empty or invalid,'live' will be used.
    'sandBox' => [
        'username'    => env('PAYPAL_SANDBox_API_USERNAME',''),'password'    => env('PAYPAL_SANDBox_API_PASSWORD','secret'      => env('PAYPAL_SANDBox_API_SECRET','certificate' => env('PAYPAL_SANDBox_API_CERTIFICATE','app_id'      => 'APP-80W284485P519543T',// Used for testing Adaptive Payments API in sandBox mode
    ],'live' => [
        'username'    => env('PAYPAL_LIVE_API_USERNAME','password'    => env('PAYPAL_LIVE_API_PASSWORD','secret'      => env('PAYPAL_LIVE_API_SECRET','certificate' => env('PAYPAL_LIVE_API_CERTIFICATE','app_id'      => '',// Used for Adaptive Payments API
    ],'payment_action' => 'Sale',// Can only be 'Sale','Authorization' or 'Order'
    'currency'       => env('PAYPAL_CURRENCY','MXN'),'billing_type'   => 'MerchantinitiatedBilling','notify_url'     => '',// Change this accordingly for your application.
    'locale'         => env('PAYPAL_LOCALE','es_ES'),// force gateway language  i.e. it_IT,es_ES,en_US ... (for express checkout only)
    'validate_ssl'   => false,// Validate SSL when creating api client.
];

我使用PayPal提供的新API凭据

#PayPal Setting & API Credentials - sandBox
PAYPAL_SANDBox_API_USERNAME=sb-tr4z02598960_api1.business.example.com
PAYPAL_SANDBox_API_PASSWORD=VSYUE32AU7MT7VY4
PAYPAL_SANDBox_API_SECRET=ACdNh.ieqXXfGzIFBkj6F-fUdA49AIBmvpyOyz5MhLcslyQVdcB74zVJ
PAYPAL_SANDBox_API_CERTIFICATE=

#PayPal Setting & API Credentials - live
PAYPAL_LIVE_API_USERNAME=********************api1.gmail.com
PAYPAL_LIVE_API_PASSWORD=**********************K9W
PAYPAL_LIVE_API_SECRET=******************************FCBABE
PAYPAL_LIVE_API_CERTIFICATE= storage_path('cert_key_pem.txt'); // also tested empty

从包中调用函数时会弹出无限循环

public function  getExpressCheckout ($orderId) {

$checkoutData = $this->checkoutData($orderId); 
$provider = new ExpressCheckout();
$response = $provider->setExpressCheckout($checkoutData);

dd($response);

return redirect($response['paypal_link']);

}

private function checkoutData($orderId)
{
$cart = \Cart::getContent();
$cart2 = \Cart::getTotal();

$cartItems = array_map( function($item){
    return [
        'name' => $item['name'],'price' => $item['price'],'qty' => $item['quantity']
    ];
},$cart->toarray());


$checkoutData = [
    'items' => $cartItems,'return_url' => route('paypal.success',$orderId),'cancel_url' => route('paypal.cancel'),'invoice_id' => uniqid(),'invoice_description' => 'order description','total' => $cart2
];

return $checkoutData;
}

public function getExpressCheckoutSuccess(Request $request,$orderId)
{
$token = $request->get('token');
$payerId = $request->get('PayerID');
$provider = new ExpressCheckout();
$checkoutData = $this->checkoutData($orderId);

$response = $provider->getExpressCheckoutDetails($token);

if (in_array(strtoupper($response['ACK']),['SUCCESS','SUCCESSWITHWARNING'])) {

    $payment_status = $provider->doExpressCheckoutPayment($checkoutData,$token,$payerId);
    $status = $payment_status['PAYMENTINFO_0_PAYMENTSTATUS'];

    if (in_array($status,['Completed','Processed'])) {
        $order = Order::find($orderId);
        $order->is_paid = 1;
        $order->save();

        Mail::to($order->buyer_email)->send(new OrderMail($order));

        \Cart::clear();

        return view ('newOrder.success',compact('order'));
    }

谢谢,

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。