2017-10-02 5 views
1

현재 내 가게에 Paypal Payment Gateway을 구현 중입니다. paypal 샌드 박스 계정에 반송 URL을 추가했습니다.Woocommerce + Payment (PayPal) - 주문 상태를 안전하게 업데이트 + 거래 ID 받기

결제 단계까지 :

  • 는 로그인 & 프로세스 지불
  • 이 succes에에 return_url로 리디렉션 주문
  • 페이팔 사이트에 WC_Gateway_Paypal 클래스
  • 리디렉션을 통해 지불을 만들기 만들기

샘플 코드 :

function create_order() 
{ 
    $order = wc_create_order(); 
    $product = wc_get_product(55); 
    $order->add_product($product, 1); 

    $address = array(
     'first_name' => 'John', 
     'last_name' => 'Doe', 
     'company' => '', 
     'email' => '[email protected]', 
     'phone' => '111111', 
     'address_1' => '', 
     'address_2' => '', 
     'city' => '', 
     'state' => '', 
     'postcode' => '', 
     'country' => '' 
    ); 
    $order->set_address($address, 'billing'); 
    $order->set_address($address, 'shipping'); 
    $order->calculate_totals(); 
    $order->set_payment_method('paypal'); 
    $paypal = new WC_Gateway_Paypal(); 
    $paymentdetails = $paypal->process_payment($order->get_id()); 
    return $paymentdetails; 
} 

$paymentdetails 나는 고객을 리디렉션 할 페이팔 URL을 반환합니다. http://mypage.com/56/?key=wc_order_59d24a26d4ccb&utm_nooverride=1

지금 내 주문을 업데이트 할 :

성공 결제 후 고객에 페이팔에서 리디렉션 가져옵니다. 리디렉션 URL에서 ID와 주문 키를 읽을 수는 있지만 보안 문제는 아닐 것입니다. 누군가 ID 또는 키를 알고 있다면 그는 내 사이트에 GET을 방아쇠를 당기고 실제 지불없이 그의 주문을 업데이트 할 수 있습니다.

더 좋은 방법이 있나요? 또는 ID 대신 key=wc_order_59d24a26d4ccb을 사용해야하고 프런트 엔드에 키를 보내지 않도록주의해야합니까?

또한 transaction_id을받지 못했습니다. $order->get_transaction_id();은 결제 완료 후 비어 있습니다. 내 로컬 컴퓨터에서 개발 중이거나 샌드 박스 계정으로 개발 중이기 때문입니까?

+0

배우기 만하면됩니다. 무료 [PayPal for WooCommerce] (https://wordpress.org/plugins/paypal-for-woocommerce/) 플러그인을 사용하지 않는 특별한 이유가 있습니까? –

+1

WordPress 테마없이 ReactJS 앱을 만들고 있는데, 아약스를 통해 모든 기능을 직접 호출 할 수 있어야합니다. – Dario

+0

로컬 컴퓨터에서 개발 중이기 때문에 이것이라고 생각합니다. 내 대답을 확인하십시오. –

답변

0

로컬 컴퓨터에서 개발 중이므로 가장 좋습니다.

페이팔 통합은 백그라운드에서 많은 일을합니다 (토큰 교환, 주문 업데이트 등). 결제를 만들 때 페이팔에 로컬 개발자 URL (예 : http://localhost/something)이 표시되지만 라우터를 사용 중이므로 페이팔에 연결할 수 없습니다. 설치를 서버 또는 웹 공간으로 옮기고 다시 시도하면 정상적으로 작동합니다.