PayPal Plus -Webhook-要在数据库中更改付款状态



如果我的OpenCart商店中的客户与Paypal付款,我需要一个Webhook来控制付款更改,例如待定,退款等。

因此,如果客户使用PayPal付款,则下面的方法是从paypal加上Webhook URL的:

public function webhook(){
    $token = $this->getToken();
    $mode = ".sandbox";
    $ch = curl_init();
    $header = array('Content-Type: application/json', 'Authorization:Bearer'.$token);
    curl_setopt($ch,  CURLOPT_HTTHEADER, $headers);
    curl_setopt($ch, CURLOPT_URL, "https://api".$mode."paypal.com/v1/notification/webhooks/");
    curl_setopt($ch,  CURLOPT_HEADER, false);
    curl_setopt($ch,  CURLOPT_SSL_VERYFYPEER, false);
    curl_setopt($ch,  CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch,  CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    $json = json_decode($result);
}

目前我需要的是当前的transaction_id和新的付款状态以更新数据库中的值。

有人可以告诉我如何在方法" webhook"中获取这些参数?

编辑:

结果是:

json stdClass Object
(
    [webhooks] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 5EB94006KU40xxxxx
                    [url] => https://shopexample.de/index.php?route=payment/pp_plus/webhook
                    [event_types] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [name] => *
                                    [description] => ALL
                                    [status] => ENABLED
                                )
                        )
                    [links] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [href] => https://api.sandbox.paypal.com/v1/notifications/webhooks/5EB94006KU40xxxxx
                                    [rel] => self
                                    [method] => GET
                                )
                            [1] => stdClass Object
                                (
                                    [href] => https://api.sandbox.paypal.com/v1/notifications/webhooks/5EB94006KU40xxxxx
                                    [rel] => update
                                    [method] => PATCH
                                )
                            [2] => stdClass Object
                                (
                                    [href] => https://api.sandbox.paypal.com/v1/notifications/webhooks/5EB94006KU40xxxxx
                                    [rel] => delete
                                    [method] => DELETE
                                )
                        )
                )
        )
)

获取所需的数据很容易。您正在调用PP,而JSON_ENCODED变量($ JSON)是结果。

现在您可以访问这些值,例如:

$webhooks[0]->id

但是要获取所需的数据(在此处TransAction_ID和新状态),您使用错误的呼叫。

payment/payments/PAYMENT_ID

是您需要的服务。

不要打电话!等待通话和流程。

public function webhook() {
    $body = file_get_contents('php: //input');
    $data = json_decode($body, true);
    //Validate and verify webhook here.
    if ($data['event_type'] == 'PAYMENT.AUTHORIZATION.CREATED') {
        //Payment authorization created.
    } else if ($data['event_type'] == 'PAYMENT.AUTHORIZATION.VOIDED') {
        //Payment authorization voided.
    } else if ($data['event_type'] == 'PAYMENT.CAPTURE.COMPLETED') {
        //Payment capture completed.
    } else if ($data['event_type'] == 'PAYMENT.CAPTURE.DENIED') {
        //Payment capture denied.
    } else if ($data['event_type'] == 'PAYMENT.CAPTURE.PENDING') {
        //Payment capture pending.
    } else if ($data['event_type'] == 'PAYMENT.CAPTURE.REFUNDED') {
        //Payment capture refunded.
    } else if ($data['event_type'] == 'PAYMENT.CAPTURE.REVERSED') {
        //Payment capture reversed.
    } else {
        //Handle other webhooks
    }
}

相关内容

  • 没有找到相关文章

最新更新