问题描述
我正在使用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 (将#修改为@)