Amazon Payment Gateway を .net コア プロジェクトに統合しようとしています。Amazonボタンのクリックから支払いをトリガーするのではなく、必要なクエリパラメーターを使用してURLを形成することにより、ユーザーをリダイレクトする方法があるかどうか疑問に思っています. しかし、残念ながら、Amazon Pay SDK for .net または Amazon Pay 開発者ドキュメントのドキュメントは見つかりませんでした。
public async Task PostRedirectPayment(PaymentTransaction paymentTransaction)
{
var order = await _orderService.GetOrderByGuid(paymentTransaction.OrderGuid);
//create common query parameters for the request
var queryParameters = await CreateQueryParameters(order);
await AddOrderTotalParameters(queryParameters, order);
var Signature=SignParameters(queryParameters, secretKey);
IDictionary<String, String> SortedParameters = new SortedDictionary<String, String>(queryParameters, StringComparer.Ordinal);
SortedParameters.Add("signature", System.Web.HttpUtility.UrlEncode(Signature));
//remove null values from parameters
queryParameters = SortedParameters.Where(parameter => !string.IsNullOrEmpty(parameter.Value))
.ToDictionary(parameter => parameter.Key, parameter => parameter.Value);
//var url = JsonConvert.SerializeObject(SortedParameters);
var url = QueryHelpers.AddQueryString(GetAmazonPayUrl(), queryParameters);
_httpContextAccessor.HttpContext.Response.Redirect(url);
}
private async Task<IDictionary<string, string>> CreateQueryParameters(Order order)
{
//create query parameters
return new Dictionary<string, string>
{
//the character set and character encoding
// ["charset"] = "utf-8",
//set return method to "2" (the customer redirected to the return URL by using the POST method, and all payment variables are included)
//["rm"] = "2",
["accessKey"] = "my access key",
["sellerId"] = "my seller id",
["lwaClientId"] = "my client id",
//PDT, IPN and cancel URL
["return"] = $"{storeLocation}/PDTHandler?custom={order.OrderGuid}",
//["notify_url"] = $"{storeLocation}/IPNHandler",
["cancelReturnURL"] = $"{storeLocation}/CancelOrder",
//order identifier
["sellerOrderId"] = order.OrderNumber.ToString(),
//["custom"] = order.OrderGuid.ToString(),
["sellerNote"]="",
["currencyCode"] = order.CustomerCurrencyCode,
["shippingAddressRequired"]="false",
["paymentAction"]= "AuthorizeAndCapture"
//shipping address, if exists
["no_shipping"] = order.ShippingStatusId == ShippingStatus.ShippingNotRequired ? "1" : "2",
["address_override"] = order.ShippingStatusId == ShippingStatus.ShippingNotRequired ? "0" : "1",
["first_name"] = order.ShippingAddress?.FirstName,
["last_name"] = order.ShippingAddress?.LastName,
["address1"] = order.ShippingAddress?.Address1,
["address2"] = order.ShippingAddress?.Address2,
["city"] = order.ShippingAddress?.City,
["stateOrRegion"] = stateProvince,
["country"] = countryCode,
["postalCode"] = order.ShippingAddress?.ZipPostalCode,
["email"] = order.ShippingAddress?.Email
};
}
同様の方法でペイパルの統合を行うことができます(ペイパルのURLクエリを作成するためにCreateQueryParameters関数を使用しています)。Amazon Pay に対して同様の統合を行うことが可能かどうかを誰かが知っている場合、クエリはどのようにすべきであり、使用する必要がある Amazon Pay エンドポイントは何でしょうか?