paypal - 환불 - 페이팔 영수증 번호




PayPal 반환 URL을 설정하고 자동으로 반환 하시겠습니까? (4)

PayPal 계정에서 자동 반환을 활성화해야합니다. 그렇지 않으면 return 필드가 무시됩니다.

설명서에서 (새 레이아웃을 반영하여 업데이트 됨)

자동 복귀는 기본적으로 꺼져 있습니다. 자동 복귀를 켜려면 다음과 같이하십시오.

  1. https://www.paypal.com 에서 PayPal 계정에 로그인 하십시오 . 내 계정 개요 페이지가 나타납니다.
  2. 프로파일 하부 탭을 클릭하십시오. 프로필 요약 페이지가 나타납니다.
  3. 왼쪽 열의 내 판매 도구 링크를 클릭하십시오.
  4. 온라인 판매 섹션에서 웹 사이트 환경 설정 행의 업데이트 링크를 클릭하십시오. 웹 사이트 지불 환경 설정 페이지가 나타납니다.
  5. 웹 사이트 결제에 대한 자동 반품에서 자동 반품을 사용 설정하려면 사용 라디오 버튼을 클릭하십시오.
  6. 반송 URL 입력란에 결제 완료 후 리디렉션 할 URL을 입력하십시오. 참고 : PayPal은 사용자가 입력 한 반송 URL을 확인합니다. URL의 형식이 올바르지 않거나 유효성을 확인할 수없는 경우 PayPal은 자동 반품을 활성화하지 않습니다.
  7. 페이지 하단으로 스크롤하고 저장 버튼을 클릭하십시오.

IPN은 즉석 지불 통지입니다. 자동 회신에서 얻는 것보다 더 신뢰할 수 있고 유용한 정보를 제공합니다.

IPN에 대한 문서는 https://www.x.com/sites/default/files/ipnguide.pdf 있습니다.

IPN 온라인 문서 : https://developer.paypal.com/docs/classic/ipn/gs_IPN/

일반적인 절차는 요청과 함께 notify_url 매개 변수를 전달하고 IPN 알림을 처리하고 유효성을 검사하는 페이지를 설정하며 PayPal은 결제 / 환불 / 기타 정보를 요청할 때 해당 페이지로 요청을 보냅니다. 통과. 그러면 IPN 처리기 페이지가 주문을 지불 한 것으로 표시하도록 데이터베이스를 업데이트하는 올바른 위치가됩니다.

이것은 다음과 같은 질문입니다 : PHP : PayPal 결제를 시작하는 쉬운 방법?

그래서, 내 문제는 내가 반환 URL을 지정하는 것입니다. 그러나 PayPal로 결제 한 후 다음과 같은 화면이 표시됩니다.

방금 결제를 완료했습니다. XXXX 님, 방금 결제를 완료했습니다. 이 지불에 대한 거래 ID는 XXXXXXXXXXXXX입니다.

[email protected]으로 확인 이메일을 보내 드리겠습니다. 이 거래는 성명서에 PAYPAL로 표시됩니다.

Go to PayPal account overview

이 화면을 표시하지 않고 반환 URL로 직접 이동해야합니다. 나는 가지고있다:

  • "return"변수 설정
  • "rm"변수를 2로 설정하십시오 (가이드에 따르면 = " 구매자의 브라우저는 POST 메소드를 사용하여 반환 URL로 리디렉션되며 모든 지불 변수가 포함됩니다 ").

사실, 여기 내 모든 형태가 있습니다 :

<form method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr">
  <input type="hidden" value="_xclick" name="cmd">
  <input type="hidden" value="[email protected]" name="business">
  <!-- <input type="hidden" name="undefined_quantity" value="1" /> -->
  <input type="hidden" value="Order at The Greek Merchant:&lt;Br /&gt;Goldfish Flock BLG&lt;br /&gt;" name="item_name">
  <input type="hidden" value="NA" name="item_number">
  <input type="hidden" value="22.16" name="amount">
  <input type="hidden" value="5.17" name="shipping">
  <input type="hidden" value="0" name="discount_amount">        
  <input type="hidden" value="0" name="no_shipping">
  <input type="hidden" value="No comments" name="cn">
  <input type="hidden" value="USD" name="currency_code">
  <input type="hidden" value="http://XXX/XXX/XXX/paypal/return" name="return">
  <input type="hidden" value="2" name="rm">      
  <input type="hidden" value="11255XXX" name="invoice">
  <input type="hidden" value="US" name="lc">
  <input type="hidden" value="PP-BuyNowBF" name="bn">
  <input type="submit" value="Place Order!" name="finalizeOrder" id="finalizeOrder" class="submitButton">
</form>

어떤 생각을 어떻게 자동으로 되돌릴 수 있습니까? 또는 데이터베이스의 업데이트를 위해 지불 결과를 내 웹 사이트로 다시 가져 오는 방법은 무엇입니까? IPN이란 무엇입니까?


나는 Kevin에 의해 위에 기술 된 Auto Return 값을 설정하는 아이디어가 조금 이상하다고 생각한다!

예를 들어 지불을 처리 할 때 동일한 PayPal 계정을 사용하는 여러 웹 사이트가 있거나 한 웹 사이트에 여러 가지 구매 작업을 수행하는 여러 섹션이 있고 지불시 서로 다른 반송 주소가 필요하다고 가정 해 보겠습니다. 완성 됐습니다. 위에 설명한대로 '직접 지불을위한 PHP를 사용하는 샘플 양식'섹션에서 버튼을 클릭하면 거기에 한 줄이 있음을 알 수 있습니다.

