Example #1
0
        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);
        }