paypal國際支付的對接,使用tp5開發paypal
阿新 • • 發佈:2019-02-19
<?php
/**
* Created by PhpStorm.
* User: faker1
* Date: 2018/5/19
* Time: 下午4:34
*/
namespace app\api\controller;
use PayPal\Rest\ApiContext;
use PayPal\Auth\OAuthTokenCredential;
//use PayPal\Api\Amount;
//use PayPal\Api\Details;
//use PayPal\Api\Item;
//use PayPal\Api\ItemList;
//use PayPal\Api\Payer;
//use PayPal\Api\Payment;
//use PayPal\Api\RedirectUrls;
//use PayPal\Api\Transaction;
//use Psr\Log\AbstractLogger;
use PayPal\Api\Amount;
use PayPal\Api\Details;
use PayPal\Api\Item;
use PayPal\Api\ItemList;
use PayPal\Api\Payer;
use PayPal\Api\Payment;
use PayPal\Api\RedirectUrls;
use PayPal\Api\Transaction;
use PayPal\Api\ShippingAddress ;
class Paypal
{
public function pay_goods()
{
require "../extend/PayPal-PHP/autoload.php"; //載入sdk的自動載入檔案
$clientId = 'AQQ-TNT3ISxFoGSB0-E7nETfMCqt8I9jpoDvuDKQv0b33n9Ir6IJ4l3gJm3pkT8G7YcyRzPBS3EaG0eg';
$clientSecret = 'EM5woX_Ic5GD7kdFynlMoboQtQcFNqCNqDU1ESz27H9qveZQ02x1ozFwxhnu8mGEL1ivhFAvuVzCbqvg' ;
$apiContext = new ApiContext(
new OAuthTokenCredential(
$clientId,
$clientSecret
)
);
$apiContext->setConfig(
array(
'mode' => 'sandbox',
'log.LogEnabled' => true,
'log.FileName' => '../PayPal.log',
'log.LogLevel' => 'DEBUG', // PLEASE USE `INFO` LEVEL FOR LOGGING IN LIVE ENVIRONMENTS
'cache.enabled' => true,
)
);
$payer = new Payer();
$payer->setPaymentMethod("paypal");
$item1 = new Item();
$item1->setName('test pro 1')
->setCurrency('USD')
->setQuantity(1)
->setSku("testpro1_01")// Similar to `item_number` in Classic API
->setPrice(20);
$item2 = new Item();
$item2->setName('test pro 2')
->setCurrency('USD')
->setQuantity(5)
->setSku("testpro2_01")// Similar to `item_number` in Classic API
->setPrice(10);
$itemList = new ItemList();
$itemList->setItems(array($item1, $item2));
$address = new ShippingAddress();
$address->setRecipientName('什麼名字')
->setLine1('什麼街什麼路什麼小區')
->setLine2('什麼單元什麼號')
->setCity('城市名')
->setState('浙江省')
->setPhone('12345678911')
->setPostalCode('12345')
->setCountryCode('CN');
$itemList->setShippingAddress($address);
$details = new Details();
$details->setShipping(5)
->setTax(10)
->setSubtotal(70);
$amount = new Amount();
$amount->setCurrency("USD")
->setTotal(85)
->setDetails($details);
$transaction = new Transaction();
$transaction->setAmount($amount)
->setItemList($itemList)
->setDescription("Payment description")
->setInvoiceNumber(uniqid());
$baseUrl = 'http://'.$_SERVER["HTTP_HOST"];
$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl("$baseUrl/api/Paypal/success")
->setCancelUrl("$baseUrl/api/Paypal/cancel");
$payment = new Payment();
$payment->setIntent("sale")
->setPayer($payer)
->setRedirectUrls($redirectUrls)
->setTransactions(array($transaction));
$payment->create($apiContext);
$approvalUrl = $payment->getApprovalLink();
dump($approvalUrl);
}
public function success()
{
echo 'success';
}
public function cancel()
{
echo 'cancel';
}
}