如果您的公司從事外貿或跨境支付業(yè)務,您一定聽說過大名鼎鼎的PayPal??傮w來說,PayPal在跨境貿易方面具有比較大的優(yōu)勢。作為一種外貿支付方式,目前在國際貿易中使用較多。該支付服務受到數(shù)億用戶的高度追捧,是全球商家和消費者最流行的電子支付方式之一。在跨境交易中,超過90% 的賣家和超過85% 的買家認可并正在使用PayPal 電子產品。支付業(yè)務。當然,PayPal的國際業(yè)務量肯定沒有理由如此驚人。
PayPal支付的優(yōu)勢在于其業(yè)務網絡遍布全球。目前,PayPal龐大的網絡覆蓋全球200多個國家,提供20多種語言的服務,接受100多種貨幣的付款和56種貨幣的現(xiàn)金提取。同時,賬戶中還允許持有25種貨幣的余額。也就是說,付款人只要擁有PayPal賬戶,就可以在200多個國家進行電子支付購物,并在需要服務時享受母語支持的各種便捷服務。
(資料圖片僅供參考)
前面幾篇文章介紹了國內支付寶支付:Python3.7.2+Django2.0.4 美多商城集成最新版支付寶支付接口(2019.04)和微信支付:mpvue1.0+python3.7+Django2.0.4實現(xiàn)微信Mini支付功能該計劃的
這是我們第一次嘗試使用Django2集成跨境三方支付接口PayPal
首先注冊官網https://www.paypal.com和開發(fā)者平臺:https://developer.paypal.com/developer/accounts/
注冊成功后,進入沙盒的賬戶控制頁面:https://developer.paypal.com/developer/accounts/
默認情況下會創(chuàng)建兩個賬戶,一個為商戶,另一個為個人。
我們演示的流程是用個人賬戶登錄第三方網站向商戶賬戶付款。當然,如果您不想使用默認帳戶,也可以點擊右側創(chuàng)建帳戶的藍色按鈕單獨創(chuàng)建。
然后進入應用管理頁面:https://developer.paypal.com/developer/applications/
默認已創(chuàng)建支付應用程序。記錄下它的client_id和client_secret,后面會用到。
隨后,我們可以返回賬戶管理頁面修改個人賬戶的支付余額
設置最高限制
如果您愿意,還可以更改登錄密碼,因為稍后我們將使用此帳戶進行登錄。注意,所有這些登錄和支付操作都將在沙箱環(huán)境中完成,完全不會影響生產環(huán)境的使用。
ok,完成這些之后,前置任務就完成了?,F(xiàn)在運行命令在python 端安裝paypal sdk。
pip3 install paypalrestsdk 現(xiàn)在你可以在django中創(chuàng)建一個新的支付視圖views.py
import paypalrestsdkdef payment(request): paypalrestsdk.configure({ 'mode': 'sandbox', # sandbox 代表沙箱'client_id': 'your client_id, 'client_secret': 'your client_secret' }) payment=paypalrestsdk.Payment ({ 'intent': 'sale', 'payer': { ' payment_method': 'paypal'}, 'redirect_urls': { 'return_url': 'http://localhost:8000/palpay/pay/',#支付成功跳轉頁面'cancel_url ': ' http://localhost:3000/paypal/cancel/'},#取消支付頁面'transactions': [{ 'amount': { 'total': '5.00', 'currency': 'USD'}, 'description': '這是一筆訂單test'}]}) if payment.create(): print('付款創(chuàng)建成功') for payment.links: if link.rel=='approval_url':approval_url=str(link.href) print('重定向為approval: %s' % (approval_url)) return redirect(approval_url) else: print( payment.error) return HttpResponse('支付失敗') 這里我們解釋一下關鍵參數(shù)。 return_url為支付成功后的回調頁面。 Paypal會返回一個付款人ID,然后服務器需要驗證支付后才能真正完成支付。 Total為支付金額,精確到分鐘,currency為幣種,支持多種幣種。
Django服務器創(chuàng)建支付訂單后,會重定向到paypal沙箱環(huán)境。這時候就必須使用沙盒的個人賬戶來登錄并支付。
支付完成后,會跳轉回剛才傳遞的回調頁面:http://localhost:8000/palpay/pay/? paymentId=PAYID-L3SYORA3C031930S1733650Jtoken=EC-9TG269735K620131NPayerID=ETYYRCDN8C3XJ
這里paypal會傳遞三個參數(shù),支付id、token和payer id。
這時,在回調方法中,我們需要通過payer id來確認并驗證支付。
def payment_execute(request): paymentid=request.Get.get(' paymentId') #訂單id payerid=request.Get.get('PayerID') #付款人id payment=paypalrestsdk.Payment.find( paymentid) if payment. execute({'payer_id': payerid}): print('支付執(zhí)行成功') return HttpResponse('支付成功') else: print( payment.error) # 錯誤哈希return HttpResponse('支付失敗') 最后返回管理頁面,發(fā)現(xiàn)$5已經不見了,說明付款流程已經完成。
這筆交易圓滿結束。當然,有些時候我們需要查看交易流程,我們也可以通過界面查看交易詳情。
#Detailed payment=paypalrestsdk.Payment.find('訂單號')print( payment) 可以看到,通過傳入訂單id,我們就有了交易的狀態(tài)、交易id、創(chuàng)建日期。
如果用戶想要退款,可以使用交易明細中的序列號來辦理退款業(yè)務。
#Refund from paypalrestsdk import Salesale=Sale.find('serial number')# 進行Refund API 調用# 僅在部分退款時設置金額refund=sale.refund({ 'amount': { 'total': '5.00', ' currency': 'USD'}})# 查看退款狀態(tài)if returned.success(): print('退款[%s]成功' % (refund.id))else: print('無法退款') print(refund.error ) 結論:
總體來說,沒有什么特別困難的地方。整個支付流程比支付寶更加緊湊,但支付安全是重中之重。就個人體驗而言(僅個人體驗),支付寶在安全性方面做得很好。比Paypal還是稍微好一些。至少在信用卡詐騙、盜竊方面有更好的風險控制,在風險保障和賠償方面提供了保險。當然,由于金融環(huán)境的巨大差異,并不意味著Paypal的風險控制能力更好。雖然做得不好,但機制不一樣。在國外,如果持卡人的信用卡被盜,發(fā)卡機構一般會讓商戶承擔責任,但在中國,只能在交易過程中設置更多的驗證,本質上是對持卡人負責。這也是支付寶風控看起來比較好的原因。
最后是費率問題。 Paypal的官方費率是每筆交易3.9%+0.3美元(比例可以根據(jù)你的交易流量進行折扣,具體下限取決于用戶每月的業(yè)務額度),但是這是一把漂亮的刀,不得不說這個比例相當高,但國內電商企業(yè)進行海外支付一般還是需要連接Paypal作為支付方式。支付寶的手續(xù)費率基本在1.2%左右。具體費率還取決于交易流量。強者的下限基本可以是沒有。單純看費率,支付寶似乎更有優(yōu)勢,但別忘了,這種比較并不準確。從科學角度來說,因為任何連接Paypal的人都對涉及外幣業(yè)務的領域感興趣,而費率是投資者應該考慮的問題。