2014-09-08 2 views
0

저는 일반 "일반 텍스트"PayPal 버튼을 암호화 된 버튼 (둘 다 동적이어야하므로 직접 만든 버튼)으로 전환했습니다. 평범한 것들이 잘 작동하지만 나는 Encrypted 버전의 문제를 겪고있다. Paypal은 일반적인 "죄송합니다 - 마지막 작업을 완료 할 수 없습니다."라는 메시지와 함께 실패하고 더 이상의 정보를 제공하지 않습니다.일반 "죄송합니다. 마지막 작업을 완료 할 수 없습니다."오류

나는 게시물이있어 정보 ... <>에서

cert_id=<certificateID> 
business=<merchantID> 
return=<returnURL> 
cancel_return=<returnURL> 
notify_url=<ipnURL> 
cn=Email Address Needed 
lc=GB 
currency_code=GBP 
button_subtype=services 
no_note=0 
no_shipping=1 
rm=1 
charset=utf-8 
item_name=<productName> 
item_number=<productID> 
amount=<value> 

모든 것이이 시점에서 보안상의 이유로 제거,하지만 그건 당신에게 다음 암호화 게시되는 내용의 일부 아이디어를 줄 것이다.

양식은 간단하고 jQuery를 AJAX 호출에 의해 제출

<form id='igp-<prodID>' action='https://www.paypal.com/cgi-bin/webscr' method='post'> 
    <input type='hidden' name='cmd' value='_s-xclick' /> 
    <input type='hidden' name='encrypted' value='{$paypalData}' /> 
</form> 

페이팔의 문서는 ... (암호화 된 버튼을 페이지에 추가 데이터의 -massive- 양을 줄일 수 있습니다) 오히려 당신이 여기에서해야 할 일의 측면에서 무작위로 퍼져 있지만, 나는 실종 된 것을 볼 수 없습니다.

cert_id의 문자를 바꿀 경우 데이터를 해독 할 수 없다는 메시지가 표시되는 대신 동일한 메시지가 계속 나오면서 오류가 발생하지 않는다는 인상을줍니다.

아이디어가 있으십니까?

EDIT/업데이트 : 실제로 "인증서 ID의 암호를 해독 할 수 없습니다."라는 메시지가 나타납니다. (샌드 박스 사용시 나타남). OpenSSL로 전송 된 코드는 정상 (올바른 '='일치 값)으로 보입니다.

I가 사용하고 OpenSSL에 대한 코드 ... 다시 큰 PCK7Z 블록과에는 OpenSSL에서 오류없이 생산

$opensslOutput = trim(shell_exec("export RANDFILE='system/.rnd'; (openssl smime -sign -signer {$keystoreCert} -inkey {$keystoreKey} -outform der -nodetach -binary <<_EOF_\n{$paypalData}\n_EOF_\n) | openssl smime -encrypt -des3 -outform pem -binary {$paypalCert}")); 

. 그래서 이것은 페이팔이 여기서 실패 할 수있는 질문을 던집니다. 위의 코드는 더 이상 페이팔이 좋아하는 서명 된 블록을 생성하지 않습니까?

+0

FWIW이 오류는 이제 영구적이며 암호화 된 지불에만 국한되지는 않습니다. 많은 포럼 항목에서 가능한 브라우저 문제 (Chrome이 아닌 Safari에서 작동)를 확인했으며 전체적인 인상은 Paypal의 디자인 정밀 검사 때문입니다. 어느 쪽이든, 그것은 지불에 영향을 미치고 있습니다. – cbmtrx

답변

0

우수한 통합을위한 임시 해결 방법으로 Express Checkout API를 대신 사용하는 것이 좋습니다.

표준 페이팔 버튼이 할 수있는 모든 작업을 수행 할 수 있으며, 표준 버튼으로 돈을받을 수있는 모든 PayPal 계정을 사용할 수 있습니다.

Express Checkout을 사용해 보셨습니까? https://devtools-paypal.com/guide/expresscheckout/php?interactive=OFF&env=sandbox

https://devtools-paypal.com/integrationwizard/ecpaypal/main.php

https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECGettingStarted/ 주목해야 할 가장 큰 차이점은 기본적으로 EC에 로그인하거나 체크 아웃 될 때 페이팔 계정을 만들 구매자를 필요로한다는 것이다. 초기 SetExpressCheckout API 호출에 SOLUTIONTYPE = Sole을 추가하여 똑같은 손님 체크 아웃 기능을 표준으로 사용할 수 있습니다.

또 다른 차이점은 EC를 사용하면 고객은 결제가 완료되기 전에 항상 사이트로 돌아올 것입니다.고객에게 주문 리뷰 페이지를 제출하고 합계를 업데이트하거나 즉시 결제를 실행하고 즉각적인 API 응답을 받으면 즉시 고객에게 다시 시도해 주셔서 감사합니다. .

기본적으로 EC는 개마다 개마다 더 좋습니다. 서버에서 PayPal로 HTTPS API 호출을 작성할 수 있어야합니다.

+0

나는 이것에 대해 언급했지만 어떤 간단한 예제 구현도 볼 수 없었다. 아이템들은 모두 단일 아이템 "Buy now"스타일 셋업이 될 것이므로 만능 카트가 필요하지 않습니다. Paypal 사이트의 둘러보기는 내가 사용하려고 한 게시물 제출과 비교하여 엄청난 잔인한 것으로 보입니다. – Enverex

+0

이것에 더 추가하려면, 익스프레스 체크 아웃 (Express Checkout)에서도 자신의 SDK를 사용해야한다고 생각합니다.이 SDK를 사용하는 것은 피하고 싶습니다. 물론이 제품을 작고 독립적으로 유지하려고 노력하고 있습니다. (그리고 제 3 PHP 버전과의 파티 호환성 문제도 있습니다. – Enverex

+0

Express Checkout에는 선택 사항 인 SDK가 필요하지 않습니다. 귀하의 요구가 간단하다면 왜 PayPal의 호스팅 버튼을 사용하지 않으십니까? 어떤 종류의 역 동성이 필요합니까? 암호화 된 버튼을 사용하여 보안을 유지하려면 어떻게해야합니까? –

관련 문제