2016-05-11 5 views
1

Я пытаюсь проверить, что клиент находится выше 20-го уровня.Klarna Оформить заказ KCO validate

Они имеют встроенную функцию для проверки, смотрите здесь https://developers.klarna.com/en/se/kco-v2/checkout/use-cases#validate-checkout-order

страница checkout.php выглядит следующим образом

Accept: application/vnd.klarna.checkout.aggregated-order-v2+json 
Authorization: Klarna pwhcueUff0MmwLShJiBE9JHA== 
Content-Type: application/vnd.klarna.checkout.aggregated-order-v2+json 

{ 
    "purchase_country": "se", 
    "purchase_currency": "sek", 
    "locale": "sv-se", 
    "cart": { 
     "items": [ 
      { 
       "reference": "123456789", 
       "name": "Klarna t-shirt", 
       "quantity": 2, 
       "unit_price": 12300, 
       "discount": 1000, 
       "tax_rate": 2500 
      }, 
      { 
       "type": "shipping_fee", 
       "reference": "SHIPPING", 
       "name": "Shipping fee", 
       "quantity": 1, 
       "unit_price": 4900, 
       "tax_rate": 2500 
      } 
     ] 
    }, 
     "merchant": { 
     "id": "0", 
     "terms_uri": "http://example.com/terms.php", 
     "checkout_uri": "https://example.com/checkout.php", 
     "confirmation_uri": "https://example.com/thankyou.php?sid=123&klarna_order={checkout.order.uri}", 
     "push_uri": "https://example.com/push.php?sid=123&klarna_order={checkout.order.uri}", 
     "validation_uri": "https://example.com/klarna_validation.php" 
    } 
} 

Когда cliks клиент «купить сейчас» сценарий klarna_validation.php запускает и отправляет возврат в Кларну с HTTP-статусом 202 OK или 303 СМ. ДРУГОЙ.

Ниже мой klarna_validation.php

<?php 
    $pno = $_POST['customer']['date_of_birth']; 
    $birthdate = new DateTime("$pno"); 
    $today  = new DateTime(); 
    $interval = $today->diff($birthdate); 
    $interval2 = $interval->format('%y'); 
    if($interval2 <= "20"){ 
    header("Location: https://example.com/too_young.php?$pno", true, 303); 
    exit; 
    } else { 
    http_response_code(200); 
    } 
?> 

Согласно Klarna: запрос POST будет отправлен в merchant.validation_uri. Тело запроса будет содержать текущую информацию о заказе. Структура информации о заказе идентична результату получения заказа, как вы видели при визуализации.

Дело в том, что я не получаю данные с $ _POST [ 'клиент'] [ 'date_of_birth']; пусто.

Чтобы подтвердить это, $ _POST ['customer'] ['date_of_birth']; пуст, я включил его в URL-адрес страницы too_young.php, например this (too_young.php? $ Pno). При посадке на too_young.php $ pno пуст! (URL-адреса выглядят следующим образом: too_young.php?)

Есть ли у кого-нибудь представление о том, что я делаю неправильно?

ответ

1

Наконец-то мы получили его на работу!

Мы просто добавить этот код в файл валидации:
$ post_data = json_decode (file_get_contents ('PHP: // ввод'), правда);

Как это:

<?php 

$post_data = json_decode(file_get_contents('php://input'), true); 

$pno = $post_data['customer']['date_of_birth']; 
$birthdate = new DateTime("$pno"); 
$today  = new DateTime(); 
$interval = $today->diff($birthdate); 
$interval2 = $interval->format('%y'); 
if($interval2 < "60"){ 
header("Location: https://example.com/too_young.php?$pno&$interval2", true, 303); 
exit; 
} else { 
http_response_code(200); 
} 
?> 
+0

Может у разделять полный код интеграции bcoz Я пытаюсь интегрировать ти, но я не в состоянии сделать это. –

Смежные вопросы