アダプティブ ペイメント API からの事前承認と遅延チェーン支払いを使用しています。
API を使用する私のテスト用ビジネス アカウントは、プライマリ レシーバー アカウントでもあります。
事前承認を使用して遅延支払いを開始した後、生成されたペイキーを取得します。お金は一次受取人に正確に受け取ります。私のアプリケーションには、一次受取人から購入者に返金する必要があるシナリオがあります。Paykey を使用してこの払い戻しを実行しようとして、受信者を指定し、プライマリ受信者フラグも設定すると、エラー NO_API_ACCESS_TO_RECEIVER が表示されます。
これは私のアプリのリリースを妨げており、深刻な問題です。早くブロック解除してくれませんか。
これは私のコードです:
RefundRequest refundRequest = new RefundRequest();
refundRequest.setPayKey(payKey);
refundRequest.setCurrencyCode(KeyConstants.CURRENCY_USD_CODE);
refundRequest.setRequestEnvelope(ClientInfoUtil.getMyAppRequestEnvelope());
ReceiverList receiverList = new ReceiverList();
Receiver receiver = new Receiver();
receiver.setEmail(businessAccountPaypalEmail);
receiver.setPrimary(true);
double truncatedAmount = NumberUtil.getDoubleTruncate(amount, KeyConstants.TWO_DECIMAL_FORMAT);
BigDecimal trunBigDecimal = new BigDecimal(truncatedAmount);
receiver.setAmount(trunBigDecimal.setScale(2, RoundingMode.HALF_UP));
receiverList.getReceiver().add(receiver);
refundRequest.setReceiverList(receiverList);
try {
AdaptivePayments adaptivePayments = new AdaptivePayments();
RefundResponse refundResponse = adaptivePayments.refund(refundRequest);
ResponseEnvelope responseEnvelope = refundResponse.getResponseEnvelope();
AckCode ackCode = responseEnvelope.getAck();
if(ackCode == AckCode.SUCCESS || ackCode == AckCode.SUCCESS_WITH_WARNING){
Logger.getLogger(PayPalSessionBean.class.getName()).log(Level.INFO, "Refund success for the pay key {0} and messsage {1}",
new Object[]{payKey});
System.out.println("Ack code is " + ackCode);
RefundInfoList refundInfoList = refundResponse.getRefundInfoList();
List<RefundInfo> refundInfos = refundInfoList.getRefundInfo();
for (Iterator iterator = refundInfos.iterator(); iterator
.hasNext();) {
RefundInfo refundInfo = (RefundInfo) iterator.next();
System.out.println(refundInfo.getReceiver().getEmail() + "\t" + refundInfo.getRefundTransactionStatus() + "\t" +
refundInfo.getRefundGrossAmount() + '\t' + refundInfo.getRefundStatus() + '\t');
ErrorList errorList = refundInfo.getErrorList();
List<ErrorData> errs = errorList.getError();
for (Iterator iterator2 = errs.iterator(); iterator2
.hasNext();) {
ErrorData errorData = (ErrorData) iterator2.next();
System.out.println(errorData.getMessage());
}
}
return true;
}
上記のコード スニペットでは、返された ACk コードは成功ですが、RefundInfo オブジェクトの払い戻しステータスを出力すると、NO_API_ACCESS_TO_RECEIVER と表示されます。プライマリ アカウントのペイパル パネルから API 呼び出し元に許可を与えました。
私の側に欠けているものはありますか?私を助けてください!