PayPal 付款連結和按鈕的疑難解答提示

我收到錯誤訊息,及該按鈕未能顯示在我的網站上。

  1. 請檢查互聯網連線是否正常。
  2. 請瀏覽你網站的其他頁面,檢查能否正常載入。
  3. 前往「PayPal 按鈕」頁面並檢查:
    * 按鈕是否顯示在「已儲存的按鈕」之下?
    * 選擇「編輯」,並確保按鈕程式碼與你網站上的程式碼相符。
  4. 以右鍵點擊你的產品頁面(已貼上按鈕程式碼的頁面),然後按一下「檢查」。前往「控制台」分頁(位於頂部)。如你已部署內容安全政策 (CSP),你可能會看到 CSP 錯誤,例如以下(CSP 錯誤範例):

  • 由於指令碼違反以下內容安全策略指令:"default-src 'self'",指令碼‘https://www.paypal.com/sdk/js**’已被拒絕載入。請注意,'script-src-elem' 沒有明確設定,因此“default-src”用作後備。
  • 由於指令碼違反以下內容安全策略指令:"default-src 'self'",指已被拒絕連結至‘https://www.paypal.com/**’。請注意,'connect-src' 未明確設置,因此 'default-src' 用作後備。
  • 由於指令碼違反了以下內容安全策略指令:"script-src https://*.paypal.com",內嵌指令碼遭拒絕執行。你必須使用 'unsafe-inline' 關鍵詞、雜湊碼 ('sha256-WYDWDPwB8j2VePYrqy38aHPcJLsasO//lnXymmxscUk='),或 nonce (“nonce-...'”),才能啟用內嵌指令碼。
  • 由於指令碼違反以下內容安全策略指令:"default-src 'self'",圖片'https://tracking.qa.paypal.com/webapps/tracking/ts?**已被拒絕載入。請注意,'img-src' 未明確設置,因此 'default-src' 用作後備。
  • 由於指令碼 ‘https://www.paypal.com/sdk/js**’ 違反以下內容安全策略指令:"default-src 'self'",指令碼已被拒絕載入。請注意,'frame-src' 未明確設置,因此 'default-src' 用作後備。

你可嘗試新增以下指令碼以解決上述錯誤:

選項-1 (HTML):如於 HTML 檔已設定客戶服務 PIN 碼 (CSP),請使用以下代碼取代你的 CSP 代碼

<meta http-equiv="Content-Security-Policy" content="default-src 'self';
script-src 'unsafe-inline' https://*.paypal.com https://*.paypalobjects.com;
style-src 'unsafe-inline' https://*.paypal.com; connect-src
https://*.paypal.com; frame-src https://*.paypal.com; img-src
https://*.paypal.com https://*.paypalobjects.com">

選項-2(伺服器):如於伺服器已設定 CSP,請使用以下程式碼取代你的 CSP 程式碼

Content-Security-Policy: script-src 'unsafe-inline' https://*.paypal.com https://*.paypalobjects.com
Content-Security-Policy: style-src 'unsafe-inline' https://*.paypal.com
Content-Security-Policy: connect-src https://*.paypal.com
Content-Security-Policy: frame-src https://*.paypal.com
Content-Security-Policy: img-src https://*.paypal.com https://*.paypalobjects.com

如何變更產品名稱/價格/ 數量的版面配置/尺寸/顏色?

在 PayPal 網站變更產品名稱 / 價格 / 數量的版面配置 / 大小 / 顏色之方法如下:

  1. 前往 「PayPal 按鈕」頁面
  2. 按一下「已儲存的按鈕」旁的「開啟」,然後選擇「編輯」。
  3. 按一下「自訂按鈕」,然後作出任何必要變更。

我已編輯產品資料(名稱、金額或其他);我是否需要

再次複製 / 貼上按鈕代碼?

否,我們會從 PayPal 伺服器獲取所有資料。當你在帳戶上儲存變更後,你無需更新已複製 / 貼上至你網站的按鈕 ID。 

附註: 如你更改產品貨幣代碼,便需要更新付款按鈕。

我在代碼中看到客戶 ID;這代表什麼?

客户 ID 是屬於你帳戶一部份的商家客户 ID。你不應將其編輯。按照按鈕代碼所示使用。

我已新增多個按鈕,但沒有在網站上顯示。

同一網頁上的多個按鈕在以下情況下將無法運作:

  • 如你在同一個網頁上多次複製 / 貼上同一按鈕 ID,系統只會顯示第一個按鈕。你不能重複同一個按鈕 ID 多次。
  • 如你已複製 / 貼上不同的按鈕編號,但於同一網頁使用不同的貨幣,則系統只會顯示第一個按鈕。你無法在同一個頁面網上的按鈕上新增外幣。
  • 如果你已複製 / 貼上不同的按鈕 ID,但系統載入緩慢,請確保只新增了一次包含客戶 ID 的指令碼標籤。指令碼看起來如下:
    • <script src="https://www.paypal.com/sdk/js?client-id=XYZ&components=hosted-buttons&enable-funding=venmo&currency=USD"></script> 

我擁有特選 PayPal 帳戶,但我看不到付款連結和按鈕

的選項。

此功能僅適用於 PayPal 商業帳戶。如要使用此功能,請升級至建立商業帳戶

如何在 PayPal Sandbox 測試此體驗?

付款連結和按鈕可在 Sandbox 測試。

信用卡/扣帳卡內聯展開並未完全顯示於我的

網站。

請確保將母集裝箱的闊度和高度設定為符合內聯展開。請查閱代管平台的文件 / 支援頁面以了解詳情。

付款連結和按鈕是否支援 IPN(即時付款通知)?

是。按照以下步驟設定並啟用 IPN。

在 PayPal 尋找 IPN 設定的方法如下:

  1. 前往帳戶設定
  2. 選擇「通知」和「即時付款通知」。
  3. 按一下「更新連結」。

啟用 IPN 設定的方法如下:

  1. 新增 IPN 處理器網址,然後選擇「接收 IPN 訊息(啟用)」。
  2. 按一下「儲存」。

在你的伺服器程式碼中處理 IPN

  • 每當完成付款連結和按鈕交易時,PayPal IPN 會調用步驟 2 中設定的通知網址。

存取 IPN 記錄

參考資料

介紹:https://developer.paypal.com/api/nvp-soap/ipn/IPNIntro/

確保在伺服器程式碼中使用正確的 IPN 網址

不同語言的範例GitHub - paypal/ipn-code-samples

系統將客戶導向至重新導向頁面時,

PayPal 會傳送哪些購物資料? 付款連結和按鈕是否支援付款資料傳輸?

哪些變數受支援?

是,我們支援此處列明的付款資料傳輸變數。如你在設定付款連結和按鈕時啟用「自動返回」設定,你會收到付款資料傳輸。

如果商家在按鈕程式碼或付款連結中手動加入地區,

會否受付款連結和按鈕支援?

付款連結和按鈕預設使用客戶的瀏覽器偏好設定來顯示按鈕程式碼和付款連結體驗。

商家可透過附加「locale.x=fr_FR」作為查詢參數,覆寫付款連結和按鈕程式碼的此一設定。你可在此處查閱支援的地區代碼清單。系統不會翻譯商家在設定期間輸入的任何文字。

例如:https://www.paypal.com/ncp/payment/F3YMU2ZGT49XX?locale.x=jp_JP

例如: 

<script src="……¤cy=USD&locale.x=jp_JP"></script>

是否可以隱藏來自付款連結和

按鈕程式碼的部分標籤?

我們明白你網站上的版面設定可能不同,但我們不建議隱藏我們提供的按鈕程式碼。 

在你的網站隱藏相關內容不會改變交易的處理方式。交易仍會使用你的代管按鈕 ID 配置。 

如果你使用無需客戶輸入的按鈕類型,便可隱藏按鈕周圍的特定或 所有文字。例如,若你的客戶需要選擇數量或多項選擇清單,而你已隱藏這些輸入元素,交易將會失敗。 

隱藏項目價格的方法如下:

在你的按鈕程式碼下方加入此指令碼,以實際按鈕 ID 取代 HostedButton_ID

<style> #paypal-container-<HostedButton_ID> {

                #paypal-form-fields-container-<HostedButton_ID> {

                                 #price-label {

                                                 display: none !important;

                                }

                }

 

}

