支付寶沙箱測試


支付寶沙箱測試

本文主要介紹PC端瀏覽器訪問網站時的支付寶支付功能,首先了解一下網站PC端支付寶支付需要進行的流程:

網站如果需要支持支付寶在線支付功能可以先對支付功能進行沙箱測試,測試成功換用支付寶的真是支付接口即可。

沙箱測試步驟如下

1.安裝SDK,由於支付寶的python版官方SDK使用比較繁瑣,這里使用非官方的python-alipay-sdk,該SDK目前已經支持了大部分應用場景下的支付寶支付功能GitHub鏈接為python-alipay-sdk

# 安裝python-alipay-sdk
pip install python-alipay-sdk --upgrade
#安裝pyopenssl
pip install pyopenssl

2.支付測試

from alipay import AliPay

# 公鑰私鑰配置
app_private_key_string = """-----BEGIN RSA PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCUcOQ4Art/U4kqvBroL10A33lDNnRXg0mIBUM4GoT9HwlC2J5wBlIY9XlN9RR1AwLBQGthfTnJF7WvkLzNlxK5bapGalGuqQdxYagMTftqoR8qC9PCmIMWIjGuD9MSRctmUHYySn3u9y+AJx98fW5EaLVmwFeuhRtGpkI6VBjTKJorr0T40OkX/WrAdJJ/2WpqOhM+XF+TxmER6JTlHABxu3eJKNXZg5IPzrZmj9DqlheKvMh8fvsEMVGQnmrUimJ6G8fXCdmVrISXM7JeOcWTwUbtMkk9iIUeRIHgMRYZCOEnld26BzUxqn5+N81c0NBQsCe4Y2KUyFxHNEZZCPwrAgMBAAECggEAQ8Qx+/wLWvpo8XCEnCEbRU3AT1Xp0RXnmMhGQrOgqOnlUXYRBrVr/2b5ZQSQvUaNmGnvW8dOfSZs1GSwPO9OJgcRqCnbdnBGLJXXoR5su+YokwppNzpnBdDAe2VQB9SDIgdznkvxqAmCzu+NaUjd8S8YOXtvzAWKSTuXmodP+f2pY9Oz/3/UupoeWLtl88WvwkfgwDM7jSB6/aZ5syfPlPS2uBStH+BU9p8hq7OUt4rD4O9HGqr2MP6hivhmK8QM48nTYk9HmRrLbtt3hnskw07ohk707OP7ghgOFhxDbd8GrGSyKxA37mHj4NoanLzoK165ywKp9lF2fUZmDzXteQKBgQDXBrrtNzV+Xv6p2ZlxkgLTr+Og10IxtWwsC0/zS4Ck955qXm/30aME0jD1UiHHnyBwCj8RFN7AoxM/ZgrTfzqRNxWDo+bRiMLPq6f2Gd6V20U+gNHUXqCPsdhnSrlTLRwtISXQxgxTXF/o0KvSchbF0VrgTCrvZ6jbpZ6Q58rWVwKBgQCwugp/NVE2qV0j11QGdDhbzvzK0wQj0frAIpsiol1ByLXa5Bo838cdZDAVeS4BQlwnC/WrNCq7dk4CEQcKu4Q6geHqzQtZF/153dbbju/aNlo8hYmCID5rBcQSLhYCESH2Xj/N+tAz5I68BYHR1rwEsZpjT3eLmLMRgtEay/McTQKBgDowOQ+OnCxJerLuDsccEyXD+F6DQgd/p/k3Snh1WyfJVpZEXhp7IZlhZBxPEJMbrcSEEVMHCcyplMDYVV+sk2XOuUS5avITB1z5f+dqUsDM6K0kYSQOQ3b/UqeJIiOvFmvkB366yYUZf17acVTuyNjZcbU3B3tn2tsts35VK5/bAoGAW34lexAWWI88GhcbeC/pEZbKhxLR/N1zzM7dtAOM9ka753PaJZPQ2OWKg0N2Ts6VON3XNOhQCzdHUYiRNbw4y7V8SXwYGOrznoj7+DU69aTX+KdFtmmNBwk4JhVX7YADLjJDJBdqfMMiJjNPr1xVgLSV8j4s7MeERVeNfCsEVK0CgYEAvoT24XiwWHQVBNwznJJOslieLntq/MkJVSo4Q9h5HOWu0Qu2627FiGBH83EoqTfAc/Fz5/As4LCYYQZLwXImTT2hqQLlSfBo9UPdtLXP92HjCmtZmDzQIl1P9Yhhld1l5CdQpBLkqWjH12px8Jlb9yEbNvHtBSRQuhDJxV7JuIk=
-----END RSA PRIVATE KEY-----"""

