2016-06-22 4 views
1

저는 페이팔 NVP와 REST API를 결정하는 데 어려움을 겪고 있습니다.거래 후 고객 정보 얻기

REST API는 더 새롭고 더 나은 것 같지만 거래가 발생한 후에 고객 정보를 얻을 수있는 방법을 찾을 수 없습니다.

기본적으로 정기적 인 결제에 대한 요금제를 설정 한 다음 API를 통해 고객 정보를 얻으 려하므로 웹 사이트를 통해 입력하지 않아도됩니다.

Paypal Express 결제는 여기에서 사용해야하는 것으로 보입니다.

NVP API는 이러한 세부 사항을 얻기 위해 GetExpressCheckoutDetails 메소드를 제공합니다.

REST API와 비슷한 것을 찾지 못했습니다.

REST API는 익스프레스 체크 아웃을 통과 한 것으로 보이므로 해결책이 있어야합니다.

결제 계약을 활성화 한 후에 고객 정보를 얻으려면 어떻게해야합니까?

답변

0

한달 전이 동일한 문제가 발생하여 문서를 읽은 후 현재 REST API로이를 수행 할 수있는 방법이 없습니다. 방법이 있으면 문서화되지 않았습니다.

이 작업을 수행하는 유일한 방법은 NVP API 및 가능한 SOAP API입니다. NVP API는 당신이 원하는 대부분의 필드를 되돌려 줄 것입니다. 그러나 트랜잭션을위한 커스텀 필드를 저장했다면 커스텀 필드 중 3 개만 제공 할 것이지만 전부는 아닙니다.

NVP 방법 GetExpressCheckoutDetails을 시도하지는 않았지만 GetTransactionDetails 메서드를 사용했습니다. 거래 내역을 돌려 줄 것입니다. 구문 분석해야하는 텍스트 블록을 반환합니다. 각 필드는 URL로 인코딩되고 앰퍼샌드로 구분됩니다. 다음은 PHP의 예는 다음과 같습니다

<?php 

// Get cURL resource 
$ch = curl_init(); 

// Set url 
curl_setopt($ch, CURLOPT_URL, 'https://api-3t.paypal.com/nvp/'); 

// Set method 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 

// Set options 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// Set headers 
curl_setopt($ch, CURLOPT_HTTPHEADER, [ 
    "Content-Type: application/x-www-form-urlencoded; charset=utf-8", 
    ] 
); 
// Create body 
$body = [ 
    "VERSION" => "204.0", 
    "METHOD" => "GetTransactionDetails", 
    "USER" => "nvp_api_username_here", 
    "PWD" => "nvp_api_password_here", 
    "SIGNATURE" => "nvp_api_signature_here", 
    "TRANSACTIONID" => "some_paypal_transaction_id_here", 
]; 
$body = http_build_query($body); 

// Set body 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $body); 

// Send the request and save response to $resp 
$resp = curl_exec($ch); 

if(!$resp) { 
    die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch)); 
} else { 
    parse_str($resp, $formated_response); 
    print_r($formated_response); 
} 

// Close request to clear up some resources 
curl_close($ch); 

다음은 형식의 반환의 몸 :

Array 
(
    [RECEIVERBUSINESS] => [email protected] 
    [RECEIVEREMAIL] => [email protected] 
    [RECEIVERID] => 1111111111111 
    [EMAIL] => [email protected] 
    [PAYERID] => 55551 
    [PAYERSTATUS] => verified 
    [COUNTRYCODE] => US 
    [BUSINESS] => buyers_business_name_here 
    [ADDRESSOWNER] => PayPal 
    [ADDRESSSTATUS] => None 
    [SALESTAX] => 0.00 
    [SHIPAMOUNT] => 0.00 
    [SHIPHANDLEAMOUNT] => 0.00 
    [SHIPDISCOUNT] => 0.00 
    [INSURANCEAMOUNT] => 0.00 
    [GIFTRECEIPT] => 0 
    [TIMESTAMP] => 2016-08-02T17:04:58Z 
    [CORRELATIONID] => 55552 
    [ACK] => Success 
    [VERSION] => 204.0 
    [BUILD] => 22386173 
    [FIRSTNAME] => Foo 
    [LASTNAME] => Bar 
    [TRANSACTIONID] => 55553 
    [TRANSACTIONTYPE] => webaccept 
    [PAYMENTTYPE] => instant 
    [ORDERTIME] => 2016-08-01T20:49:28Z 
    [AMT] => 1.00 
    [TAXAMT] => 0.00 
    [CURRENCYCODE] => USD 
    [PAYMENTSTATUS] => Completed 
    [PENDINGREASON] => None 
    [REASONCODE] => None 
    [SHIPPINGMETHOD] => Default 
    [PROTECTIONELIGIBILITY] => Ineligible 
    [PROTECTIONELIGIBILITYTYPE] => None 
    [L_QTY0] => 0 
    [L_TAXAMT0] => 0.00 
    [L_SHIPPINGAMT0] => 0.00 
    [L_HANDLINGAMT0] => 0.00 
    [L_CURRENCYCODE0] => USD 
    [L_OPTIONSNAME0] => first_custom_field_label_here 
    [L_OPTIONSVALUE0] => first_custom_field_value_here 
    [L_OPTIONSNAME1] => second_custom_field_label_here 
    [L_OPTIONSVALUE1] => second_custom_field_value_here 
    [L_OPTIONS1NAME0] => second_custom_field_label_here_duplicate 
    [L_OPTIONS1VALUE0] => second_custom_field_value_here_duplicate 
    [L_TAXABLE0] => false 
    [L_TAXRATE0] => 0.0 
    [L_AMT0] => 1.00 
    [INSURANCEOPTIONSELECTED] => 0 
    [SHIPPINGOPTIONISDEFAULT] => 0 
) 

경고 : 페이팔 트랜잭션에서 사용자 정의 필드를 저장하는 경우

이것은에만 적용됩니다.

트랜잭션에 최대 7 개의 사용자 정의 필드를 저장할 수있는 경우에도 PayPal의 NVP API는 트랜잭션에 대해 최대 3 개의 사용자 정의 필드 만 반환합니다. 심지어 더 미친, 사용자 지정 필드 중 하나는 두 번째 사용자 지정 필드의 중복입니다. 적어도 그것은 트랜잭션에서 사용자 정의 필드를 검색하려고 할 때의 경우입니다.

+1

일부 연구 후에 REST API가 이전 API와 다른 것으로 나타났습니다. 실제로 결제하기 전에 API를 통해 맞춤 링크를 생성하고 해당 링크로 사용자를 리디렉션해야합니다. 사용자가 구매를 확인하면 해당 API를 통해 수동으로 결제를 실행해야합니다. 그렇지 않으면 https://developer.paypal.com/docs/api/payments/#payment_execute를 통해 금액이 전송되지 않으며이 응답에도 고객 정보가 포함됩니다. – maddo7

+0

예. 유용합니다. 따라서 실제로 고객의 PayPal 결제를 처리해야합니까? 트랜잭션 ID 번호를 기반으로 트랜잭션 정보를 검색하는 방법이 있었으면 좋겠습니다. –