我正在尝试使用PayPal REST API而不是PayPal Classic API,但似乎REST API缺少Classic API具有的两个功能:
所以我的问题是:是否可以在不使用REST API查询送货地址的情况下立即执行付款?我是否必须回到Classic API?
我在这里提供了一些关于我如何使用PayPal REST API的更多信息.我正在使用PayPal REST Java SDK.这是一个示例请求:
{
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"transactions": [
{
"amount": {
"currency": "USD",
"total": "5",
"details": {
"subtotal": "5"
}
},
"description": "This is the payment transaction description.",
"item_list": {
"items": [
{
"quantity": "1",
"name": "Item 1",
"price": "5",
"currency": "USD"
}
]
}
}
],
"redirect_urls": {
"return_url": "http://XXX/handlePayment.jsp?guid\u003dXXX",
"cancel_url": "http://XXX/cancelPayment.jsp?guid\u003dXXX"
}
}
Run Code Online (Sandbox Code Playgroud)
它的回应是:
{ …Run Code Online (Sandbox Code Playgroud) 我目前让我的网站通过PayPal接受付款.我使用REST SDK的PHP SDK来处理这个问题.这是我通过我的网站处理付款的步骤:
这是一种享受.但是,我想让用户选择通过PayPal(如上所述)或通过我的网站(使用PayPal直接付款)处理付款.
对于直接付款,我已经能够通过将意图设置为"促销",将付款方式设置为"credit_card"并传递相应的卡详细信息来成功创建付款.但是,我不确定我是否需要像之前那样执行付款,或者付款是否自动完成.
如果我确实需要执行付款,那么如何获得paymentId和PayerID?如果我不需要执行付款,则会出现问题,因为我希望用户确认付款.我可以将创建支付内容移动到仅在用户确认直接付款订单后才执行,但是在用户输入后我无法验证卡详细信息.我想知道是否有更好的方法来处理这个问题?
如果有人能帮忙解决这个问题,我会很感激.谢谢
我有一个"Paypal PHP Restful SDK"的问题.我的问题是,(在沙箱模式下)我有时会得到错误" 无法解析主机 ......".这种情况发生在沙箱模式的每第10个支付会话中.
这里记录的错误:
mod_fcgid: stderr: PHP Fatal error: Uncaught exception 'PayPal\\Exception\\PayPalConnectionException' with message 'Could not resolve host: api.sandbox.paypal.com' in /var/www/xxxxx.com/httpdocs/app/paypal/paypal/rest-api-sdk-php/lib/PayPal/Core/PayPalHttpConnection.php:137
Run Code Online (Sandbox Code Playgroud)
来自SDK的腐蚀线是:
//Throw Exception if Retries and Certificates doenst work
if (curl_errno($ch)) {
$ex = new PayPalConnectionException(
$this->httpConfig->getUrl(),
curl_error($ch),
curl_errno($ch)
);
curl_close($ch);
throw $ex;
}
Run Code Online (Sandbox Code Playgroud)
信息:我的vServer上没有证书
有人知道,什么是错误的?
我目前正在使用客户端JS方法进行PayPal Express结账集成以进行付款.我希望利用他们的"负面测试"功能来尝试模拟潜在的错误并为客户提供适当的响应.
只需参考相关文档页面,以供参考
它似乎启用了否定测试,您需要传递额外的标题以及付款请求,指定您要为该付款触发的特定错误.
这是我目前用于设置事务的JS:
<script>
//We need to convert our generated json string into a bonified javascript object
var paypal_transaction = JSON.parse(JSON.stringify(<?php echo $paypal_json; ?>));
paypal.Button.render({
env: 'sandbox', // 'production'/'sandbox',
commit: true, // Show a 'Pay Now' button - Allows us to capture the payment right away
client: {
sandbox: 'Ab_hPp7h70DoFKChLMSynNxacQQbGcb_tP1cDbzW9jC6a0rYIZH0CkEYYfkw6csvmlyTmfLnagelqB85',
production:''
},
//How we want the button to look
style: {
size: 'responsive',
color: 'gold',
shape: 'rect',
label: 'pay'
},
headers: {
'{"mock_application_codes":"INSTRUMENT_DECLINED"}'
}
payment: function(data,actions) …Run Code Online (Sandbox Code Playgroud) 我试图使用paypalrestsdk实现与Django PayPal.
我按照示例中的代码示例进行了操作:https://prettyprinted.com/blog/1125955/creating-paypal-express-payments-in-flask
但是有这个错误:

这是我的模板.html,views.py和urls.py的代码片段 https://gist.github.com/axilaris/1e6e34ba5915abceb0dbd06d46baf08b
这是显示按钮的模板代码:
<div id="paypal-button"></div>
<script src="https://www.paypalobjects.com/api/checkout.js"></script>
<script>
var CREATE_PAYMENT_URL = 'http://127.0.0.1:8000/payment_create';
var EXECUTE_PAYMENT_URL = 'http://127.0.0.1:8000/payment_execute';
paypal.Button.render({
env: 'sandbox', // Or 'sandbox'
commit: true, // Show a 'Pay Now' button
payment: function() {
console.log("payment function")
return paypal.request.post(CREATE_PAYMENT_URL).then(function(data) {
console.log("return create payment")
return data.paymentID;
});
},
onAuthorize: function(data) {
return paypal.request.post(EXECUTE_PAYMENT_URL, {
paymentID: data.paymentID,
payerID: data.payerID
}).then(function(res) {
console.log(res.success)
// The payment is complete!
// You can now show a confirmation message to the …Run Code Online (Sandbox Code Playgroud) 我需要使用 PHP 来计算我的 PayPal 帐户中的活跃订阅数量(订阅我的服务的人数,而不是我订阅的服务的数量)。
有谁知道如何做到这一点或者可以指出我正确的方向?
我找不到任何允许您通过 API 查看活动订阅列表的文档,但我假设 PayPal 有此选项,但我只是错过了它......
我正在将智能付款按钮集成到贝宝结帐中
<script src="https://www.paypal.com/sdk/js?...>
paypal.Buttons({
createOrder(data, actions) {
// ...
onApprove(data, actions) {
// ...
}).render('#paypal-button');
Run Code Online (Sandbox Code Playgroud)
除了使用贝宝(PayPal)帐户付款外,我们还希望用户无需创建贝宝(Paypal)帐户即可使用SEPA或信用卡为我们的数字产品付款。
什么我们不要求是来自用户的账单地址或送货地址输入。我们已经掌握了这些信息,可以自行处理帐单,但不适用于运送。
有什么方法可以使用JS SDK 禁用地址输入(最好还有联系信息输入)?我可以传递给SDK资源或paypal.Buttons.render()方法的任何参数?通过其他付款提供商使用信用卡付款时,他们永远不会在乎该用户信息。对于一个好的用户体验,仅数字,到期时间和CVS应该很重要。即使输入CC号码也已经很麻烦了。SEPA付款也是如此。我只是不希望用户必须输入他们的地址。
还是我必须将客户信息传递给PayPal以帮助预防欺诈?如果是这样,我至少可以禁用“运送到帐单地址”复选框吗?这可能会使我们的用户感到困惑。
谢谢!
我想从删除产品catalogs,但我找不到任何API执行此操作的方法,这里是文档。
我知道如何获得所有产品:
https://api.sandbox.paypal.com/v1/catalogs/products?page_size=10&page=1&total_required=true
Run Code Online (Sandbox Code Playgroud)
这将返回如下内容:
{
"products": [
{
"id": "PROD-8DN39312TB525331M",
"name": "Video Streaming Service",
"description": "Video streaming service",
"create_time": "2020-01-07T18:50:01Z",
"links": [
{
"href": "https://api.sandbox.paypal.com/v1/catalogs/products/PROD-8DN39312TB525331M",
"rel": "self",
"method": "GET"
}
]
},
...
Run Code Online (Sandbox Code Playgroud)
有没有实际的方法来删除产品?
我能够成功执行以下 API
/v2/checkout/orders
/v2/checkout/orders/{order_id}/authorize
/v2/checkout/orders/{order_id}/capture
Run Code Online (Sandbox Code Playgroud)
为什么在执行此处所述的 PayPal 退款时会收到“NOT_AUTHORIZED”响应?- https://developer.paypal.com/docs/api/payments/v2/#captures_refund
POST 请求
https://api.sandbox.paypal.com/v2/payments/captures/<Capture ID I got from capture request>/refund
Run Code Online (Sandbox Code Playgroud)
回复
{
"name": "NOT_AUTHORIZED",
"message": "Authorization failed due to insufficient permissions.",
"debug_id": "6c6xxxxx6c",
"details": [
{
"issue": "PERMISSION_DENIED",
"field": "capture_id",
"value": "XXXXXXXXX",
"description": "You do not have permission to access or perform operations on this resource.",
"location": "path"
}
],
"links": [
{
"href": "https://developer.paypal.com/docs/api/v2/payments/#NOT_AUTHORIZED",
"rel": "information_link"
}
]
}
Run Code Online (Sandbox Code Playgroud) 我是 PayPal 集成的新手,但我已成功使用客户端 JavaScript SDK 创建按钮并完成交易。我还添加了一个 webhook,用于侦听 PAYMENT.CAPTURE.* 事件并将返回数据记录到我自己的数据库中的交易表中。缺点是我无法跟踪交易针对的是哪个服务或客户。因此,我想知道如何在按钮中添加至少一个自定义字段,以便它在 webhook POST 中返回给我,以便我可以为该特定客户执行一些业务逻辑。
我最初的选择是发布数据返回onApprove:(data, actions)=>{},但如果在此之前发生灾难性事件(例如断电或一般客户端-服务器连接故障),我将没有恢复选项。
现在我的 JS 基本代码如下:
try{
paypal.Buttons({
// Set up the transaction
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: charge.amount,
currency_code:'USD'
}
}]
});
},
// Finalize the transaction
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
console.log(details);
if(details.status == "COMPLETED"){
localStorage.clear();
window.location.href = "thank-you";
}
//alert('Transaction completed by ' + details.payer.name.given_name + '!');
});
}
}).render('#paypal-button-container');
}catch(e){
console.error('PayPal not loaded!');
}
Run Code Online (Sandbox Code Playgroud)