2016-08-13 3 views
1

Paypal .NET SDK를 사용하여 지불 및 환불을 시도합니다. 그러나 지불 기능이 작동하지만 환불을 수행 할 수 없습니다. 나는 같은 페이팔의 문서와 코드 예제를 통해 찾고있다 : 나는 내 환불 절차를 기반으로 한페이팔 환불 판매 REST API 반환 : 원격 서버에서 오류를 반환했습니다 : (404) 찾을 수 없음

페이팔의 코드 예제 중 하나 (위의 첫 번째 링크)와에서 내 자신의 클래스 라이브러리 내에서 매우 약간 수정되었습니다 :

public class RefundTransaction 
{ 
    private readonly string _paypalUniqueTransactionId; 
    private readonly CurrencyEnum _currency; 
    private readonly decimal _orderTotal; 

    /// <summary> 
    /// Creates a refund with basic key fields. 
    /// </summary> 
    /// <param name="paypalUniqueTransactionId"></param> 
    /// <param name="currency"></param> 
    /// <param name="orderTotal"></param> 
    public RefundTransaction(string paypalUniqueTransactionId, CurrencyEnum currency, decimal orderTotal) 
    { 
     _paypalUniqueTransactionId = paypalUniqueTransactionId; 
     _currency = currency; 
     _orderTotal = orderTotal; 
    } 

    /// <summary> 
    /// Processes and completes a refund on a sale transaction. 
    /// </summary> 
    public void RefundWholeSale() 
    { 
     #region Set the refund details 

     Refund processRefund = new Refund 
     { 
      amount = new Amount() 
      { 
       currency = _currency.ToString(), 
       total = _orderTotal.ToString("N") 
      } 
     }; 

     #endregion 

     #region Action the refund 

     Sale refundSale = new Sale() 
     { 
      id = _paypalUniqueTransactionId 
     }; 

     Refund refundResponse = refundSale.Refund(Configuration.GetAPIContext(), processRefund); 

     #endregion 

    } 
} 

내가 돌아 오는 응답은 404 오류입니다. 이해할 수 있듯이이 API 호출은 /v1/payments/sale/{sale-id}/refund 끝점을 사용합니다. 사용중인 판매 ID 값은 사용자가 결제를 한 후에 저장합니다 (PAY-XXXXXXXXXXXXXXXXXXXXXXX).

올바른 "판매 ID"를 사용하고 있습니까? Paypal 계정에 REST API를 통한 환불을 허용하는 특수 권한이 ​​필요합니까?

이 문제에 대한 도움을 주시면 감사하겠습니다.

답변

3

. 제가 판매 ID라고 생각한 것은 실제로 잘못되었습니다. 판매 ID는 related_resources 섹션의 Paypal .NET SDK에 숨겨져 있습니다.

지금 다음과 같이 검색 할 수있는 판매 ID를 저장하고 코드에서 지불을 만드는 :

// Create a payment using a valid APIContext. 
Payment createdPayment = payment.Create(Configuration.GetAPIContext()); 

string id = createdPayment.id; // This is no the Sale ID you're looking for... 
string saleId = createdPayment.transactions[0].related_resources[0].sale.id; 

나는이 같은 문제를 다른 사람에게 도움이되기를 바랍니다.

0

요청한 리소스가 서버에서 발견되지 않으면 404 오류가 발생합니다. 나는 당신이 전체 API URL을 놓친 것 같아요, 헤더 값과 함께 정보 아래에 게시하려고합니다.

  • URL : https://api.sandbox.paypal.com/v1/payments/sale/&lt;Transaction-Id&gt;/refund
  • 의 Content-Type : application/json
  • 인증 : Bearer <Access-Token>
  • 데이터 : 나는 마침내 작업있어

    { 
        "amount": 
        { 
        "total": "2.34", 
        "currency": "USD" 
        } 
    }