Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Paypal退款api向接收方提供错误无api访问权限_Android_Paypal_Paypal Sandbox - Fatal编程技术网

Android Paypal退款api向接收方提供错误无api访问权限

Android Paypal退款api向接收方提供错误无api访问权限,android,paypal,paypal-sandbox,Android,Paypal,Paypal Sandbox,我正在使用adaptive payment api的预批准和延迟链接支付 使用api的测试业务帐户也是主要的接收方帐户 在使用预批准启动延迟付款后,我得到一个paykey。在主接收器中准确接收资金。我的应用程序现在有一个场景,资金必须从主接收者退还给购买者。当使用付费钥匙执行此退款并指定接收人以及设置主接收人标志时,我收到一个错误NO_API_ACCESS_to_receiver 这阻碍了我的应用程序发布,是一个严重的问题。请你尽早给我解堵好吗 这是我的代码: RefundRequest ref

我正在使用adaptive payment 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;
        }
returnrequest=new returnrequest();
退款请求。设置支付密钥(支付密钥);
ReturnRequest.setCurrencyCode(KeyConstants.CURRENCY\u USD\u代码);
returnRequest.setRequestEnvelope(clientInfo.getMyAppRequestEnvelope());
ReceiverList ReceiverList=新的ReceiverList();
接收器=新接收器();
receiver.setEmail(businessAccountPaypalEmail);
receiver.setPrimary(true);
double truncatedAmount=NumberUtil.getDoubleTruncate(金额,键常量,双十进制格式);
BigDecimal trunBigDecimal=新的BigDecimal(truncatedAmount);
receiver.setAmount(trunBigDecimal.setScale(2,舍入模式,向上舍入));
receiverList.getReceiver().add(receiver);
退款请求。设置收款人名单(收款人名单);
试一试{
AdaptivePayments AdaptivePayments=新的AdaptivePayments();
退款响应退款响应=自适应付款。退款(退款请求);
ResponseEnvelope ResponseEnvelope=退款响应。getResponseEnvelope();
AckCode AckCode=responseEnvelope.getAck();
如果(ackCode==ackCode.SUCCESS | | ackCode==ackCode.SUCCESS_,带有警告){
Logger.getLogger(PayPalSessionBean.class.getName()).log(Level.INFO,“支付密钥{0}和消息{1}的退款成功”,
新对象[]{payKey});
System.out.println(“确认代码为”+ackCode);
ReturnInfoList ReturnInfoList=ReturnResponse.getReturnInfoList();
List returninfo=returninfolist.getreturninfo();
for(迭代器迭代器=refundos.Iterator();迭代器
.hasNext();){
REUNTINFO REUNTINFO=(REUNTINFO)迭代器.next();
System.out.println(retuinfo.getReceiver().getEmail()+“\t”+retuinfo.getretuintransactionstatus()+“\t”+
ReturnInfo.GetReturnGrossAmount()+'\t'+ReturnInfo.GetReturnStatus()+'\t');
ErrorList ErrorList=returninfo.getErrorList();
List errs=errorList.getError();
for(迭代器迭代器2=errs.Iterator();迭代器2
.hasNext();){
ErrorData ErrorData=(ErrorData)迭代器2.next();
System.out.println(errorData.getMessage());
}
}
返回true;
}
在上面的代码片段中,返回的ACk代码是success,但当我打印REUNTINFO对象的退款状态时,它表示NO_API_ACCESS_TO_RECEIVER。 我已经从主帐户的paypal面板授予api调用方权限


我这边有什么东西不见了吗?请帮帮我!

如果你刚刚从小学退学(你自己)返回发件人,如果您想全额退款,则不需要指定任何收件人。否则,我需要某种类型的PayKey或Correlation ID来查找我这边的请求。

我自己得到了答案。请与大家共享

它从错误的位置读取paypal SDK客户端属性文件

为了避免此类问题,我们应该在AdaptivePayments的构造函数中设置属性

下面是更多说明的代码:

有一个会话bean PropertyBean,它具有函数getPayPalmProperties(),该函数从属性文件读取所有paypal属性

Properties properties = propertyBeanLocal.getPayPalProperties();

AdaptivePayments adaptivePayments = new AdaptivePayments(properties);
而不是这样做

refundRequest.setRequestEnvelope(ClientInfoUtil.getMyAppRequestEnvelope());
这样做

RequestEnvelope requestEnvelope = new RequestEnvelope();
requestEnvelope.setErrorLanguage("en_us");
refundRequest.setRequestEnvelope(requestEnvelope);