alipay_public_key_string = """-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgCLK/MIs0gsKSk/DqzKwf7F9m8hyGqJM97af5IRkEdVCvFI5U1Y8xZsR8mWj+YhIU9rv48zZn81uJ7OqkkWXc/ENCMqGTiEe4tKPniLibTdpaIgPNn9c3QSa03psvJI8v/n5+0rs+KKXxN8UwLcmMMN5Zfy8Ejvq/rax9EXepxLqSP7xQ8DXHRBCkFHUY6W2vdIKQZFc8wqMqglRjGjfN8OgYwaN2F6TPPPHdoVbpjduEx1RlACItapHNWv21YTr0PYx+edb3Oj+Tjfinzuyb9S0uXDEHOOGeLrerOSJr3rVwDJpFKye6Lojz9H7aV+gki1Mp4W2qykyefYEmkDtYwIDAQAB
-----END PUBLIC KEY-----"""

# 生成alipay對象(完成配置)
alipay = AliPay(
    appid="2016093000631832",
    app_notify_url=None,  # the default notify path
    app_private_key_string=app_private_key_string,
    # alipay public key, do not use your own public key!
    alipay_public_key_string=alipay_public_key_string,
    sign_type="RSA2",  # RSA or RSA2 加密算法
    debug=True  # False by default debug為True是沙箱模式
)

# 生成訂單信息
import time
order_string = alipay.api_alipay_trade_page_pay(
    out_trade_no='%s' % time.time(),#訂單號,這里用時間戳實現,真實環境建議使用其他算法生成
    total_amount=1000000,#支付金額
    subject='小飛機',#訂單名稱
    return_url="http://127.0.0.1:8080",#同步回調的前端url,這里一定要填否則生成的支付鏈接無法正常放問
    notify_url="https://example.com/notify"  # this is optional,#異步回調的后台url鏈接,用於確認支付成功,防止用戶在支付過程中非法更改前端頁面向后端發送虛假支付信息
)

#支付寶網關,去掉dev就是真實支付環境
gateway = 'https://openapi.alipaydev.com/gateway.do'
# 拼接得到支付鏈接,鏈接中的?是必須要加的
pay_url = '%s?%s' % (gateway, order_string)

print(pay_url)

阿里公鑰指的是支付寶公鑰,我們需先在電腦上安裝”支付寶開放平台開發助手“生成”應用私鑰“和”應用公鑰“,然后使用應用公鑰去下圖

點擊“設置/查看”,復制到對應的彈框生成支付寶公鑰,具體如下圖:

測試成功后,我們可以對支付功能封裝成包,以方便之后的使用。

結構

libs
    ├── aliPay  					  # aliapy二次封裝包
    │   ├── __init__.py 				# 包文件
    │   ├── pay.py						# 支付文件
    └── └── settings.py  				# 應用配置  

settings.py

#應用id
APP_ID = "20161017007089"

#是否采用沙箱環境
DEBUG = True

#簽名算法
SIGN = 'RSA2'

#支付寶網關
if DEBUG:
    GATEWAY = 'https://openapi.alipaydev.com/gateway.do?'

else:
    GATEWAY = 'https://openapi.alipay.com/gateway.do?'



