Why am I able to send kovan txns without specifying a chainId? - web3py

Wondering why I'm able to send Kovan txns with a sample txn like this:
tx = {
'nonce': nonce,
'to': account_2,
'value': web3.toWei(0.001, 'ether'),
'gas': 200000,
'gasPrice': web3.toWei('4', 'gwei'),
}
And I'm able to sign and send the txn on the kovan testnet. I thought you had to specify a chainId = 42 in the txn?

Related

I want to get recipient_signing_uri from the Docusign API response but it returns null

Here is the code
public function send(Request $request): object
{
$apiClient = new ApiClient();
$apiClient->getOAuth()->setOAuthBasePath(env('DS_AUTH_SERVER'));
try {
$accessToken = $this->getToken($apiClient);
} catch (\Throwable $th) {
return back()->withError($th->getMessage())->withInput();
}
$userInfo = $apiClient->getUserInfo($accessToken);
$accountInfo = $userInfo[0]->getAccounts();
$apiClient->getConfig()->setHost($accountInfo[0]->getBaseUri() . env('DS_ESIGN_URI_SUFFIX'));
$envelopeDefenition = $this->buildEnvelope($request);
try {
$envelopeApi = new EnvelopesApi($apiClient);
$result = $envelopeApi->createEnvelope($accountInfo[0]->getAccountId(), $envelopeDefenition);
dd($result);
} catch (\Throwable $th) {
return back()->withError($th->getMessage())->withInput();
}
return view('backend.response')->with('result', $result);
}
When I print $result variable it returns a response like this
container: array:8 [
"bulk_envelope_status" => null
"envelope_id" => "b634f8c5-96c5-4a18-947f-59418d8c4e03"
"error_details" => null
"recipient_signing_uri" => null
"recipient_signing_uri_error" => null
"status" => "sent"
"status_date_time" => "2023-02-16T07:24:39.1570000Z"
"uri" => "/envelopes/b634f8`your text`c5-96c5-4a18-947f-59418d8c4e03"
]
I want to get the value of recipient signing uri in response but in my case it returns null
How I can achieve this? Will anyone suggests?
createEnvelope creates the envelope. It does not give you an URL for an embedded recipient view (signing ceremony). In order to get that URL, you need to make an additional call to
EnvelopeViews:createRecipient/
See this page for more info.
Also
$apiClient->getConfig()->setHost($accountInfo[0]->getBaseUri() . env('DS_ESIGN_URI_SUFFIX'));
You are using the first entry in the UserInfo returned data's accountInfo array. That's not a good idea. Instead, look for the entry that is the user's default account.
Or if your application is designed to work with a specific eSign account, then make sure the user has access to that account.
It is very common for DocuSign customers to have access to more than one account.

How to queries in supabase realtime?

Most of the blogs and stacks suggests below database for chat.
message_table
-id
-message
-conversationId
-sender
-receiverId
conversation_table
-id
-conversationId
Now message_table look like this.
So, for the chat screen I subscribe the message table.
final mySubscription = supabase
.from('message_table')
.on(SupabaseEventTypes.all, (payload) {
// Handle realtime payload
})
.subscribe();
if user1 and user2 are chatting, they will get all messages from this table.
So, how to filter this data with specified conversationId in supabase to stop receive the other message of other users and for reduce of bandwidth ?
And Is this database viable ?
You can add eq filter on your realtime listeners like this:
supabase-flutter v1.X
final subscription = supabase.channel('unique_channel').on(
RealtimeListenTypes.postgresChanges,
ChannelFilter(
event: '*',
schema: 'public',
table: 'message_table',
filter: 'conversationId=eq.conv12',
), (payload, [ref]) {
// handle realtime here
}).subscribe();
supabase-flutter v0.X
final subscription = supabase
.from('message_table:conversationId=eq.conv12')
.on(SupabaseEventTypes.all, (payload) {
// Handle realtime payload
})
.subscribe();
You can read more about this feature on the official Supabase documentation here!
Finds all rows whose column satisfies the filter.
var conversationId = yourvalue ;
final mySubscription = supabase
.from('message_table')
.select('message, conversationId, sender , receiverId')
.eq('conversationId', conversationId) // Correct
.on(SupabaseEventTypes.all, (payload) {
// Handle realtime payload
})
.subscribe();

