市场支付平台
Poundpa的Python项目详细描述
PoundPay使开发人员能够构建有助于 两个用户之间的事务。Poundpay的设计 专门针对这些类型的交易,而不是直接 从客户到企业的付款。简言之,重金就是付款 市场平台。
安装
$ easy_install poundpay
配置
CONFIG = { 'sandbox': { 'developer_sid': 'DV0383d447360511e0bbac00264a09ff3c', 'auth_token': ('c31155b9f944d7aed204bdb2a253fef13b4fdcc6ae15402004' '49cc4526b2381a'), 'api_url': 'https://api-sandbox.poundpay.com' }, 'production': { 'developer_sid': 'DV8dd93f0f3c6411e0863f00264a09ff3c', 'auth_token': ('d8c4ea1bafd3fcac8c1062a72c22bcdb09321deb1041df2571' '65cd6449def0de') } } import poundpay poundpay.configure(**CONFIG['production'])
创建付款
payment = poundpay.Payment( amount=10000, # in usd cents, not dollars payer_fee_amount=0, payer_email_address='fred@example.com', recipient_fee_amount=500, recipient_email_address='david@example.com', description='Beats by Dr. Dre', ).save()
付款方式
list_of_payments = poundpay.Payment.all() payment = poundpay.Payment.find(payment_sid) payment.escrow() # AUTHORIZED -> ESCROWED. Credit card is charged payment.release() # ESCROWED -> RELEASED. Recipient receives money payment.cancel() # ESCROWED -> CANCELED. Payer receives refund
提供支付框架
<script src="https://www.poundpay.com/js/poundpay.js"></script> <div id="pound-root"></div> <script> function handlePaymentSuccess() { // do something } function handlePaymentError() { // handle error } PoundPay.init({ payment_sid: "{{payment.sid}}", success: handlePaymentSuccess, error: handlePaymentError, first_name: "Fred", // Optional last_name: "Nietzsche", // Optional address_street: "990 Guerrero St", // Optional address_city: "San Francisco", // Optional address_state: "California", // Optional address_zip: "94110", // Optional server: "https://www-sandbox.poundpay.com" // Exclude for production }); </script>
创建收费权限
charge_permission = poundpay.ChargePermission( email_address='payer@example.com', ).save()
停用充电权限
charge_permission = poundpay.ChargePermission.find(charge_permission_sid) charge_permission.deactivate()
chargePermission方法
list_of_payments = poundpay.ChargePermission.all() charge_permission = poundpay.ChargePermission.find(charge_permission_sid) charge_permission.deactivate() # CREATED or ACTIVE -> INACTIVE. Charge permission is deactivated and can no longer be used to authorize payments for the associated payer.
提供收费许可iframe
<script src="https://www.poundpay.com/js/poundpay.js"></script> <div id="pound-root"></div> <script> function handleChargePermissionSuccess() { // do something } function handleChargePermissionError() { // handle error } PoundPay.init({ charge_permission_sid: "{{charge_permission.sid}}", success: handleChargePermissionSuccess, error: handleChargePermissionError, name: "Freddy Nietzsche", // Optional address_street: "990 Guerrero St", // Optional address_city: "San Francisco", // Optional address_state: "California", // Optional address_zip: "94110", // Optional server: "https://www-sandbox.poundpay.com" // Exclude for production }); </script>
配料
在某些情况下,您可能希望批量授权和托管 付款。这样一来,该托收将只需one付款人费用 支付。请注意,如果您确实批量授权了 它还必须成批托管。
批处理是为购物车而设计的,在购物车中您希望收集付款 显示为单个电荷。
为了使用批处理,您只需将sids
的all付款传入
要批处理到iframe的集合:
<script src="https://www.poundpay.com/js/poundpay.js"></script> <div id="pound-root"></div> <script> function handlePaymentSuccess() { // do something } function handlePaymentError() { // handle error } PoundPay.init({ payment_sid: [ "{{payment1.sid}}" "{{payment2.sid}}", "{{payment3.sid}}" ], success: handlePaymentSuccess, error: handlePaymentError, first_name: "Fred", // Optional last_name: "Nietzsche", // Optional address_street: "990 Guerrero St", // Optional address_city: "San Francisco", // Optional address_state: "California", // Optional address_zip: "94110", // Optional server: "https://www-sandbox.poundpay.com" // Exclude for production }); </script>
或者,如果您直接授权使用费用付款 权限:
Payments.batch_update( payment1.sid, payment2.sid, payment3.sid, status='AUTHORIZED')
最后,您需要批量托管付款:
Payments.batch_update( payment1.sid, payment2.sid, payment3.sid, status='ESCROWED')
请注意,如果您改为执行以下操作,则会触发一个错误,因为 批量支付必须被授权并集体托管:
Payments.find(payment1.sid, status='ESCROWED').save() # fails
但是,如果你在批量托管之前取消了一些付款,你应该 从批处理调用中排除它们:
Payments.find(payment1.sid, status='CANCEL').save() # ok Payments.batch_update( payment2.sid, payment3.sid, status='ESCROWED')