我试图在沙盒中测试Paypal纠纷,并遵循以下指南: https://developer.paypal.com/docs/integration/direct/customer-disputes/integration-guide/#sandbox-only-methods。
但是,在第2步(获得买方许可)上,贝宝提供的用于生成连接按钮的代码引发了js语法错误,因此我将其更改为:
<span id='cwppButton'></span>
<script src="https://www.paypalobjects.com/js/external/connect/api.js"></script>
<script>
paypal.use( ['login'], function (login) {
login.render ({
"appid": "MY_CLIENT_ID",
"authend": "sandbox",
"scopes": "openid",
"containerid": "cwppButton",
"locale": "en-us",
"buttonType": "CWP",
"buttonSize": "lg",
"returnurl": "https://a62add0d.ngrok.io/api/payments/paypal/get-token/"
});
});
</script>
您如何看到我将范围更改为“ openid”,在此示例中,由于将贝宝提供的链接分开,导致出现“无效范围”错误 但是,在此步骤中,我从按钮获得了访问令牌。 我面临的下一个问题是在第4步(为PayPal授权声明生成JSON Web令牌)上,paypal提供的代码给出了语法错误,因此我将其替换为:
<span id='cwppButton'></span>
<html>
<script>
function base64url(source) {
encodedSource = btoa(source);
encodedSource = encodedSource.replace(/=+$/, '"');
encodedSource = encodedSource.replace(/\+/g, '-');
encodedSource = encodedSource.replace(/\//g, '-');
return encodedSource;
}
function generateJWT() {
var header = {"alg": "none", "typ": "JWT"};
var data = {"iss" :"MY_CLIENT_ID",
"email" : "casino.player@gmail.com" };
document.write(base64url(JSON.stringify(header)) + "." +
base64url(JSON.stringify(data)) + ".");
}
</script>
<body onload="generateJWT()"/>
由于在第6步中运行了创建争议请求,因此出现了此错误:
{
"error": "invalid_request",
"error_description": "No permissions to set target_client_id"
}
我的问题是如何在沙盒中正确设置和测试Paypal纠纷?如果有人在争议测试中遇到相同的问题?
答案 0 :(得分:1)
Set up your REST app with the following scope:
https://uri.paypal.com/services/disputes/create = DISPUTE_CREATE
您这样做了吗?在集成需要批准的API时,可能需要为PayPal的沙箱帐户/沙箱客户端ID REST APP完成第一步。
然后,您将能够在必要的范围内完成步骤2。
如果没有所需的范围和权限,您将在步骤4中得到该错误。