为微信支付,支付宝支付提供统一接口。做到一次集成即可使用多种支付渠道
此为服务端,随后会提供Android, IOS, JS client SDK.
目前此服务端只能集成在您自己的项目中使用。1.0版本时,会支持作为一个service发布.
[此为开发版本,生产环境使用请仔细审查代码!!!]
欢迎各位有兴趣的同学,参与维护这个开源项目!有意请联系pan.weifeng@live.cn.
欢迎赞助!支付宝: pan.weifeng@live.cn
V0.2.2 2017-07-22 扫码支付使用短连接. 重构了微信支付部分
V0.2.1 2017-07-21 增加扫码支付的支持,目前仅支持模式1
- 增加微信扫码模式2的支持
2,增加支付宝扫码支付的支持
3,支持支付宝新接口
pip install openunipay
(需要基于django 项目部署。随后会提供开箱即用的Docker Image) 此module 需要集成在django 项目中。
1, 在settings.py 里 将openunipay 添加到 install app中
INSTALLED_APPS = (
......
'openunipay',
)
2, 发布 支付宝 和 微信支付支付 异步支付结果通知URL。支付成功后,支付宝和微信支付 在支付成功后会通过此URL通知支付结果
openunipay 已经提供了用于处理支付结果的django view. 你只需配置django URL 将openunipay的view 发布即可。
openuipay 提供了以下三个个view
openuipay.api.views_alipay.process_notify
openuipay.api.views_weixin.process_notify
openuipay.api.views_weixin.process_qr_notify
在你的url.py里
from openunipay.api import views_alipay, views_weixin
urlpatterns = [
url(r'^notify/weixin/$', views_weixin.process_notify), //用户使用微信付款后,微信服务器会调用这个接口。详细流程参看微信支付文档
url(r'^qrnotify/weixin/$', views_weixin.process_qr_notify), //微信扫码支付, 用户扫描二维码后,微信服务器会调用这个接口。详细流程请参考微信扫码支付文档
url(r'^notify/alipay/$', views_alipay.process_notify), //支付宝支付后,支付宝服务器会调用这个接口。详细流程参看支付宝文档
]
3,在settings.py里添加以下配置项
#####支付宝支付配置
ALIPAY = {
'partner':'XXX', //支付宝partner ID
'seller_id':'XXX', //收款方支付宝账号如 pan.weifeng@live.cn
'notify_url':'https://XXX/notify/alipay/', //支付宝异步通知接收URL
'ali_public_key_pem':'PATH to PEM File', //支付宝公钥的PEM文件路径,在支付宝合作伙伴密钥管理中查看(需要使用合作伙伴支付宝公钥)。如何查看,请参看支付宝文档
'rsa_private_key_pem':'PATH to PEM File',//您自己的支付宝账户的私钥的PEM文件路径。如何设置,请参看支付宝文档
'rsa_public_key_pem':'PATH to PEM File',//您自己的支付宝账户的公钥的PEM文件路径。如何设置,请参看支付宝文档
}
#####微信支付配置
WEIXIN = {
'app_id':'XXX', //微信APPID
'app_seckey':'XXX', //微信APP Sec Key
'mch_id':'XXX', //微信商户ID
'mch_seckey':'XXX',//微信商户seckey
'mch_notify_url':'https://XXX/notify/weixin/', //微信支付异步通知接收URL
'clientIp':'',//扫码支付时,会使用这个IP地址发送给微信API, 请设置为您服务器的IP
}
4, 同步数据库
python manage.py migrate --run-syncdb
1,创建订单
from openunipay.paygateway import unipay
from openunipay.models import PAY_WAY_WEIXIN,PAY_WAY_ALI //PAY_WAY_WEIXIN:微信支付 PAY_WAY_ALI:支付宝支付
create_order.create_order(orderno, payway, clientIp, product_desc, product_detail, fee, user=None, attach=None, expire=1440, **kwargs):
此方法会返回支付信息。在APP中发起支付时 需要使用此支付信息。所有数据已经按照微信和支付宝接口要求做了处理。APP无需再次处理。
2, 查寻订单
query_order(orderno)
APP支付成功后,需要调用此接口确认支付。发货流程需要在此方法里处理。
- 生成扫码支付二维码(目前仅支持微信扫码支付模式1)
generate_qr_pay_url(payway, productid)
已经在Admin 里增加了Production Model Admin. 只需要增加商品即可生成支付URL. 然后用URL生成二维码。 你也可以用此方法的链接在服务端生成二维码图片.