public void Execute(IServiceProvider serviceProvider) { //Extract the tracing service for use in debugging sandboxed plug-ins. ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); // Obtain the execution context from the service provider. IPluginExecutionContext context = (IPluginExecutionContext) serviceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { Entity entity = (Entity)context.InputParameters["Target"]; if (entity.LogicalName == "new_order") { tracingService.Trace("-----------------updating order-----------------"); CRMUtility utility = new CRMUtility(service, s => tracingService.Trace(s)); Money m = entity["new_amount"] as Money; AuthorizeNetOption option = AuthorizeNetOption.LoadFromString(UnsecureConfig); entity["new_token"] = AuthorizeConnector.getToken( option, m.Value.ToString(), s => tracingService.Trace(s) ); } } }
public static string getToken( AuthorizeNetOption option, string amount, Action <string> action) { string token = "fake"; var httpWebRequest = (HttpWebRequest)WebRequest.Create(option.AuthorizeURL); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { //json to object, change value, serize to json AuthorizeRequest request = AuthorizeRequest.CreateBySkelet(); request.getHostedPaymentPageRequest.merchantAuthentication.name = option.ApiLoginId; request.getHostedPaymentPageRequest.merchantAuthentication.transactionKey = option.TransactionKey; request.getHostedPaymentPageRequest.transactionRequest.amount = amount; request.getHostedPaymentPageRequest.hostedPaymentSettings.setting.Add(Setting.Create( "hostedPaymentIFrameCommunicatorUrl", "{\"url\": \"" + option.IFrameUrl + "\"}" )); request.getHostedPaymentPageRequest.hostedPaymentSettings.setting.Add(Setting.Create( "hostedPaymentReturnOptions", "{\"showReceipt\": true, \"url\": \"" + option.SucceedURL + "\", \"urlText\": \"Continue\", \"cancelUrl\": \"" + option.CancelURL + "\", \"cancelUrlText\": \"Cancel Pay\"}" )); request.getHostedPaymentPageRequest.hostedPaymentSettings.setting.Add(Setting.Create( "hostedPaymentOrderOptions", "{\"show\": true, \"merchantName\":\"" + option.MerchantName + "\"}" )); string json = request.ToJson(); streamWriter.Write(json); streamWriter.Flush(); streamWriter.Close(); } var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); AuthorizeResponse response = JObject.Parse(result).ToObject <AuthorizeResponse>(); if (response.messages.resultCode == AuthorizeResponse.RESULT_OK) { token = response.token; } else { action(result); } } action("token is :" + token); return(token); }