how to change the created by <user> in log to OdooBot when creating a record using odoo external API

I'm trying to create a new lead from external landing page
The code work as expected so far on Odoo 13.0+e-20200524
url = ODOO_URL
db = ODOO_DB
username = ODOO_USERNAME
password = ODOO_PASSWORD
kwargs = {
'name': 'hello world',
}
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db, username, password, {})
print(uid)
models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url))
id = models.execute_kw(db, uid, password, 'crm.lead', 'create', [{
'name': kwargs.get('name'),
'user_id': 1,
}])
print(id)
But the log of the lead showing that my user created that lead (which is properly right)
Change the created user to OdooBot in the view - screenshot
My question is:
How can I change the created user to OdooBot instead of my user?
PS: I already searched around and tried bellow parameters without luck:
'user_login': "OdooBot",
'create_uid': [1],
'write_uid': [1],
uid represent a key role of User to create a record using xmlrpc.
You can change uid and it will log with that User.

There are no available services for the countries you’ve selected" with CarrierService

I am integrating carrier service API for shopify store. I have partner account and also i have created development store. After installed my app in my store and subscribed carrier service. But in store shipping settings page i got an error
There are no available services for the countries you’ve selected
How to overcome this issue?
I have in the settings page:
My Carrier Service 5588680759
Rate adjustment: 0% + $0.00
There are no available services for the countries you’ve selected.
Automatically offering future shipping services when they become available
Screenshot:
how can i implement on Checkout Page?
I had the same problem and i solved it changing the callback url of the carrier service to public on my shopify application, you have to check if the url is accessible for everyone. (sorry for my english)
Shopify Documentation
You have to define Call url in shipment carries
"callback_url"=> base_url().'shipment/rates'
add these in controller or file which you add in call url
$filename = time();
$input = file_get_contents('php://input');
file_put_contents($filename.'-input', $input);
// parse the request
$rates = json_decode($input, true);
// log the array format for easier interpreting
file_put_contents($filename.'-debug', print_r($rates, true));
// total up the cart quantities for simple rate calculations
$quantity = 0;
foreach($rates['rate']['items'] as $item) {
$quantity =+ $item['quantity'];
}
// use number_format because shopify api expects the price to be "25.00" instead of just "25"
// overnight shipping is 5 per item
$overnight_cost = number_format(5, 2, '', '');
// overnight shipping is 1 to 2 days after today
$on_min_date = date('Y-m-d H:i:s O', strtotime('+1 day'));
$on_max_date = date('Y-m-d H:i:s O', strtotime('+2 days'));
// build the array of line items using the prior values
$output = array('rates' => array(
array(
'service_name' => 'Shipment Local',
'service_code' => 'SL',
'total_price' => $overnight_cost,
'currency' => 'PKR',
'min_delivery_date' => $on_min_date,
'max_delivery_date' => $on_max_date
)
));
// encode into a json response
$json_output = json_encode($output);
// log it so we can debug the response
file_put_contents($filename.'-output', $json_output);
// send it back to shopify
print $json_output;
Change According to you needs

PayPal Adaptive Payments - Error 520009 - Account is restricted