# 應用私鑰:首行尾行是固定的,中間是一行私鑰字符串(不能有其他字符,否則報錯)
APP_PRIVATE_KEY_STRING = """-----BEGIN RSA PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCzIlk75nL5bNF/7rm3nGFoxeZM6yoJ1+bK4Gw5FBjUZZxgH0LBzblshlQsYPy1vjvXp+linCYU1K3tv7SdR9VaBEuSBrabsoeAyv/IvWdIfMogUJqSEJcO8tdijJXyyC2E3k1KesTA3wyMnBIfjviemAdp327JdFVxpq2A8zXtKMKr9htf9LPdQQTaMxP65oiKeDn3QElCthZMuMPgwoqYP+ShtyktFCqRqzpm7yXeQurrdAH4XRGtbLJkM2Zg0L3z3PXUAO0k4dEQI5tLJopT9iQgsI+XM74N+EhH7ouFYLyPQoRDFRx4Ln10YqdadTqL+AzfHpYm6S8zPgodHrEfAgMBAAECggEAYj8sgdXaqUIthOUBptp18mjX7sfrvopTYmHD+Wo0VAmGwpFio7iZQhRKhiyLbYJwf87wCc1qdXJQEl1aSgjj0wMYD3bvIGXCO7kaoJaA1xjaIu8SV5oRv3kg+EPy2b1AeecSrQ64aq/qyhOvPO/FG/Z12nNY59SOKE8qSdcadH9CeLr32XgYfNGA5Oah39zAQb5hBhz3/YYbifAzwxHjnDk90ufYwsVJ9FtiNONAc9h48W6X2pWQHTcG4jvK/xxh/GAAyzAhjD+LkJZooEkbIk4X2ZOaRL+6iW4Wcs3IiSyEsYyhZK41QcCtFySb9mnq/OYkD1SPb9P506NRjs2nQQKBgQDsaJ0q6it3aexlQ4+gBPd83at1VYdc+HXxaU5fB+zAzxADOrZJph0H8q5mLlUqLwZR/HqWPxz34z8M+MphbK14NjMJjzDkKyUwzOikWnSB0fiNlf3l3cGmfe6Iow1yypYi6dwhXrnxLIYixdTYExEsoiqgsUOWtwMC+b/VBunk5QKBgQDB+qmO8KFH7MreN9TN4cYFXHimSaY/dZ++q5ujjlNDGr6JoJ/Qd2ylbgGC6YjoqROYsSgwr8DoXta57CkNponwJ73ines8kOPxHN7SxM93XJrGEDqG6JvclSlfO1OnlGjXiZXidJGuzMiOBRc3o+FlGOowfBTIIz1zVdTGtMfBswKBgG5DUOLeO43Dur10aH3DM0drAHiGfs8vF5uUeTg7swIu0ZIgBTuOncXCO/NusswtCK6eqvJ+110LAbJkK8iK7tG9vco8nhodwYfkWrGleue97kbjaXuYFaU44VObcT9UG/iGyORLkUBaeumnCeIJ6p29uVIfu52FGIN/xyhtxBO9AoGAYGYqh3+sFutlcgO6/Mnbt+RZjQIC3Xyd84qi4Sgk1q9ey1SIt3fyBVBi7eUTBdSoiXRY7cEaFCC1g1YKnN8Lo86MPieOtN2oebWIQqROGhpqTE3aWBsXAgsasVnxW9GUPLECTLTzhTP94x5CiIMnyy8Tix7O0Rs6OawI/urubqMCgYEA45vernjpiB0hb/vP6Q1Q4B6L8ulXrCKfVbL3dehmp/hsM8+c80xhwLQInm7b1mWGc66XLggr48r5zYwRGj0ZlGIuFK4emGr4m3dSBJ9vGU8QtL56vLC1sP1BrJO/vnrcWXnFIom6tn01qnmUrnh4vnr+LxelwjjIYdVh+jZweVE=
-----END RSA PRIVATE KEY-----"""

# 阿里公鑰:首行尾行是固定的,中間是一行公鑰字符串(不能有其他字符,否則報錯)
APLIPAY_PUBLIC_KEY_STRING = """-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi2LCKoe5lEntKcmyF7jkPAlxDlUV1k77jHvps4TW3rUR6Ylj74RXmSTd3bCUrUuw/fNl5bnNrd/tiV3wbljwkDP7DFKKiuUCWlQPzEaoqf9mOaWQyT+ov6+8XFK+s/2jpeA5v1XVjz2KCmk8XGswZqG057/gQVX2ZjW8lhp8kobGmY+b17331KyGcAkCIOwcSeu//Pafgqpsk8sjNtOWCXDw1e4WW8GjODXc+ztYk8IPGGxdpXH5038ug41m0+yPioRSOP+pGN76ZLNc9nKImVCw5dGrsW2h2/KvmNvfn0PsjFo34Xs4K2kL4YWshc/89s6yaThi2Ww6Xox9GZ/pgwIDAQAB
-----END PUBLIC KEY-----"""


pay.py

from alipay import AliPay
from .settings import *

alipay = AliPay(
    # 應用ID,可以為真實應用,對應debug設置False,可以為沙箱應用,debug設置True
    appid=APP_ID,
    # 該通知接口一般都設置None
    app_notify_url=None,
    # 應用私鑰
    app_private_key_string=APP_PRIVATE_KEY_STRING,
    # 阿里pay公鑰
    alipay_public_key_string=ALIPAY_PUBLIC_KEY_STRING,
    # 簽名算法,采用RSA2
    sign_type=SIGN,
    # 是否是沙箱環境
    debug=DEBUG
)

__init__.py

from .settings import GATEWAY as alipay_gateway

from .pay import alipay

使用測試:

from libs.aliPay import alipay,alipay_gateway

import time

order_string = alipay.api_alipay_trade_page_pay(
    out_trade_no="%s"%time.time(),
    total_amount=10000,
    subject='test1',
    #前端同步回調鏈接
    return_url="http://127.0.0.1:8080",
    #后端異步回調鏈接
    notify_url="https://example.com/notify" # 可選, 不填則使用默認notify url
)

#支付鏈接
pay_url = alipay_gateway + order_string
print(pay_url)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM