1.開発前の準備
https://developer.paypal.com/ Paypalの公式開発者Webサイトにアクセスして、開発者アカウントを登録します。
アカウントでログインした後、ナビゲーションで「ダッシュボード」をクリックしてダッシュボードに入ります。以下のスクリーンショットに示すように、後続の操作はこのパネルで実行されます。
上のスクリーンショットのメニューの「サンドボックス」の下にある「アカウント」で、サンドボックステストの購入者アカウントと販売者アカウントを確認できます。どちらのテスト アカウントにも、仮想アカウントのパスワードを設定するためのchangepasswordを含むプロファイル オプションがあります。
上のスクリーンショットのメニュー「サンドボックス」の下にあるトランザクションがトランザクション記録です。
スクリーンショットページの右上隅にある「アプリの作成」ボタンをクリックします。アプリケーションを作成します。作成後、クライアント ID とシークレットが提供されます。これら 2 つは PHP 定数として構成でき、後の開発で使用されます。
2. 決済デモの開発に入る
開発コードのルート ディレクトリをローカルに作成します。まず、index.html を作成し、製品名と製品価格の 2 つの簡単な入力項目を配置します。 コードとスクリーンショットは次のとおりです。 リーリー
商品名と価格を入力してください。 「支払う」をクリックすると、PayPal の支払いページに移動します。サンドボックス テスト購入者アカウントを使用して支払います。支払いが成功したことがわかります。次に、テスト販売者アカウントにログインします。販売者のアカウントに支払いが入金されたことがわかります。もちろん、Paypalの手数料はここで差し引かれます。手数料は出品者が負担します。
PHP がどのように実装されているかを詳しく見てみましょう。まず、paypal から提供された php-sdk をコード ディレクトリに取得する必要があります。ここでは、PHP のパッケージマネージャー Composer を使用して最新の SDK を入手する方法を紹介します。 もちろん、github などの他のチャネルからも最新の Paypal PHP-SDK を入手できます。
Composer はデフォルトでコンピューターにすでにインストールされています。お持ちでない場合は、Du Niang または Google にアクセスして、composer とともにインストールしてください。
次に、コードルートディレクトリにcomposer.jsonファイルを書き込み、パッケージコンテンツを取得します。 json ファイルのコードは次のとおりです:
{
"require" : { "paypal/rest-api-sdk-php" : "1.5.1"
}
}
インストール後。ルートディレクトリの下にベンダーディレクトリが生成されます。サブディレクトリには、composer と paypal の 2 つがあります。 Composer は自動読み込みを実装しており、Paypal は SDK コンテンツです。
次に、パブリック ファイルを作成しましょう (app/start.php がデフォルトで使用されますが、プロジェクト内でカスタマイズできます)。実際には、クライアント ID とシークレットを自動的にロードして作成するために SDK の autoload.php を実装するだけです。前述のように、生成された PayPal 支払いオブジェクトのインスタンス。 start.php コードは次のとおりです:
php
require "vendor/autoload.php"; // SDKの自動ロードファイルをロード define('SITE_URL', 'http://www.paydemo.com');ウェブサイト URL 自己定義 // 支払いオブジェクト インスタンスを作成します $paypal = new PayPalRestApiContext( new PayPalAuthOAuthTokenCredential( 'あなたのクライアント ID' 'あなたのシークレット')
)
); /**
次に、pay.php がコールバックを簡単に処理する方法を見てみましょう。まず pay.php コードを貼り付けます: php 必須 'app/start.php';
次のステップは、フォームで送信された checkout.php 処理ファイルを実装することです。コードの内容は次のとおりです:
php
* @作者xxxxxxxx
* @brief 简介:
* @日付 15/9/2
* @time 午後5時00分
*/
使用 PayPalApiPayer;
使用 PayPalApiItem;
使用 PayPalApiItemList;
使用 PayPalApiの詳細;
使用 PayPalApiAmount;
使用 PayPalApiTransaction;
使用 PayPalApiRedirectUrls;
使用 PayPalApiPayment;
使用 PayPalExceptionPayPalConnectionException;
必須 "app/start.php"; if (!isset($_POST['product'], $_POST['price'])) { die("パラメータを失う"); }$product = $_POST['product']; $price = $_POST['価格']; 送料 = 2.00; //运费 $total = $価格 + $送料; $payer = new Payer(); $payer->setPaymentMethod('paypal'); $item = 新しいアイテム(); $item->setName($product) ->setCurrency('USD') ->set数量(1) ->setPrice($price); $itemList = new itemList(); $itemList->setItems([$item]); $details = new 詳細(); $詳細->set Shipping($送料) ->setSubtotal($価格); $amount = new Amount(); $金額->setCurrency('USD') ->setTotal($合計) ->setDetails($詳細); $transaction = new Transaction(); $transaction->setAmount($amount) ->setItemList($itemList) ->setDescription("支付説明内容") ->setInvoiceNumber(uniqid) ()); $redirectUrls= new RedirectUrls(); $redirectUrls->setReturnUrl(SITE_URL . '/pay.php?success=true') ->setCancelUrl(SITE_URL . '/pay.php?success=false) '); $payment = new Payment(); $payment->setIntent('sale') ->setPayer($payer) ->setRedirectUrls ($redirectUrls) ->setTransactions([$transaction]); try { $payment) } キャッチ (PayPalConnectionException $e) { echo $e->getData(); $approvalUrl = $payment- &g t;getApprovalLink ( ); ヘッダー("場所: {$approvalUrl}");
checkout.php は、フォームを通じて送信されたパラメーターを通じて、特定の支払いの詳細とパラメーターを初期化し、設定します。ここでは一般的に使用される部品のみをリストします。 PayPal には多くのパラメータ設定が用意されています。詳細については、Paypal の公式開発者ドキュメントを参照してください。
checkout.phpでパラメータを設定した後。支払いリンクが生成されます。ヘッダーを使用して支払いリンク (Paypal の支払いページ) に移動すると、サンドボックスによって提供される購入者アカウントを使用して支払いを行うことができます。スクリーンショットは次のとおりです:
使用 PayPalApiPayment;
使用 PayPalApiPaymentExecution;
if(!isset($_GET['success'], $_GET['paymentId'], $_GET['PayerID'])){
死ね();
}
if((bool)$_GET['success']=== 'false'){
エコー「取引はキャンセルされました!」;
死ね();
}
$paymentID = $_GET['paymentId'];
$payerId = $_GET['PayerID'];
$payment = 支払い::get($paymentID, $paypal);
$execute = new PaymentExecution();
$execute->setPayerId($payerId);
試してみる{
$result = $payment->execute($execute, $paypal);
}キャッチ(例外 $e){
死ね($e);
}
echo「支付成功!感谢応援!」;