input type="hidden" name="return" value="https://www.yoursite.com/checkout_complete.php"

여기서 개별 반환 값을 설정합니다. 프로파일 섹션에서 일반적으로 설정해야하는 이유는 무엇입니까?!?!

또한 프로필 섹션에서 하나의 값만 설정할 수 있기 때문에 여러 작업이있는 사이트에서 자동 반품을 사용할 수 없다는 것을 의미합니다 (AFAIK).

코멘트 제발?


직접 지불을 위해 PHP를 사용하는 샘플 양식.

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_cart">
    <input type="hidden" name="upload" value="1">
    <input type="hidden" name="business" value="[email protected]">

    <input type="hidden" name="item_name_' . $x . '" value="' . $product_name . '">
    <input type="hidden" name="amount_' . $x . '" value="' . $price . '">
    <input type="hidden" name="quantity_' . $x . '" value="' . $each_item['quantity'] . '"> 
    <input type="hidden" name="custom" value="' . $product_id_array . '">
    <input type="hidden" name="notify_url" value="https://www.yoursite.com/my_ipn.php">
    <input type="hidden" name="return" value="https://www.yoursite.com/checkout_complete.php">
    <input type="hidden" name="rm" value="2">
    <input type="hidden" name="cbt" value="Return to The Store">
    <input type="hidden" name="cancel_return" value="https://www.yoursite.com/paypal_cancel.php">
    <input type="hidden" name="lc" value="US">
    <input type="hidden" name="currency_code" value="USD">
    <input type="image" src="http://www.paypal.com/en_US/i/btn/x-click-but01.gif" name="submit" alt="Make payments with PayPal - its fast, free and secure!">
</form>

친절하게 필드를 통과하십시오 notify_url, return, cancel_return

지불이 완료된 후 paypal에서 요청한 ipn (my_ipn.php)을 처리하기위한 샘플 코드.

IPN 생성에 대한 자세한 내용은 this 링크를 참조하십시오.

<?php
// Check to see there are posted variables coming into the script
if ($_SERVER['REQUEST_METHOD'] != "POST")
    die("No Post Variables");
// Initialize the $req variable and add CMD key value pair
$req = 'cmd=_notify-validate';
// Read the post from PayPal
foreach ($_POST as $key => $value) {
    $value = urlencode(stripslashes($value));
    $req .= "&$key=$value";
}
// Now Post all of that back to PayPal's server using curl, and validate everything with PayPal
// We will use CURL instead of PHP for this for a more universally operable script (fsockopen has issues on some environments)
//$url = "https://www.sandbox.paypal.com/cgi-bin/webscr";
$url = "https://www.paypal.com/cgi-bin/webscr";
$curl_result = $curl_err = '';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded", "Content-Length: " . strlen($req)));
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$curl_result = @curl_exec($ch);
$curl_err = curl_error($ch);
curl_close($ch);

$req = str_replace("&", "\n", $req);  // Make it a nice list in case we want to email it to ourselves for reporting
// Check that the result verifies
if (strpos($curl_result, "VERIFIED") !== false) {
    $req .= "\n\nPaypal Verified OK";
} else {
    $req .= "\n\nData NOT verified from Paypal!";
    mail("[email protected]", "IPN interaction not verified", "$req", "From: [email protected]");
    exit();
}

/* CHECK THESE 4 THINGS BEFORE PROCESSING THE TRANSACTION, HANDLE THEM AS YOU WISH
  1. Make sure that business email returned is your business email
  2. Make sure that the transaction�s payment status is �completed�
  3. Make sure there are no duplicate txn_id
  4. Make sure the payment amount matches what you charge for items. (Defeat Price-Jacking) */

// Check Number 1 ------------------------------------------------------------------------------------------------------------
$receiver_email = $_POST['receiver_email'];
if ($receiver_email != "[email protected]") {
//handle the wrong business url
    exit(); // exit script
}
// Check number 2 ------------------------------------------------------------------------------------------------------------
if ($_POST['payment_status'] != "Completed") {
    // Handle how you think you should if a payment is not complete yet, a few scenarios can cause a transaction to be incomplete
}

// Check number 3 ------------------------------------------------------------------------------------------------------------
$this_txn = $_POST['txn_id'];
//check for duplicate txn_ids in the database
// Check number 4 ------------------------------------------------------------------------------------------------------------
$product_id_string = $_POST['custom'];
$product_id_string = rtrim($product_id_string, ","); // remove last comma
// Explode the string, make it an array, then query all the prices out, add them up, and make sure they match the payment_gross amount
// END ALL SECURITY CHECKS NOW IN THE DATABASE IT GOES ------------------------------------
////////////////////////////////////////////////////
// Homework - Examples of assigning local variables from the POST variables
$txn_id = $_POST['txn_id'];
$payer_email = $_POST['payer_email'];
$custom = $_POST['custom'];
// Place the transaction into the database
// Mail yourself the details
mail("[email protected]", "NORMAL IPN RESULT YAY MONEY!", $req, "From: [email protected]");
?>

아래 이미지는 페이팔 프로세스를 이해하는 데 도움이됩니다.

자세한 내용은 다음 링크를 참조하십시오.

희망이 당신을 .. .. :)


체크 아웃 페이지에서 'cancel_return'숨김 양식 요소를 찾습니다.

cancel_return 양식 요소의 값을 반환하려는 URL로 설정하십시오.