You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移动端iDEAL支付无法被PayPal捕获问题求助

PayPal iDEAL支付移动端无法捕获款项问题求助

已在PayPal开发者平台提交支持工单,但开发者无法定位问题,特此求助。

问题核心

网站使用PayPal处理iDEAL支付时,桌面端支付流程完全正常,但iPhone等移动端支付后款项无法被捕获,更换多台移动设备测试问题依旧。

支付流程对比

桌面端流程

  • 选择银行后跳转至银行支付页面,扫码完成支付后返回网站
  • 交易数据存入数据库,页面显示成功提示
  • 款项从银行账户扣除并进入PayPal账户,支付已成功捕获

移动端流程

  • 选择银行后跳转至银行APP完成支付,之后跳转至PayPal自带的“感谢页面”
  • 款项从银行账户扣除,但未进入PayPal账户,疑似被自动退款,支付未被捕获

沙箱环境测试结果

沙箱环境下问题完全复现:桌面端支付可正常捕获,移动端无法执行捕获操作。

API调用记录分析

查看PayPal开发者控制台的API调用记录:

  • 移动端仅触发了订单创建请求,未执行捕获操作
  • 桌面端完整执行了订单创建与捕获的全流程

相关代码片段

// CREATE GLOBAL VARS
var invoice_id = '<?php echo $db_invoice_id; ?>';

function submit_database(transaction_id, transaction_amount, transaction_status) {
    
    // DEBUG                                                
    console.log('---BELOW PAYPAL FUNCTION---');
    console.log(invoice_id);
    console.log(transaction_id);
    console.log(transaction_amount);
    console.log(transaction_status);
    
    $.ajax({
        type: "POST",
        url: "/data/betalingen/herinnering/",
        data: {invoice_id: invoice_id, transaction_id: transaction_id, transaction_amount: transaction_amount, transaction_status: transaction_status},
        success: function(data,textStatus,jqXHR){   start_processingIDEALPayment(data,textStatus,jqXHR);    }
    });
    
    function start_processingIDEALPayment(data,textStatus,jqXHR) {  
        // DEBUG
        //alert(data);
        console.log(data);
        
        if (data == 'success') {
            $('.access-purchase .actions').hide();
            $('.access-purchase .content-inner .description').removeClass('alert-danger');
            $('.access-purchase .content-inner .description').addClass('alert-success');
            $('.access-purchase .content-inner .description').html('<i class="fa-solid fa-check"></i> Wij hebben je betaling succesvol ontvangen. De pagina wordt ieder moment ververst, waarna je toegang zult hebben tot de stream.');
        
            setTimeout(function (){
                //Reload page 
                location.reload();
            }, 5000);
        }
        

    }
     
}

paypal.PaymentFields({
  fundingSource: paypal.FUNDING.IDEAL,
  fields: {
    // PREFILL NAME FIELD
    name: {
      value: "<?pho echo $db_name; ?>",
    },
    
  }
})
.render("#ideal-fields");

paypal.Buttons({
      fundingSource: paypal.FUNDING.IDEAL,
      style: { label: "pay", },
      
      createOrder: (data, actions) => {
            return actions.order.create({
                    
             "purchase_units": [{
                "amount": {
                  "currency_code": "EUR",
                  "value": "<?php echo $next_amount_to_pay; ?>",
                  "breakdown": {
                    "item_total": {
                      "currency_code": "EUR",
                      "value": "<?php echo $next_amount_to_pay; ?>"
                    }
                  }
                }, 
                "items": [
                  {
                    "name": "Betaling voor factuur: #<?php echo $db_invoice_id; ?>",
                    "unit_amount": {
                      "currency_code": "EUR",
                      "value": "<?php echo $next_amount_to_pay; ?>"
                    },
                    "quantity": "1"
                  },
                ],
                
              }]
          });
        },
                                                        
        
    onApprove(data, actions) {
        return actions.order.capture().then(function(orderData) {

            
            // DEBUG
            console.log('Capture result', orderData, JSON.stringify(orderData, null, 2));
            
            // CREATE VARS
            var transaction = orderData.purchase_units[0].payments.captures[0];
                                                                    
            var transaction_id = transaction.id;
            var transaction_amount = transaction.amount.value;
            var transaction_status = transaction.status;
            
            // DEBUG
            console.log(transaction_id);
            console.log(transaction_amount);
            console.log(transaction_status);

        
            // SUBMIT TO DB
            submit_database(transaction_id, transaction_amount, transaction_status);
            
            // SHOW MESSAGE TO USER
            $('.box.invoice-payment').hide(); // HIDE PAYMENT FORM
            $('#openPaymentHandler').hide(); // HIDE PAYMENT FORM
            
            $('#payment-callback').removeClass('alert-danger');
            $('#payment-callback').addClass('alert-success');
            $('#payment-callback').html('<i class="fa-solid fa-check"></i> Wij hebben je betaling in goede orde ontvangen.');
            $('#payment-callback').show();
            
            setTimeout(function (){
                //Reload page 
                location.reload();
            }, 3500);
                                                                
        });
      
    },
  
  onCancel(data, actions) { 
        // CANCELED
        //DEBUG
        console.log(`Order Canceled - ID: ${data.orderID}`);    
        
        var transaction_id = data.orderID;
        var transaction_amount = '0.00';
        var transaction_status = 'cancelled';
        
        // SUBMIT TO DB
        submit_database(transaction_id, transaction_amount, transaction_status);
        
        // SHOW MESSAGE TO USER
        $('#payment-callback').removeClass('alert-success');
        $('#payment-callback').addClass('alert-danger');
        $('#payment-callback').html('<i class="fa-regular fa-circle-xmark"></i> De betaling is afgebroken of mislukt.');
        $('#payment-callback').show();
    },
     
    onError(err) { 
        // ERROR
        // DEBUG 
        console.error(err);
        
        if (err == 'Error: Detected popup close') {
            var errorMsg = '<i class="fa-regular fa-circle-xmark"></i> De betaling is mislukt, omdat het betaalvenster is afgesloten.';
        } else {
            var errorMsg = '<i class="fa-regular fa-circle-xmark"></i> De betaling is afgebroken of mislukt.';
        }
    
        // SHOW MESSAGE TO USER
        $('#payment-callback').removeClass('alert-success');
        $('#payment-callback').addClass('alert-danger');
        $('#payment-callback').html(errorMsg);
        $('#payment-callback').show();
        
        alert(err);
    },
    
    
  
}).render("#ideal-btn");

内容的提问来源于stack exchange,提问作者user3131209

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 12:35:19