public ZSLPaymentProcessor(CurrencySettings currencySettings, HttpContextBase httpContext, ICheckoutAttributeParser checkoutAttributeParser, ICurrencyService currencyService, IGenericAttributeService genericAttributeService, ILocalizationService localizationService, IOrderTotalCalculationService orderTotalCalculationService, ISettingService settingService, ITaxService taxService, IWebHelper webHelper, ZSLPaymentSettings ZSLPaymentSettings, IOrderProcessingService orderProcessingService, ICustomerService customerService, IWorkContext workContext) { this._currencySettings = currencySettings; this._httpContext = httpContext; this._checkoutAttributeParser = checkoutAttributeParser; this._currencyService = currencyService; this._genericAttributeService = genericAttributeService; this._localizationService = localizationService; this._orderTotalCalculationService = orderTotalCalculationService; this._settingService = settingService; this._taxService = taxService; this._webHelper = webHelper; this._ZSLPaymentSettings = ZSLPaymentSettings; this._orderProcessingService = orderProcessingService; this._customerService = customerService; this._workContext = workContext; }
/// <summary> /// 安装插件 /// </summary> public override void Install() { //settings var settings = new ZSLPaymentSettings { UseSandbox = true, BusinessEmail = "*****@*****.**", PdtToken = "Your PDT token here...", PdtValidateOrderTotal = true, EnableIpn = true, AddressOverride = true, }; _settingService.SaveSetting(settings); //locales this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.AdditionalFee", "Additional fee"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.AdditionalFee.Hint", "Enter additional fee to charge your customers."); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.AdditionalFeePercentage", "Additional fee. Use percentage"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.AdditionalFeePercentage.Hint", "Determines whether to apply a percentage additional fee to the order total. If not enabled, a fixed value is used."); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.AddressOverride", "Address override"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.AddressOverride.Hint", "For people who already have PayPal accounts and whom you already prompted for a shipping address before they choose to pay with PayPal, you can use the entered address instead of the address the person has stored with PayPal."); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.BusinessEmail", "Business Email"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.BusinessEmail.Hint", "Specify your PayPal business email."); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.EnableIpn", "Enable IPN (Instant Payment Notification)"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.EnableIpn.Hint", "Check if IPN is enabled."); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.EnableIpn.Hint2", "Leave blank to use the default IPN handler URL."); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.IpnUrl", "IPN Handler"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.IpnUrl.Hint", "Specify IPN Handler."); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.PassProductNamesAndTotals", "Pass product names and order totals to PayPal"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.PassProductNamesAndTotals.Hint", "Check if product names and order totals should be passed to PayPal."); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.PDTToken", "PDT Identity Token"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.PDTToken.Hint", "Specify PDT identity token"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.PDTValidateOrderTotal", "PDT. Validate order total"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.PDTValidateOrderTotal.Hint", "Check if PDT handler should validate order totals."); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.RedirectionTip", "You will be redirected to PayPal site to complete the order."); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.ReturnFromPayPalWithoutPaymentRedirectsToOrderDetailsPage", "Return to order details page"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.ReturnFromPayPalWithoutPaymentRedirectsToOrderDetailsPage.Hint", "Enable if a customer should be redirected to the order details page when he clicks \"return to store\" link on PayPal site WITHOUT completing a payment"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.UseSandbox", "Use Sandbox"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Fields.UseSandbox.Hint", "Check to enable Sandbox (testing environment)."); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.Instructions", "<p><b>If you're using this gateway ensure that your primary store currency is supported by Paypal.</b><br /><br />To use PDT, you must activate PDT and Auto Return in your PayPal account profile. You must also acquire a PDT identity token, which is used in all PDT communication you send to PayPal. Follow these steps to configure your account for PDT:<br /><br />1. Log in to your PayPal account (click <a href=\"https://www.paypal.com/us/webapps/mpp/referral/paypal-business-account2?partner_id=9JJPJNNPQ7PZ8\" target=\"_blank\">here</a> to create your account).<br />2. Click the Profile subtab.<br />3. Click Website Payment Preferences in the Seller Preferences column.<br />4. Under Auto Return for Website Payments, click the On radio button.<br />5. For the Return URL, enter the URL on your site that will receive the transaction ID posted by PayPal after a customer payment (http://www.yourStore.com/Plugins/PaymentZSL/PDTHandler).<br />6. Under Payment Data Transfer, click the On radio button.<br />7. Click Save.<br />8. Click Website Payment Preferences in the Seller Preferences column.<br />9. Scroll down to the Payment Data Transfer section of the page to view your PDT identity token.<br /><br /><b>Two ways to be able to receive IPN messages (optional):</b><br /><br /><b>The first way is to check 'Enable IPN' below.</b> It will include in the request the url of you IPN handler<br /><br /><b>The second way is to confugure your paypal account to activate this service</b>; follow these steps:<br />1. Log in to your Premier or Business account.<br />2. Click the Profile subtab.<br />3. Click Instant Payment Notification in the Selling Preferences column.<br />4. Click the 'Edit IPN Settings' button to update your settings.<br />5. Select 'Receive IPN messages' (Enabled) and enter the URL of your IPN handler (http://www.yourStore.com/Plugins/PaymentZSL/IPNHandler).<br />6. Click Save, and you should get a message that you have successfully activated IPN.</p>"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.PaymentMethodDescription", "You will be redirected to PayPal site to complete the payment"); this.AddOrUpdatePluginLocaleResource("Plugins.Payments.ZSL.RoundingWarning", "It looks like you have \"ShoppingCartSettings.RoundPricesDuringCalculation\" setting disabled. Keep in mind that this can lead to a discrepancy of the order total amount, as PayPal only rounds to two decimals."); base.Install(); }