IT박스

Paypal IPN은 항상 샌드 박스에서 "payment_status : Pending"을 반환합니까?

itboxs 2020. 12. 24. 23:28
반응형

Paypal IPN은 항상 샌드 박스에서 "payment_status : Pending"을 반환합니까?


내 웹 사이트에서 PayPal을 구현하려고합니다.

이 클래스를 사용합니다 : http://www.micahcarrick.com/php-paypal-ipn-integration-class.html

지금은 PayPal 샌드 박스를 사용하여 테스트하고 있습니다.

문제는 다음과 같습니다.

  1. 사용자가 결제-확인
  2. 사용자가 내 웹 사이트로 성공적으로 돌아 왔습니다.-확인
  3. 몇 초 후 PayPal이 IPN을 사용하여 내 웹 사이트를 호출합니다.-확인
  4. 내 수업은 들어오는 IPN 데이터를 성공적으로 확인합니다.
  5. PayPal에서 'payment_status : Pending'반환

PayPal IPN이 결제 상태가 "보류 중"으로 전화를 거는 이유를 모르겠습니다.

내가 뭘 잘못하고 있는지 아는 사람이 있습니까?


테스트 비즈니스 계정에 로그인하면 수동으로 다음으로 이동합니다.

https://www.sandbox.paypal.com/businessmanage/preferences/payments

일반적으로 "마이 비즈니스 설정"을 통해 거기에 도달 할 수 있지만 현재는 페이팔 라이브로 리디렉션됩니다 (샌드 박스에 있음에도 불구하고).

해당 페이지에서 "내가 보유하지 않은 통화로 나에게 전송 된 지불 차단"을 "아니요, 수락하고 ...로 변환"으로 변경하십시오.

또한 PayPal Sandbox 프런트 엔드 및 API의 "테스트 이메일"섹션을 사용하여 비즈니스 계정을 확인하는 것을 잊지 마십시오.


내 문제는 내 샌드 박스 판매자 계정이 영국 사용자 (및 통화로 GBP)로 만들어 졌다는 것입니다. DKK (Danish Kroner)로 주문을 진행하려고하면 판매자보기에서 구매가 "Unclaimed"라고 표시됩니다. DKK에서 하나의 주문이 수락되고 DKK로 새 통화를 만들기로 선택하자마자 IPN은 모든 "payment_status = completed"메시지를 보냈습니다.


이 문제를 약간 처리하고 PayPal이 UI를 변경 한 후,

PayPal 판매자 기술 지원 의 정확한 지침은 다음과 같습니다 .

판매자 기술 지원에 문의 해 주셔서 감사합니다.

아래 지침에 따라 Sandbox 계정의 지불 검토 기능을 끄십시오.

  • PayPal 개발자 웹 사이트로 이동
  • 개발자 계정에 로그인하십시오.
  • 응용 프로그램을 클릭하십시오.
  • Sandbox 계정을 클릭하십시오.
  • 지불 검토 옵션을 해제하려는 이메일 주소를 클릭하고 확장 된 후 프로필을 클릭합니다.
  • 설정 클릭
  • 그리고 지불 검토를 위해 끄기를 선택하십시오.
  • 닫기 클릭

!!! PayPal SandBox 판매자 계정에서이 작업을 수행하고 있는지 확인하십시오 !

& 그것이 어떻게 생겼는지 :

여기에 이미지 설명 입력


다음 지침에 따라 해결할 수 있습니다.

  1. Login to your Developer Central.

  2. Click on Test Accounts tab on the left. You should have created these test accounts for testing on Sandbox.

  3. Find the column ‘Payment Review’.

  4. Find the sandbox account you are using and click on “Enabled” in the ‘Payment Review’ column.

  5. This should change to “Disabled” and now payments funded from your balance and credit card will complete instantly.


Two possible reasons:

1. seller account has option to accept or decline payment

In this case you need to login as seller and accept payment and you will get another IPN with payment_status=Completed

Steps:

  1. login to your developer central
  2. press "test accounts" on the left
  3. select seller account and press "Enter sandbox test site" on the bottom
  4. You should see seller dashboard with option to accept or decline any payment (you might need to relogin at this step using seller test account credentials)

2. Payment review is enabled

