2017-05-10 8 views
0

그래서 페이팔 공백, 환불 및 가입 취소에 대해이 작은 클래스를 시작했습니다. 내 질문은 권장 관행은 무엇입니까? 즉, 거래를 무효화하고 오류를 무시한 다음 환불하고 구독을 취소해야합니까?구독 중지 및 환불과 함께 PayPal NVP API의 권장 사례는 무엇입니까?

필자의 경우, PayPal Subscription 버튼 클릭으로 거래가 시작된 후 6 개월이 끝난 후 한 번 갱신 된 후 고객이 환불을 원하고 추가 가입을 중단해야합니다. 샌드 박스에서 시행 착오를 통해

<?php 

class Paypp { 

public static function voidCard($r) { 
    $asData = array(
    'METHOD' => 'DoVoid', 
    'AUTHORIZATIONID' => @ $r['paypal_txn_id'] // tnx_id from subscr_payment IPN 
); 
    return self::_sendData($asData); 
} 

public static function cancelSubscription($r) { 
    $asData = array(
    'METHOD' => 'ManageRecurringPaymentsProfileStatus', 
    'PROFILEID' => @ $r['paypal_subscr_profile_id'], // subscr_id from subscr_payment IPN 
    'ACTION' => 'cancel' 
); 
    return self::_sendData($asData); 
} 

public static function refundCard($r) { 
    $asData = array(
    'METHOD' => 'RefundTransaction', 
    'TRANSACTIONID' => @ $r['paypal_txn_id'], 
    'REFUNDTYPE' => 'full', 
    'CURRENCYCODE' => @ $r['currency'], 
    'AMT' => @ $r['gross'] 
); 
    return self::_sendData($asData); 

} 

private static function _sendData($asData) { 
global $config; 

    $sActive = $config->PAYMENT_GATEWAY_DATA->pp->ACTIVE; 
    $sURL = $config->PAYMENT_GATEWAY_DATA->pp->$sActive->NVP_URL; 

    $sVersion = $config->PAYMENT_GATEWAY_DATA->pp->$sActive->NVP_VERSION; 
    $sUser = $config->PAYMENT_GATEWAY_DATA->pp->$sActive->NVP_USER; 
    $sPass = $config->PAYMENT_GATEWAY_DATA->pp->$sActive->NVP_PASS; 
    $sSig = $config->PAYMENT_GATEWAY_DATA->pp->$sActive->NVP_SIG; 

    $asExtra = array(
    'VERSION' => $sVersion, 
    'USER' => $sUser, 
    'PWD' => $sPass, 
    'SIGNATURE' => $sSig 
); 
    $asData = array_merge($asData,$asExtra); 

    $asOpt = array(
    CURLOPT_HEADER => FALSE, 
    CURLOPT_POST => TRUE, 
    CURLOPT_RETURNTRANSFER => TRUE, 
    CURLOPT_POSTFIELDS => http_build_query($asData), 
    CURLOPT_VERBOSE => TRUE, 
); 

    $hCurl = curl_init($sURL); 

    curl_setopt_array($hCurl, $asOpt); 
    $bVerifySSL = @ $config->VERIFY_SSL; 
    curl_setopt($hCurl, CURLOPT_SSL_VERIFYPEER, $bVerifySSL); 

    $sResponse = curl_exec($hCurl); 
    curl_close($hCurl); 
    return $sResponse; 

} 


} // end class 

답변

0

, 나는 워크 플로가 있어야한다 무엇을 발견 :

  1. 무효 건너 뜁니다. PayPal 담당자에 따르면 "공석은 승인 및 주문에만 유효하며 구독을 통해 만들 수는 없습니다."

  2. 예, 환불. 구독 프로세스에서 수신하는 모든 subscr_payment에 대해 고유 한 txn_id가 다시 실행됩니다. 따라서 IPN에서받은 가장 최근의 subscr_payment 만 환불 해드립니다.

  3. 예, 가입 취소 - 환불만으로는 해당 단계가 수행되지 않습니다.

2

void 단계를 생략하십시오. 보이드은 승인 및 주문에만 유효하며 구독을 통해 만들 수는 없습니다. 하지만 예, 구독을 취소하고 개별 결제액을 환불해야합니다.