</style>

                   

就如隱藏項目價格,你亦可對其他文字作出相同設定:

  • desc-label(適用於產品名稱)
  • price-label(適用於價格)

如果你要隱藏多項 ,請使用分隔的 ID:

style> #paypal-container-

{ #paypal-form-fields-container-

{ #price-label,  #desc-label { display: none !important; }} }

如果你想隱藏按鈕周圍的所有文字,請謹記你的按鈕類型不應要求客戶作出任何選擇或輸入:

<style>

#paypal-container-<HostedButton_ID>

{

                #paypal-form-fields-container-<HostedButton_ID>

                {

                                display: none !important;

                }

}

</style>


是否可以覆寫我的付款連結和按鈕以使用「在

『設定』中使用運送」?

付款連結和按鈕不會套用帳戶設定中的運送資料批量覆寫,亦即「運送設定」中的下列設定。

image

我已更改按鈕的貨幣,但在

網站上沒有看到相關更新。

在網站加入按鈕後,如要更改按鈕的貨幣,你需要在網站上重新複製 / 貼上按鈕程式碼。

如果我選擇「不收集運送地址」,我便無法選擇「在『設定』中使用運送」和「在

『設定』中使用稅款」。

「設定」中的運費和稅項取決於客戶的運送郵政編碼和 / 或國家 / 地區。如你選擇「不收集運送地址」,你將不會收到客戶的運送地址以在「設定」中計算運費和稅項。我們建議你使用「運費」和「稅款」下拉式選單的其他選項。

付款連結和按鈕是否支援 Webhook?

是。啟用 Webhook 的方法如下:

  1. 使用你的商家帳戶登入資料登入「開發人員資訊主頁」。
  2. 切換至「即時環境」。
  3. 按一下「應用程式與登入資料」。
  4. 向下捲動,然後選擇「管理 Webhook」。
  5. 你現可為即時環境新增 Webhook 網址。如你希望為 Sandbox 新增 Webhook,請留在此頁,然後在右上角從「即時環境」切換至「Sandbox」。
  6. 新增 Webhook 回調網址,選擇所有事件或結帳、付款事件,這些事件將根據你的 NVP 或 SOAP API 實作由 PayPal 觸發。請調用 PayPal 的 NVP/SOAP API 以獲取 Webhook 資訊。

Webhook 回應範例:

"id": "WH-12D11567VE3425924-2G120938U32719946", 
"event_version": "1.0", 
"create_time": "2024-09-14T15:55:58.043Z", 
"resource_type": "capture", 
"resource_version": "2.0", 
"event_type": "PAYMENT.CAPTURE.COMPLETED", 
"summary": "Payment completed for $ 128.88 USD", 
"resource": { 
"supplementary_data": { 
"related_ids": { 
"order_id": "8LM68409BR5528307" 
} 
], 
"id": "7KK30254642170736", 
"status": "COMPLETED" 

我們可以透過更多方式提供協助

如你繼續瀏覽,我們將使用 Cookie 來改善和提供為你而設的體驗。可否讓我們同時使用 Cookie 向你展示個人化廣告?了解更多並管理你的 Cookie