Apologies in advance if this is a silly question. I did try digging around, but couldn't find an answer.
I'm trying to set up a chained payment (at the sandbox environment), but am getting error 520009 (Account is restricted). Tried several email addresses, and they all give me this error. The email addresses are not registered with Paypal, but as far as I know this shouldn't be an issue as the adaptive payments module doesn't require the receivers to have Paypal accounts in advance (though they will need accounts to actually get the money, of course).
What am I doing wrong?
I did set the fee payer to EACHRECEIVER (as suggested on some threads), but the error remains.
This is what I get back:
ERROR Code: 520009
ERROR Message: Account someone1#gmail.com is restricted
Here's my code:
// Config
$endpoint = trim("https://svcs.sandbox.paypal.com/AdaptivePayments/Pay");
$API_UserName = "MY_USERNAME_FROM_SANDBOX";
$API_Password = "MY_PASSWORD_FROM_SANDBOX";
$API_Signature = "MY_SIGNATURE_FROM_SANDBOX";
$API_AppID = "APP-80W284485P519543T";
$API_RequestFormat = "NV";
$API_ResponseFormat = "NV";
// Create request payload with minimum required parameters
$bodyparams = array (
"requestEnvelope.errorLanguage" => "en_US",
"actionType" => "PAY_PRIMARY",
"cancelUrl" => 'http://www.beta.com/cancel',
"returnUrl" => 'http://www.beta.com/return',
"currencyCode" => 'USD',
"feesPayer" => "EACHRECEIVER",
"actionType" => "PAY_PRIMARY",
"receiverList.receiver[0].email" => 'someone1#gmail.com',
"receiverList.receiver[0].amount" => '10',
"receiverList.receiver[0].primary" => 'true',
"receiverList.receiver[1].email" => 'someone2#gmail.com',
"receiverList.receiver[1].amount" => '5',
"receiverList.receiver[1].primary" => 'false',
);
// Convert payload array into url encoded query string
$body_data = http_build_query($bodyparams, "", chr(38));
try
{
//create request and add headers
$params = array("http" => array(
"method" => "POST",
"content" => $body_data,
"header" =>
"X-PAYPAL-SECURITY-USERID: " . $API_UserName . "\r\n" .
"X-PAYPAL-SECURITY-SIGNATURE: " . $API_Signature . "\r\n" .
"X-PAYPAL-SECURITY-PASSWORD: " . $API_Password . "\r\n" .
"X-PAYPAL-APPLICATION-ID: " . $API_AppID . "\r\n" .
"X-PAYPAL-REQUEST-DATA-FORMAT: " . $API_RequestFormat . "\r\n" .
"X-PAYPAL-RESPONSE-DATA-FORMAT: " . $API_ResponseFormat . "\r\n"
));
//create stream context
$ctx = stream_context_create($params);
//open the stream and send request
$fp = #fopen($endpoint, "r", false, $ctx);
//get response
$response = stream_get_contents($fp);
//check to see if stream is open
if ($response === false) {
throw new Exception("php error message = " . "$php_errormsg");
}
//close the stream
fclose($fp);
//parse the ap key from the response
$keyArray = explode("&", $response);
foreach ($keyArray as $rVal){
list($qKey, $qVal) = explode ("=", $rVal);
$kArray[$qKey] = $qVal;
}
//print the response to screen for testing purposes
If ( $kArray["responseEnvelope.ack"] == "Success") {
foreach ($kArray as $key =>$value){
echo $key . ": " .$value . "<br/>";
}
}
else {
echo 'ERROR Code: ' . $kArray["error(0).errorId"] . " <br/>";
echo 'ERROR Message: ' . urldecode($kArray["error(0).message"]) . " <br/>";
}
}
catch(Exception $e) {
echo "Message: ||" .$e->getMessage()."||";
}
Thanks!
EDIT: I could solve the problem by removing the "feesPayer" param, which needs to be the default value (i.e., EACHRECEIVER) in case of a unilateral payment.
I'm stuck with this issue, too.
I wonder how I could achieve a "unilateral payment", which is described by PayPal as follows:
You can use the Pay API operation to make unilateral payments under
limited circumstances. A unilateral payment is a payment that is made
to a receiver who does not have a PayPal account. Unilateral payments
can be used with simple or parallel payments that are implicit or
preapproved. Unilateral payments are not designed to be used with
chained payments or payments that require manual approval through the
web flow. When you send a unilateral payment, you send a payment
request that includes an email address for a receiver, and this email
address is not linked to a registered PayPal account. The receiver
receives an email notifying the receiver to create an account and
claim the payment. PayPal holds a payment to a receiver whose email
address is not yet registered or confirmed until the receiver creates
a PayPal account and confirms the email address. If a refund specifies
a receiver whose email address is not yet registered or confirmed, the
payment to the receiver is canceled.
Anyone having an idea what parameter-setting using NVP is required to achieve this without getting ERROR Code: 520009 ERROR Message: Account someone1#gmail.com is restricted
Any hint is highly appreciated!
"but as far as I know this shouldn't be an issue as the adaptive
payments module doesn't require the receivers to have Paypal accounts
in advance "
That's incorrect. For Adaptive Chained Payments, all receivers must have an active and verified Personal, Premier or Business PayPal account.