PayPal 的開發者中心: https://developer.paypal.comphp
PayPal對接比較複雜,並且文檔多,接口也多,不知道要調用哪個。前端
我用的是PHP的Releases版本 , https://paypal.github.io/PayPal-PHP-SDK/,點進Releases下載就行git
下載完後,直接放到components(我用的是yii2框架)github
直接引用進來微信
require_once dirname(dirname(__FILE__)).'/components/PayPal/autoload.php';
先看前端yii2
$("#pay").click(function(){ var pay_way = $("input[type='radio']:checked").val(); if(pay_way == 1){ wap_pay(1) //支付寶 }else if(pay_way == 2){ wap_pay(2) //微信 }else if(pay_way == 3){ paypal_pay() //調用paypal } });
paypal_pay()函數app
function paypal_pay(){ var CREATE_PAYMENT_URL = "<?php echo Yii::$app->request->getHostInfo().'/'.Yii::$app->params['paypal_url'];?>"; paypal.request.post(CREATE_PAYMENT_URL,{_csrf:_csrf,ssid:ssid}).then(function(data){ window.location.href = data }) }
上面的 CREATE_PAYMENT_URL ,其實就是後臺的一個路由:
'paypal_url' => 'order/paypal',
內容以下
public function actionPaypal() { $ssid = Yii::$app->request->post("ssid"); $online_order = OnlineOrder::find()->where('order_code = :ssid',[':ssid'=>$ssid])->one(); $data = OnlineOrder::findOrderDetail($online_order); $url = Helper::PayPal($data); echo $url; }
Helper.php 的 PayPal函數框架
public static function PayPal($data) { $clientId = Yii::$app->params['clientId']; $clientSecret = Yii::$app->params['clientSecret']; $paypal = new ApiContext( new OAuthTokenCredential($clientId, $clientSecret)); //匯率 $mop = Helper::HKDrate(); //第三方匯率轉換 $money = $data['total_money'] * $mop; $product = '商品名'; $payer = new Payer(); $payer->setPaymentMethod('paypal'); $item = new Item(); $item->setName($product) ->setCurrency('HKD') ->setQuantity(1) ->setPrice($money); $itemList = new ItemList(); $itemList->setItems([$item]); $details = new Details(); $details->setShipping(0) ->setSubtotal($money); $amount = new Amount(); $amount->setCurrency('HKD') ->setTotal($money) ->setDetails($details); $transaction = new Transaction(); $transaction->setAmount($amount) ->setItemList($itemList) ->setDescription("商品描述") ->setInvoiceNumber(uniqid()); $redirectUrls = new RedirectUrls(); $redirectUrls->setReturnUrl(Yii::$app->request->getHostInfo().'/'. Yii::$app->params['pay_success_url']) ->setCancelUrl(Yii::$app->request->getHostInfo().'/'. Yii::$app->params['pay_cancel_url']); $payment = new Payment(); $payment->setIntent('sale') ->setPayer($payer) ->setRedirectUrls($redirectUrls) ->setTransactions([$transaction]); try { $payment->create($paypal); } catch (PayPalConnectionException $e) { echo $e->getData(); die(); } $approvalUrl = $payment->getApprovalLink(); return $approvalUrl; }