微信支付、支付宝支付的接口,网络上已经很多。今天遇到接入paypal的需求,特此记录。
事实上,任何php程序都可以参考

大约3年前,我在某一家做国际社交网站的公司,就做过paypal的接入,当时遇到不少坑,可惜代码没找到。
如今是要重新趟一遍了。

功能还没写完,写多少算多少。

1.引入sdk

composer require paypal/paypal-checkout-sdk

2.下单获得付款url:

namespace app\index\controller;
use PayPalCheckoutSdk\Orders\OrdersCreateRequest;
use PayPalCheckoutSdk\Core\PayPalHttpClient;

class Index{
    public function index(){
        $request = new OrdersCreateRequest();
        $request->prefer('return=representation');

        $returnUrl = 'https://s9.demo.com/pay/callback/paypal?act=success';
        $cancelUrl = 'https://s9.demo.com/pay/callback/paypal?act=cancel';
        $isSandBox = true;
        $request->body = array(
            'intent' => 'CAPTURE',
            'application_context' =>
                array(
                    'return_url' => $returnUrl,
                    'cancel_url' => $cancelUrl
                ),
            'purchase_units' =>
                array(
                    0 =>
                        array(
                            'amount' =>
                                array(
                                    'currency_code' => 'USD',
                                    'value' => '0.01'
                                )
                        )
                )
        );
        // 是否是沙盒模式
        $envSet = $isSandBox ? 'PayPalCheckoutSdk\Core\SandboxEnvironment' : 'PayPalCheckoutSdk\Core\ProductionEnvironment';

        try {
            $environment = new $envSet('clientid', 'secret');
            $client = new PayPalHttpClient($environment);
            $response = $client->execute($request);
            $url = $response->result->links[1]->href;
            return $url;
        } catch (HttpException $ex) {
            throw $ex;
            //echo $ex->statusCode;
            //print_r($ex->getMessage());
        }
    }
}

3.回调并查询订单:

待定。