내가 의 asp.net MVC와 페이팔 익스프레스 체크 아웃 (checkout.js의 V4.0.0)를 사용하고 사용자가 데이터 트랜잭션을 지불 할 수 있도록 클릭 확인 지불 버튼을 수행 할 수 있습니다. 익스프레스 체크 아웃 버튼을 클릭 할 때해야 할 일은 데이터베이스에 대한 일부 검사를 수행하고 PayPal이 처리 할 수 있는지 확인하는 것입니다 (데이터베이스가 잠긴 처리 상태 일 수 있으므로 시간과 관련이 있습니다).페이팔 익스프레스 체크 아웃 :
나는 설정에게 Advanced Server Integration을했습니다 그리고 난 다음 paypal.Button.render
에 지불 섹션에서 만들 지불을 컨트롤러를 부르지 만, 이것은 PaymentID
요소와 json
객체가 반환 될 것으로 기대하고있다. 어떤 시점에서 서버 측에서 이러한 점검을 수행하고 PayPal을 계속할 수없는 경우 페이팔 프로세스에서 중단 할 수 있습니까? 검사가 실패하면 서버 측에서도 적절한 오류 페이지 또는 메시지를 반환하여 표시해야합니다.
public async Task<string> PayTransactions()
{
// check if payment is still necessary or end of month is running
var condition = await CheckDatabaseIsUsable();
switch (condition)
{
case 1:
ModelState.AddModelError("error", "some error message");
return RedirectToAction("Index", "Pending");
case 2:
ModelState.AddModelError("error", "some other error");
return RedirectToAction("Index", "Pending");
}
var paypalPayment = FormPayPalPaymentObject();
return JsonConvert.SerializeObject(new { paymentID = paypalPayment.PaymentId });
}
문제는 내가 지금 ActionResult
및 JSON string
반환 형식을 혼합하고 있다는 것입니다 :
<script src="https://www.paypalobjects.com/api/checkout.js"></script>
<script>
paypal.Button.render({
env: 'sandbox',
payment: function (resolve, reject) {
var CREATE_PAYMENT_URL = '@Url.Action("PayTransactions","Pending")';
paypal.request.post(CREATE_PAYMENT_URL)
.then(function (data) { resolve(data.paymentID); })
.catch(function (err) { reject(err); });
},
onAuthorize: function(data) {
var EXECUTE_PAYMENT_URL = 'https://my-store.com/paypal/execute-payment';
paypal.request.post(EXECUTE_PAYMENT_URL,
{
paymentID: data.paymentID,
payerID: data.payerID
})
.then(function(data) { /* Go to a success page */ })
.catch(function (err) { /* Go to an error page */ });
},
onCancel: function (data, actions) {
return actions.redirect();
},
onError: function (err) {
// Show an error page here, when an error occurs
}
}, '#paypal-button');
</script>
지불 섹션이 호출
이 페이팔 버튼 코드입니다.
지금 사용하고있는 코드를 추가 할 기회가 있었지만, mvc 컨트롤러에서'reject (error)'를 호출하여 적절한 오류 메시지가 표시 될지 모르겠습니다. – Ayb4btu