亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一旦商品缺貨,如何使用 PayPal 智能按鈕顯示售完消息

一旦商品缺貨,如何使用 PayPal 智能按鈕顯示售完消息

PHP
隔江千里 2023-08-11 16:01:42
我目前正在為我的網站開發商店。我使用 PayPal Smart 按鈕進行付款。我想知道如何添加庫存數量,以便當庫存數量為 0 時,無法購買。我在互聯網上到處搜索,但找不到我的問題的任何答案。這是我當前的代碼:    paypal.Buttons({    style: {        shape: 'rect',        color: 'blue',        layout: 'vertical',        label: 'paypal',        locale: 'en_CY'    },    createOrder: function(data, actions) {        return actions.order.create({            purchase_units: [{                amount: {                    value: ". $row['paypal_price'] .",                    currency: 'EUR'                }            }]        });    },    onApprove: function(data, actions) {        return actions.order.capture().then(function(details) {            localStorage.clear();            window.location.href = 'http://localhost/website/thankyou.php';            //alert('Transaction completed by ' + details.payer.name.given_name + '!');            $stock = 0;        });    }}).render('#paypal-button-container');先感謝您!
查看完整描述

2 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

您的問題更多是關于“如何更新當前庫存”和“如何獲取當前庫存”


Javascript 在客戶端運行,由于您在客戶端沒有當前的庫存編號,因此您需要使 Javascript 與您的服務器進行通信。


一種方法是通過 ajax。您可以使用fetch-api來完成此操作。


這是你必須做的:


在顯示按鈕之前(php 代碼):


<?php

    // your code ...

    // check stock before you echo. Only echo when $stock is > 0

    

    $stock = /* get current stock-amount */;


    if ($stock > 0) {

        echo "paypal.Buttons([...";

    }

確認付款后更新您的庫存:


// your current code

localStorage.clear();

window.location.href = 'http://localhost/website/thankyou.php';

// alert('Transaction completed by ' + details.payer.name.given_name + '!');

// $stock = 0;


// add something like this

const formData = new FormData();

formData.append('amountOrdered', /* number as string */);


// maybe use await to block further processing until stock has been updated

fetch('update_stock.php', {

     method: 'POST',

     body: formData

});

在你的新update_stock.php:


<?php

    // update your stock-source by reducing it by $_POST['amountOrdered']

您需要的最后一步是在創建訂單 (JS) 之前檢查您的庫存:


// async here needed so you can use await

createOrder: async function(data, actions) {

    // check stock here

    let stock = (await fetch('get_current_stock.php')).json();

    let currentStock = stock['current'];


    // you may want to check for amoutTryingToOrder instead of 1

    if (currentStock < 1) {

        alert('Out of stock, sorry :(');

        return false;

    }


    return actions.order.create({

在你的get_current_stock.php:


<?php

    header('Content-Type: application/json');


    $currentStock = /* get current stock */;

    

    echo json_encode([

        'current' => $currentStock

    ]);


查看完整回答
反對 回復 2023-08-11
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

當沒有庫存時,您的 createOrder 函數可能會返回 false,而不是繼續執行 actions.order.create



查看完整回答
反對 回復 2023-08-11
  • 2 回答
  • 0 關注
  • 149 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號