Solution:

  1. Login to your Developer Central.
  2. Click on Test Accounts tab on the left. You should have created these test accounts for testing on Sandbox.
  3. Find the column ‘Payment Review’.
  4. Find the sandbox account you are using and click on “Enabled” in the ‘Payment Review’ column.

This should change to “Disabled” and now payments funded from your balance and credit card will complete instantly.


  1. I did change Allow payments sent to me in a currency I do not hold to Yes in all user accounts in the sandbox but it was still not working.

  2. I also tried to create the same currencies in the paypal form, and for the sandbox user accounts here Making the new currency primary. Converting money to the new currency. Still no success.

  3. Then I noticed the last sentence of Wes Hanney's answer: "confirm your business account using the PayPal Sandbox front-end". Trying this did not work either.

  4. M.G.Palmer's suggested in his answer to create a German merchant account. Did not work either.


What a hassle!

After one hour, where I was close to throw the PC out of the window, I just realized that I forgot one thing. Changing my real recipient email address in the paypal form to the sandbox merchant email address. That solved it finally for me.


PS: Maybe a stupid beginner's mistake? But might be helpful for others who run into the same situation.


I had the same problem, and none of the suggestion here worked. Then I realized the problem was that I was trying to make a payment from a sandbox account to a live account. So for example if your registered business account is: email@example.com then all the sandbox payments should be made to email-facilitator@example.com otherwise they will end up in PENDING mode.


Similar problem here - my (sandbox) merchant account was created as in the US, and I was trying to do EUR payments.

For me, it didn't matter which settings I changed, it only worked after creating a new merchant account based in Germany.


No solutions above worked for me, but helped me to find the solution.

If you are using de default business and buyer account, maybe this solution will work for you.

  1. Go to developer.paypal > sandbox.accounts
    https://developer.paypal.com/developer/accounts/

  2. Login and click on clone icon in your sandobx business account and your buyer account

  3. Set new names and emails and click create new account

  4. Open the profile of both accounts and make sure Payment Review is OFF

  5. Edit your target account in your code/app and place the new business account

  6. Repeat transaction using the new buyer account


This solution not just resolved my problem. Thanks to it the sandox.paypal design changed to the new design that uses real accounts.

This is important because some of data received by IPN in this case, may respond at different name.


By default, your PayPal business account is limited to a few accepted currencies that are chosen based on your regional settings. Payments made with non-accepted currencies will stay in pending/open status. To support/accept those currencies, you need to add them to the list of "accepted currencies" on PayPal. To do so, follow these steps:

  1. Login in to PayPal with your Paypal business account
  2. Go to "Profile" > "Profile and Settings" > “My Money” > “Currencies”
  3. Add the currencies you want to support.

Remark: When using the sandbox accounts when testing, you need to perform this also for your facilitator sandbox account after login on this account using URL: https://www.sandbox.paypal.com/


The solution is what @Jadeye explains:

Go to PayPal Developer Website

  1. Log in to your developer account (sandbox)
  2. Click Applications
  3. Click Sandbox accounts
  4. Click on to the email address that you would like to turn off the Payment Review option and click Profile after it expand
  5. Click Settings
  6. And select Off for the Payment review.
  7. Click Close

There is one more thing you may need to check:

Make shore that the language encoding of your PayPal account is set to UTF-8. Under some circumstances this is set to something like ‘windows-1256’ by default. To change it to UTF-8 you need to:

  • go into your profile then “my selling tools”
  • 거기, 하단에서 "PayPal 버튼 언어 인코딩"을 클릭하십시오
  • 다음 페이지에서 마지막으로 인코딩을 설정할 수있는 "추가 옵션"을 클릭해야합니다.

제가 독일에서 설정 한 모든 Paypal 계정은 기본적으로 언어 인코딩 "windows ..."로 설정되어 있습니다. 그러면 IPN은 Woocommerce, EDD 또는 이벤트 에스프레소에서도 UTF-8로 인코딩 된 웹 사이트에서 작동하지 않습니다.


모든 샌드 박스 계정을 삭제하고 다시 생성하여 내 문제를 해결했습니다.

중요 사항 :

계정에서 코드와 동일한 통화를 사용하고 있는지 확인하세요.

참조 URL : https://stackoverflow.com/questions/4298117/paypal-ipn-always-return-payment-status-pending-on-sandbox

반응형