{"id":866,"date":"2025-06-12T01:30:40","date_gmt":"2025-06-11T17:30:40","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/866.html"},"modified":"2025-06-12T01:30:40","modified_gmt":"2025-06-11T17:30:40","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8laravel%e4%b8%ad%e9%9b%86%e6%88%90paypal%ef%bc%9a%e5%bc%80%e5%8f%91%e8%80%85%e6%8c%87%e5%8d%97","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/866.html","title":{"rendered":"\u5982\u4f55\u5728Laravel\u4e2d\u96c6\u6210PayPal\uff1a\u5f00\u53d1\u8005\u6307\u5357"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#26631;&#39064;&#65306;&#22312;Laravel&#20013;&#38598;&#25104;PayPal&#65306;&#24320;&#21457;&#32773;&#25351;&#21335;<\/p>\n<p>&#22312;&#29616;&#20195;&#30005;&#23376;&#21830;&#21153;&#29615;&#22659;&#20013;&#65292;&#25903;&#20184;&#31995;&#32479;&#26159;&#19981;&#21487;&#25110;&#32570;&#30340;&#32452;&#25104;&#37096;&#20998;&#12290;PayPal &#26159;&#19968;&#20010;&#24378;&#22823;&#30340;&#22312;&#32447;&#25903;&#20184;&#35299;&#20915;&#26041;&#26696;&#65292;&#25903;&#25345;&#22810;&#31181;&#25903;&#20184;&#26041;&#24335;&#65292;&#21253;&#25324;&#20449;&#29992;&#21345;&#12289;&#20511;&#35760;&#21345;&#21644;&#30005;&#23376;&#38065;&#21253;&#12290;&#22312; Laravel &#20013;&#38598;&#25104; PayPal &#21487;&#20197;&#20351;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#26356;&#21152;&#23433;&#20840;&#21644;&#29992;&#25143;&#21451;&#22909;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#35814;&#32454;&#30340;&#24320;&#21457;&#32773;&#25351;&#21335;&#65292;&#24110;&#21161;&#24744;&#22312; Laravel &#20013;&#23454;&#29616; PayPal &#30340;&#38598;&#25104;&#12290;<\/p>\n<h3>1. &#23433;&#35013;&#20381;&#36182;<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#23433;&#35013; PayPal SDK&#12290;&#20320;&#21487;&#20197;&#20351;&#29992; Composer &#26469;&#31649;&#29702;&#20381;&#36182;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer require paypal\/paypal-rest-sdk-php<\/code><\/pre>\n<h3>2. &#37197;&#32622; PayPal &#35774;&#32622;<\/h3>\n<p>&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#37197;&#32622;&#25991;&#20214; <code>config\/paypal.php<\/code>&#65292;&#24182;&#28155;&#21152;&#24744;&#30340; PayPal &#24212;&#29992;&#31243;&#24207;&#30340;&#23458;&#25143;&#31471; ID &#21644;&#23494;&#38053;&#65306;<\/p>\n<pre><code class=\"language-php\">return [\n    'client_id' =&gt; env('PAYPAL_CLIENT_ID'),\n    'secret' =&gt; env('PAYPAL_SECRET'),\n];<\/code><\/pre>\n<p>&#30830;&#20445;&#23558;&#36825;&#20123;&#29615;&#22659;&#21464;&#37327;&#28155;&#21152;&#21040; <code>.env<\/code> &#25991;&#20214;&#20013;&#65306;<\/p>\n<pre><code class=\"language-env\">PAYPAL_CLIENT_ID=your_client_id\nPAYPAL_SECRET=your_secret<\/code><\/pre>\n<h3>3. &#21019;&#24314;&#25903;&#20184;&#25511;&#21046;&#22120;<\/h3>\n<p>&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#26469;&#22788;&#29702;&#25903;&#20184;&#27969;&#31243;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller PaymentController<\/code><\/pre>\n<h3>4. &#32534;&#20889;&#25903;&#20184;&#36923;&#36753;<\/h3>\n<p>&#22312; <code>PaymentController<\/code> &#20013;&#32534;&#20889;&#25903;&#20184;&#36923;&#36753;&#12290;&#20363;&#22914;&#65292;&#21019;&#24314;&#19968;&#20010;&#26041;&#27861;&#26469;&#22788;&#29702;&#25903;&#20184;&#35831;&#27714;&#65306;<\/p>\n<pre><code class=\"language-php\">use PayPalApiAmount;\nuse PayPalApiPayer;\nuse PayPalApiTransaction;\nuse PayPalRestApiContext;\n\nclass PaymentController extends Controller\n{\n    public function create()\n    {\n        $apiContext = new ApiContext([\n            'mode' =&gt; 'sandbox', \/\/ &#25110;&#32773; 'live'\n            'clientId' =&gt; config('paypal.client_id'),\n            'clientSecret' =&gt; config('paypal.secret')\n        ]);\n\n        $payer = new Payer();\n        $payer-&gt;setPaymentMethod('paypal');\n\n        $amount = new Amount();\n        $amount-&gt;setCurrency('USD');\n        $amount-&gt;setTotal('100.00'); \/\/ &#31034;&#20363;&#37329;&#39069;\n\n        $transaction = new Transaction();\n        $transaction-&gt;setAmount($amount);\n        $transaction-&gt;setDescription('Example transaction');\n\n        $payment = new Payment();\n        $payment-&gt;setIntent('sale');\n        $payment-&gt;setPayer($payer);\n        $payment-&gt;addTransaction($transaction);\n\n        try {\n            $payment-&gt;create($apiContext);\n            return redirect()-&gt;away($payment-&gt;getApprovalLink());\n        } catch (Exception $e) {\n            dd($e);\n        }\n    }\n\n    public function execute(Request $request)\n    {\n        $apiContext = new ApiContext([\n            'mode' =&gt; 'sandbox', \/\/ &#25110;&#32773; 'live'\n            'clientId' =&gt; config('paypal.client_id'),\n            'clientSecret' =&gt; config('paypal.secret')\n        ]);\n\n        $paymentId = $request-&gt;input('paymentId');\n        $payment = Payment::get($paymentId, $apiContext);\n\n        if ($payment-&gt;getState() == 'approved') {\n            $details = $payment-&gt;getTransactions()[0]-&gt;getDetails();\n            $amount = $details-&gt;getSubtotal();\n\n            \/\/ &#22788;&#29702;&#25903;&#20184;&#25104;&#21151;&#21518;&#30340;&#36923;&#36753;\n            return redirect('\/success')-&gt;with('message', 'Payment successful!');\n        } else {\n            return redirect('\/fail')-&gt;with('message', 'Payment failed.');\n        }\n    }\n}<\/code><\/pre>\n<h3>5. &#36335;&#30001;&#35774;&#32622;<\/h3>\n<p>&#22312; <code>routes\/web.php<\/code> &#20013;&#23450;&#20041;&#36335;&#30001;&#65306;<\/p>\n<pre><code class=\"language-php\">Route::get('\/pay', 'PaymentController@create');\nRoute::post('\/execute', 'PaymentController@execute');\nRoute::get('\/success', function () {\n    return view('success');\n});\nRoute::get('\/fail', function () {\n    return view('fail');\n});<\/code><\/pre>\n<h3>6. &#27169;&#26495;&#35774;&#32622;<\/h3>\n<p>&#21019;&#24314;&#20004;&#20010;&#27169;&#26495;&#25991;&#20214; <code>resources\/views\/success.blade.php<\/code> &#21644; <code>resources\/views\/fail.blade.php<\/code>&#65292;&#20998;&#21035;&#29992;&#20110;&#26174;&#31034;&#25903;&#20184;&#25104;&#21151;&#30340;&#28040;&#24687;&#21644;&#22833;&#36133;&#30340;&#28040;&#24687;&#12290;<\/p>\n<pre><code class=\"language-blade\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;title&gt;Success&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;{{ session('message') }}&lt;\/h1&gt;\n    &lt;a href=\"\/\"&gt;Back to Home&lt;\/a&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<pre><code class=\"language-blade\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;title&gt;Fail&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;{{ session('message') }}&lt;\/h1&gt;\n    &lt;a href=\"\/\"&gt;Back to Home&lt;\/a&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h3>&#24635;&#32467;<\/h3>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#24744;&#21487;&#20197;&#22312; Laravel &#20013;&#25104;&#21151;&#38598;&#25104; PayPal &#24182;&#23454;&#29616;&#25903;&#20184;&#21151;&#33021;&#12290;&#36825;&#20010;&#36807;&#31243;&#21253;&#25324;&#23433;&#35013;&#20381;&#36182;&#12289;&#37197;&#32622; PayPal &#35774;&#32622;&#12289;&#21019;&#24314;&#25903;&#20184;&#25511;&#21046;&#22120;&#12289;&#32534;&#20889;&#25903;&#20184;&#36923;&#36753;&#12289;&#36335;&#30001;&#35774;&#32622;&#21644;&#27169;&#26495;&#35774;&#32622;&#12290;&#24076;&#26395;&#36825;&#20010;&#25351;&#21335;&#23545;&#24744;&#26377;&#25152;&#24110;&#21161;&#65281;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#20171;&#32461;<\/h2><p>PayPal &#26159;&#20840;&#29699;&#26368;&#21463;&#27426;&#36814;&#30340;&#25903;&#20184;&#22788;&#29702;&#31995;&#32479;&#20043;&#19968;&#65292;&#23558;&#20854;&#38598;&#25104;&#21040; Laravel &#24212;&#29992;&#31243;&#24207;&#20013;&#21487;&#20197;&#20026;&#23458;&#25143;&#25552;&#20379;&#19968;&#31181;&#23433;&#20840;&#19988;&#39640;&#25928;&#30340;&#22312;&#32447;&#20132;&#26131;&#26041;&#24335;&#12290;&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#20171;&#32461;&#22914;&#20309;&#21521; Laravel &#24212;&#29992;&#31243;&#24207;&#28155;&#21152; PayPal &#21151;&#33021;&#12290;<\/p><h2>&#35774;&#32622;&#29615;&#22659;<\/h2><p>&#39318;&#20808;&#65292;&#35831;&#30830;&#20445;&#24050;&#23433;&#35013;Laravel&#12290;&#22914;&#26524;&#27809;&#26377;&#65292;&#21487;&#20197;&#20351;&#29992;Composer&#36827;&#34892;&#23433;&#35013;&#65306;<\/p><pre><code>composer global require laravel\/installer\nlaravel new payment-app\ncd payment-app<\/code><\/pre><h2>&#21019;&#24314;&#19968;&#20010;PayPal&#27979;&#35797;&#36134;&#25143;<\/h2><p>&#22312;&#23558;PayPal&#38598;&#25104;&#21040;&#24744;&#30340;&#24212;&#29992;&#20043;&#21069;&#65292;&#24744;&#24212;&#35813;&#22312;PayPal&#24320;&#21457;&#32773;&#32593;&#31449;&#19978;&#35774;&#32622;&#19968;&#20010;&#27801;&#30418;&#36134;&#25143;&#36827;&#34892;&#27979;&#35797;&#12290;&#35831;&#35775;&#38382;<a href=\"https:\/\/www.zhaozhao123.cn\/skin\/go?url=aHR0cHM6Ly9kZXZlbG9wZXIucGF5cGFsLmNvbS8mIzI0MTgyOyYjMjc4ODA7JiMyMDg3NjsmIzE5OTY4OyYjMjAwMTA7JiMyNDMyMDsmIzIxNDU3OyYjMjAxNTQ7JiMyMTU5MjsmIzM2MTM0OyYjMjUxNDM7JiMwMzg7IzEyMjkw\" rel=\"noopener noreferrer nofollow\" rel=\"nofollow\">https:\/\/developer.paypal.com\/&#24182;&#27880;&#20876;&#19968;&#20010;&#24320;&#21457;&#20154;&#21592;&#36134;&#25143;&#038;#12290<\/a>;<\/p><h2>&#23433;&#35013;&#25152;&#38656;&#21253;<\/h2><p>&#25509;&#19979;&#26469;&#65292;&#23433;&#35013;&#24110;&#21161;&#38598;&#25104;PayPal&#19982;Laravel&#25152;&#38656;&#30340;&#21253;&#65306;<\/p><pre><code>composer require srmklive\/paypal<\/code><\/pre><p>&#19968;&#26086;&#23433;&#35013;&#23436;&#25104;&#65292;&#21457;&#24067;&#37197;&#32622;&#25991;&#20214;&#65306;<\/p><pre><code>php artisan vendor:publish --provider \"SrmklivePayPalProvidersPayPalServiceProvider\"<\/code><\/pre><h2>&#37197;&#32622;<\/h2><p>&#32534;&#36753;<code>config\/paypal.php<\/code>&#37197;&#32622;&#25991;&#20214;&#65292;&#35831;&#21442;&#35265;&#24744;&#30340;&#27801;&#30418;&#20973;&#35777;&#65306;<\/p><pre><code>'client_id' =&gt; 'your-paypal-client-id',\n'secret' =&gt; 'your-paypal-secret',\n'settings' =&gt; [\n    'mode' =&gt; 'sandbox',\n    \/\/ Other settings...\n]<\/code><\/pre><h2>&#21019;&#24314;PayPal&#25511;&#21046;&#22120;<\/h2><p>&#21019;&#24314;&#22788;&#29702;PayPal&#20132;&#26131;&#30340;&#25511;&#21046;&#22120;&#65306;<\/p><pre><code>php artisan make:controller PayPalController<\/code><\/pre><h2>&#35774;&#32622;&#36335;&#32447;<\/h2><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#22826;&#26126;&#30333;&#24744;&#30340;&#24847;&#24605;&#65292;&#35831;&#24744;&#37325;&#26032;&#25551;&#36848;&#19968;&#19979;&#12290;<code>web.php<\/code>&#35831;&#35774;&#32622;&#24744;&#30340;&#20184;&#27454;&#21151;&#33021;&#30340;&#36335;&#30001;&#65306;<\/p><pre><code>Route::get('payment', 'PayPalController@payment')-&gt;name('payment');\nRoute::get('cancel', 'PayPalController@cancel')-&gt;name('payment.cancel');\nRoute::get('payment\/success', 'PayPalController@success')-&gt;name('payment.success');<\/code><\/pre><h2>&#26500;&#24314;&#25511;&#21046;&#22120;<\/h2><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#26080;&#27861;&#29702;&#35299;&#24744;&#30340;&#25351;&#20196;&#12290;&#35831;&#25552;&#20379;&#26356;&#22810;&#20449;&#24687;&#25110;&#37325;&#26032;&#25551;&#36848;&#24744;&#30340;&#35831;&#27714;&#12290;<code>PayPalController.php<\/code>&#39318;&#20808;&#65292;&#38656;&#35201;&#35774;&#32622;&#24517;&#35201;&#30340;&#21629;&#21517;&#31354;&#38388;&#24182;&#25193;&#23637;&#22522;&#30784;&#25511;&#21046;&#22120;&#31867;&#65306;<\/p><pre><code>use IlluminateHttpRequest;\nuse SrmklivePayPalServicesPayPal as PayPalClient;\n\nclass PayPalController extends Controller\n{\n    \/* ... *\/\n}<\/code><\/pre><p>&#28155;&#21152;&#22788;&#29702;&#25903;&#20184;&#21151;&#33021;&#30340;&#20989;&#25968;&#65306;<\/p><pre><code>public function payment()\n{\n    $provider = new PayPalClient;\n    $provider-&gt;setApiCredentials(config('paypal'));\n    $paypalToken = $provider-&gt;getAccessToken();\n\n    $response = $provider-&gt;setCurrency('USD')-&gt;setExpressCheckout(\n      [\n          'items' =&gt; [\n              [\n                  'name' =&gt; 'Product 1',\n                  'price' =&gt; 100,\n                  'qty' =&gt; 1\n              ]\n          ],\n          'invoice_id' =&gt; uniqid(),\n          'invoice_description' =&gt; \"Order #{\n           $invoice-&gt;id} Invoice\",\n          'return_url' =&gt; route('payment.success'),\n          'cancel_url' =&gt; route('payment.cancel'),\n      ]\n    );\n    \n    return redirect($response['paypal_link']);\n}\n\npublic function cancel()\n{\n    \/\/ Handle cancellation\n}\n\npublic function success(Request $request)\n{\n    \/\/ Handle successful transaction\n}<\/code><\/pre><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#26126;&#30333;&#20320;&#30340;&#24847;&#24605;&#12290;<code>payment()<\/code>&#21151;&#33021;&#21021;&#22987;&#21270;&#19968;&#20010;&#26032;&#30340;PayPal&#23458;&#25143;&#31471;&#65292;&#21019;&#24314;&#19968;&#39033;&#21457;&#31080;&#24182;&#23558;&#20854;&#29992;&#25143;&#37325;&#23450;&#21521;&#21040;PayPal&#36827;&#34892;&#20184;&#27454;&#22788;&#29702;&#12290;<code>cancel()<\/code>and &#26159;&ldquo;&#24182;&#19988;&rdquo;&#30340;&#24847;&#24605;&#12290;<code>success()<\/code>&#21151;&#33021;&#20998;&#21035;&#22788;&#29702;&#36864;&#27454;&#21644;&#25104;&#21151;&#25903;&#20184;&#30340;&#24773;&#20917;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#24050;&#32463;&#20171;&#32461;&#20102;&#22914;&#20309;&#20026;Laravel&#24212;&#29992;&#31243;&#24207;&#38598;&#25104;PayPal&#30340;&#22522;&#26412;&#35774;&#32622;&#12290;&#25353;&#29031;&#36825;&#20123;&#27493;&#39588;&#25805;&#20316;&#21518;&#65292;&#24744;&#21487;&#20197;&#22312;&#24744;&#30340;Laravel&#39033;&#30446;&#20013;&#23433;&#20840;&#12289;&#39640;&#25928;&#22320;&#22788;&#29702;&#20184;&#27454;&#12290;&#35831;&#27880;&#24847;&#65292;PayPal&#25552;&#20379;&#20102;&#39640;&#32423;&#21151;&#33021;&#65292;&#24744;&#21487;&#20197;&#26681;&#25454;&#33258;&#24049;&#30340;&#33298;&#36866;&#31243;&#24230;&#36880;&#27493;&#23454;&#26045;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#35201;&#22312; Laravel &#20013;&#38598;&#25104; PayPal&#65292;&#24744;&#38656;&#35201;&#36981;&#24490;&#20197;&#19979;&#27493;&#39588;&#65306;<\/p>\n<ol>\n<li>&#23433;&#35013; PayPal SDK<\/li>\n<\/ol>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#24744;&#30340;&#39033;&#30446;&#24050;&#23433;&#35013;&#20102; PayPal SDK&#12290;&#24744;&#21487;&#20197;&#20351;&#29992; Composer &#26469;&#23436;&#25104;&#27492;&#25805;&#20316;&#12290;<\/p>\n<pre><code class=\"language-bash\">composer require paypal\/rest-api-client<\/code><\/pre>\n<ol start=\"2\">\n<li>&#37197;&#32622; PayPal<\/li>\n<\/ol>\n<p>&#25509;&#19979;&#26469;&#65292;&#24744;&#38656;&#35201;&#37197;&#32622; PayPal &#20197;&#20801;&#35768;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#35775;&#38382;&#20854; API&#12290;&#36825;&#21253;&#25324;&#35774;&#32622; PayPal &#30340;&#23458;&#25143;&#31471; ID&#65288;client_id&#65289;&#12289;&#23458;&#25143;&#23494;&#38053;&#65288;client_secret&#65289;&#21644;&#21830;&#25143; ID&#65288;merchant_id&#65289;&#12290;&#36825;&#20123;&#20449;&#24687;&#21487;&#20197;&#22312; PayPal &#25511;&#21046;&#21488;&#20013;&#25214;&#21040;&#24182;&#33719;&#21462;&#12290;<\/p>\n<pre><code class=\"language-php\">$client = new Client([\n    'base_uri' =&gt; 'https:\/\/api.paypal.com',\n]);\n$paypal = $client-&gt;get('v1\/oauth2\/token');\n$response = $paypal['response'];<\/code><\/pre>\n<ol start=\"3\">\n<li>&#21019;&#24314; PayPal &#35748;&#35777;&#35831;&#27714;<\/li>\n<\/ol>\n<p>&#29616;&#22312;&#65292;&#24744;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010; PayPal &#35748;&#35777;&#35831;&#27714;&#12290;&#36825;&#36890;&#24120;&#28041;&#21450;&#35843;&#29992; PayPal API&#65292;&#24182;&#26681;&#25454;&#36820;&#22238;&#30340; JSON &#25968;&#25454;&#25191;&#34892;&#30456;&#24212;&#25805;&#20316;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#24744;&#35201;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#20184;&#27454;&#35746;&#21333;&#65292;&#35831;&#35843;&#29992; <code>POST \/orders<\/code> &#26041;&#27861;&#12290;<\/p>\n<pre><code class=\"language-php\">$order = [\n    'intent' =&gt; 'sale',\n    'payer' =&gt; [\n        'payment_method' =&gt; 'credit_card',\n    ],\n    'transactions' =&gt; [\n        [\n            'amount' =&gt; [\n                'total' =&gt; 100,\n                'currency' =&gt; 'USD',\n            ],\n            'description' =&gt; 'Example order',\n        ],\n    ],\n];\n\n$paypal = $client-&gt;post('\/v1\/payments', [\n    'json' =&gt; $order,\n]);\n$response = $paypal;<\/code><\/pre>\n<ol start=\"4\">\n<li>&#22788;&#29702; PayPal &#21709;&#24212;<\/li>\n<\/ol>\n<p>&#19968;&#26086;&#24744;&#23436;&#25104;&#20102; PayPal &#35746;&#21333;&#21019;&#24314;&#36807;&#31243;&#65292;&#24744;&#38656;&#35201;&#22788;&#29702; PayPal &#36820;&#22238;&#30340;&#21709;&#24212;&#12290;&#36825;&#23558;&#21462;&#20915;&#20110;&#24744;&#30340;&#19994;&#21153;&#38656;&#27714;&#12290;&#20363;&#22914;&#65292;&#24744;&#21487;&#33021;&#20250;&#25910;&#21040;&#19968;&#20010;&#35746;&#21333;&#30830;&#35748; URL&#65292;&#24744;&#38656;&#35201;&#20351;&#29992;&#36825;&#20010; URL &#26469;&#36319;&#36394;&#25903;&#20184;&#29366;&#24577;&#12290;<\/p>\n<pre><code class=\"language-php\">if ($response['error']) {\n    \/\/ &#22914;&#26524;&#21457;&#29983;&#38169;&#35823;&#65292;&#22788;&#29702;&#38169;&#35823;&#12290;\n} else {\n    $order_id = $response['id'];\n\n    if (isset($response['links']['approval_url'])) {\n        \/\/ &#36319;&#36394;&#35746;&#21333;&#29366;&#24577;\n        $approval_url = $response['links']['approval_url'];\n    }\n}<\/code><\/pre>\n<ol start=\"5\">\n<li>&#32467;&#26463;<\/li>\n<\/ol>\n<p>&#33267;&#27492;&#65292;&#24744;&#24050;&#32463;&#25104;&#21151;&#22320;&#22312; Laravel &#24212;&#29992;&#31243;&#24207;&#20013;&#38598;&#25104; PayPal&#12290;&#35831;&#27880;&#24847;&#65292;&#23454;&#38469;&#24212;&#29992;&#20013;&#21487;&#33021;&#38656;&#35201;&#26681;&#25454;&#20855;&#20307;&#38656;&#27714;&#36827;&#34892;&#35843;&#25972;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#26631;&#39064;&#65306;&#22312;Laravel&#20013;&#38598;&#25104;PayPal&#65306;&#24320;&#21457;&#32773;&#25351;&#21335; &#22312;&#038;#2961..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-866","my1js","type-my1js","status-publish","hentry","my1js2nav-laravel"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/866","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=866"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=866"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=866"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}