Discussions

Ask a Question

Need help with my webhook signature on laravel/PHP

public function test(Request $request){ ``` $signingSecret = 'sk_test_UVzt5mdhyRgoZxK1C7YimXaV'; $header_signature = $request->header('Paymongo_Signature'); $header_signature_res =preg_split("/,/",$header_signature); $header_time_no_equal = preg_split("/=/",$header_signature_res[0]); //contains the time ex: 1716800978 $header_time_no_equal_res = $header_time_no_equal[1]; $header_string_no_equal = preg_split("/=/",$header_signature_res[1]); //contains the test mode signature without the 'te=' ex: 1447a89e7ecebeda32sffs62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd $header_string_no_equal_res = $header_string_no_equal[1]; $payload= $request->getContent(); //concatinated the time and $request->getContent() ex:1716800978{json response data} and the second value is my secret key ex: sk_test_UVzt5mdhyRgoZxK1C7YimXaV $computedSignature = hash_hmac('sha256',$header_time_no_equal_res.$payload, $signingSecret); $signature = hash_equals($header_string_no_equal_res.$header_string_no_equal_res,$computedSignature); if($signature == 1 || $signature == true){ WebhookCall::insert([ 'payload' =>'valid', ]); }else{ WebhookCall::insert([ 'payload' =>'Invalid' ]); } } ``` May I ask you guys how to construc a signature validator in paymongo? when I try running this program, the has_hmac() return value always return 0 instead of true. any help from you guys. Thanks in advance

Securing a Webhook.

I did not understand this part of instruction. Could you elaborate further and provide an example of how the data should be look? <br /> 2. Concatenate the following to create your own signature: a. The timestamp as a string, e.g. 1496734173 b. A . character c. The JSON payload of the request you received. NOTE: You must get the raw payload of the request. Check your programming language or frameworks on how to get the raw payload of an API request.

What should I do if I encounter a 429 error?

Error code: 429

sandbox

how to access the sandbox environment in paymongo and how to use it? can you helpme?

Why is my webhook not working on Livemode?

Webhook is fine when I'm testing it out using TEST API but when I use LIVE API KEYS it does not work?

TypeError: paymongo.paymentMethods.create is not a function

i got this code from paymongo-node sdks github repo. <https://github.com/paymongo/paymongo-node> const paymongo = require('paymongo-node')(process.env.NODE_ENV_PAYMONGO_SECRET); const createPayIntent = async (amount) => { const result = await paymongo.paymentIntents.create({ amount: amount,is not a function payment_method_allowed: ['paymaya', 'gcash'], payment_method_options: {card: {request_three_d_secure: 'any'}}, currency: 'PHP', capture_type: 'automatic', description: 'gcash and paymaya only' }) return result; } this line of code actually works but when i try this. paymongo.paymentMethods.create it does not work. //the code: const createPayMethod = async (name, email, phone, method) => { const result = await paymongo.paymentMethods.create({ billing: {name: name, email: email, phone: phone}, type: method }); return result; } same with paymongo.paymentIntents.attach //the code: const attachPayIntent = async (payIntId, payMetId) => { const result = paymongo.paymentIntents.attach({ payment_method: payMetId, return_url: '<https://www.paymongo.com/academy/the-paymongo-dashboard'> },{id: payIntId}) return result; } it both producess the same error. is not a function please help.

create wallet account

how to create wallet id

Hi I am getting an error. I tested this using the card numbers in Testing.

Fatal error: Uncaught GuzzleHttp\\Exception\\ClientException: Client error: `POST https://api.paymongo.com/v1/payments` resulted in a `400 Bad Request` response: {"errors":\[{"code":"parameter_invalid","detail":"The source.type passed card is invalid.","source":{"pointer":"source.ty (truncated...) in C:\\xampp\\htdocs\\paymongo\\vendor\\guzzlehttp\\guzzle\\src\\Exception\\RequestException.php:113 Stack trace: #0 C:\\xampp\\htdocs\\paymongo\\vendor\\guzzlehttp\\guzzle\\src\\Middleware.php(72): GuzzleHttp\\Exception\\RequestException::create(Object(GuzzleHttp\\Psr7\\Request), Object(GuzzleHttp\\Psr7\\Response), NULL, Array, NULL) #1 C:\\xampp\\htdocs\\paymongo\\vendor\\guzzlehttp\\promises\\src\\Promise.php(209): GuzzleHttp\\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\\Psr7\\Response)) #2 C:\\xampp\\htdocs\\paymongo\\vendor\\guzzlehttp\\promises\\src\\Promise.php(158): GuzzleHttp\\Promise\\Promise::callHandler(1, Object(GuzzleHttp\\Psr7\\Response), NULL) #3 C:\\xampp\\htdocs\\paymongo\\vendor\\guzzlehttp\\promises\\src\\TaskQueue.php(52): GuzzleHttp\\Promise\\Promise::GuzzleHttp\\Promise\{closure}() #4 C:\\xampp\\htdocs\\paymongo\\vendor\\guzzlehttp\\promises\\src\\Promise.php(251): GuzzleHttp\\Promise\\TaskQueue->run(true) #5 C:\\xampp\\htdocs\\paymongo\\vendor\\guzzlehttp\\promises\\src\\Promise.php(227): GuzzleHttp\\Promise\\Promise->invokeWaitFn() #6 C:\\xampp\\htdocs\\paymongo\\vendor\\guzzlehttp\\promises\\src\\Promise.php(272): GuzzleHttp\\Promise\\Promise->waitIfPending() #7 C:\\xampp\\htdocs\\paymongo\\vendor\\guzzlehttp\\promises\\src\\Promise.php(229): GuzzleHttp\\Promise\\Promise->invokeWaitList() #8 C:\\xampp\\htdocs\\paymongo\\vendor\\guzzlehttp\\promises\\src\\Promise.php(69): GuzzleHttp\\Promise\\Promise->waitIfPending() #9 C:\\xampp\\htdocs\\paymongo\\vendor\\guzzlehttp\\guzzle\\src\\Client.php(189): GuzzleHttp\\Promise\\Promise->wait() #10 C:\\xampp\\htdocs\\paymongo\\create_payment.php(100): GuzzleHttp\\Client->request('POST', '<https://api.pay...'>, Array) #11 {main} thrown in C:\\xampp\\htdocs\\paymongo\\vendor\\guzzlehttp\\guzzle\\src\\Exception\\RequestException.php on line 113

Test mode not working in wordpress/woocommerce

I'm getting There are no payment methods available error though I enabled the test environment and setup the keys and tokens.

is there an option to decline foreign cards and only use local cards in the PH.

Adding 1% when customers use cards from other countries is tough for my business. I want to keep my prices low, and that extra 1% might either cost me too much money or make me raise prices, which I really don't want to do.