Test PaymentIntent for payment of generic onetime products

This commit is contained in:
PCoder 2020-12-24 20:03:46 +05:30
parent ec1da8fbdf
commit e9c596de66
2 changed files with 33 additions and 13 deletions

View File

@ -291,23 +291,22 @@ class PaymentOrderView(FormView):
payment_intent_response = stripe_utils.get_payment_intent( payment_intent_response = stripe_utils.get_payment_intent(
int(product.get_actual_price() * 100) int(product.get_actual_price() * 100)
) )
if not payment_intent_response.get('response_object'): payment_intent = payment_intent_response.get('response_object')
if not payment_intent:
logger.error("Could not create payment_intent %s" % logger.error("Could not create payment_intent %s" %
str(payment_intent_response)) str(payment_intent_response))
else: else:
logger.debug("*******") logger.debug("payment_intent_obj = %s" %
logger.debug( str(payment_intent))
"payment_intent_obj = %s" %
str(payment_intent_response.get('response_object')))
logger.debug("*******")
context.update({'generic_payment_form': ProductPaymentForm( context.update({'generic_payment_form': ProductPaymentForm(
prefix='generic_payment_form', prefix='generic_payment_form',
initial={'product_name': product.product_name, initial={
'amount': float(product.get_actual_price()), 'product_name': product.product_name,
'recurring': product.product_is_subscription, 'amount': float(product.get_actual_price()),
'description': product.product_description, 'recurring': product.product_is_subscription,
'payment_intent_secret': 'secret_here' 'description': product.product_description,
}, 'payment_intent_secret': payment_intent.client_secret
},
product_id=product.id product_id=product.id
), }) ), })
else: else:

View File

@ -178,7 +178,28 @@ $(document).ready(function () {
} }
var $form_new = $('#payment-form-new'); var $form_new = $('#payment-form-new');
$form_new.submit(payWithStripe_new); $form_new.submit(payWithPaymentIntent);
function payWithPaymentIntent(e) {
e.preventDefault();
stripe.confirmCardPayment(
window.paymentIntentSecret,
{
payment_method: {card: cardNumberElement}
}
).then(function(result) {
if (result.error) {
// Display error.message in your UI.
var errorElement = document.getElementById('card-errors');
errorElement.textContent = result.error.message;
} else {
// The payment has succeeded
// Display a success message
alert("Thanks for the order. Your product will be provisioned " +
"as soon as we receive the payment. Thank you.");
}
});
}
function payWithStripe_new(e) { function payWithStripe_new(e) {
e.preventDefault(); e.preventDefault();