1.登录paypal官网注册账户:https://www.paypal.com (根据自己的需求选择对应的类型)
2.前往paypal开发者平台https://developer.paypal.com/ 进行创建应用(建议使用谷歌浏览器,有个自带的翻译功能):
默认会生成一个个人和商家的账户:
3.前往 https://github.com/paypal/PayPal-PHP-SDK 下载Paypal SDK,我只用 lib 里面的 PayPal,把PayPal 文件夹移动到 tp5 根目录extend 里面
4.在控制器里面:
<?php namespace app\index\controller; use think\Controller; class Pay extends Controller { public function index() { $apiContext = new \PayPal\Rest\ApiContext( new \PayPal\Auth\OAuthTokenCredential( 'AX3W0IBtYR5kZYLMi7C1c1N3pw-IskAjzUcMQ1yPpLsOtx3XyGyqt-8a1HQnNCV4yhqUY4SQfzZIQlPA1', 'EGU60KWNx63LMNl0IHmmejAUSCmWu4IxtStqHVCp5TkWJT7wU9nzkYaixbuAC0DXIqapISfMz14a1PWd1' // 'AYQ34DFba39JOpZMu4i9eWy6ywOQd4PrtDl08J-inDofww_kijPZ0MDnGO5G1JPjnRaKapQtZGrwiiwe2', // 'EPw-_9yEgYJBwYYH2UNsDqkOa7zZh9mfl3jZygaw5GUaUTU50Gt9D9toE4GsMnLs9NMdbkMsXRT2YEiW2' // 'ASB5bpbbpPTz8fgiL-an9xjVM3q0V0e_jprRozVgEhyJFqcY6zpn977J8LFlcXyMDJf0XrBdKzYdRTtB2', // ClientID // 'EO0b3hvD0eseJRYqzrfVspVmsaLj54pXgN3Y8aBoIRtGwGXdGc4qZBmzonOK-HUZHgBnApdx5oH8IIYB3' // ClientSecret ) ); /*sandbox 模式*/ $apiContext->setConfig(array('mode' => 'live')); $payer = new \PayPal\Api\Payer(); $payer->setPaymentMethod('paypal'); $amount = new \PayPal\Api\Amount(); $amount->setTotal('1.00'); $amount->setCurrency('USD'); $transaction = new \PayPal\Api\Transaction(); $transaction->setAmount($amount); $redirectUrls = new \PayPal\Api\RedirectUrls(); $sn=time(); $redirectUrls->setReturnUrl("https://mccj.wyzdjg.top/index/pay/Index/returnUrl/sn/".$sn) ->setCancelUrl("https://mccj.wyzdjg.top/index/pay/Index/cancelUrl/sn/".$sn); $payment = new \PayPal\Api\Payment(); $payment->setIntent('sale') ->setPayer($payer) ->setTransactions(array($transaction)) ->setRedirectUrls($redirectUrls); try { $payment->create($apiContext); echo $url=$payment->getApprovalLink(); echo "<br><a href='".$url."'>点击支付</a>\n"; } catch (\PayPal\Exception\PayPalConnectionException $ex) { echo $ex->getData(); } } public function returnUrl(){ $apiContext = new \PayPal\Rest\ApiContext( new \PayPal\Auth\OAuthTokenCredential( 'AYQ34DFba39JOpZMu4i9eWy6ywOQd4PrtDl08J-inDofww_kijPZ0MDnGO5G1JPjnRaKapQtZGrwiiwe1', 'EPw-_9yEgYJBwYYH2UNsDqkOa7zZh9mfl3jZygaw5GUaUTU50Gt9D9toE4GsMnLs9NMdbkMsXRT2YEiW1' ) ); /*sandbox 模式*/ $apiContext->setConfig(array('mode' => 'sandbox')); // Get payment object by passing paymentId $paymentId = $this->request->param('paymentId'); $payment = new \PayPal\Api\Payment(); $payment = $payment->get($paymentId, $apiContext); $payerId = $this->request->param('PayerID'); // Execute payment with payer ID $execution = new \PayPal\Api\PaymentExecution(); $execution->setPayerId($payerId); try { // Execute payment $result = $payment->execute($execution, $apiContext); if ($result && isset ( $result->state ) && $result->state == 'approved') { echo "支付成功"; }else{ echo "支付失败"; var_dump($result); } } catch (PayPal\Exception\PayPalConnectionException $ex) { echo $ex->getCode(); echo $ex->getData(); die($ex); } catch (Exception $ex) { die($ex); } } public function cancelUrl(){ echo '取消支付'; } }