四月, 2010 的文章
PHP Windows Live Contact API 联系人导入,管理和编辑
https://lx.azure.microsoft.com/. 申请地址
<appSettings>
<add key=”wll_appid” value=”Your.Application.ID”/>
<add key=”wll_secret” value=”Your.Application.Secret”/>
<add key=”wll_securityalgorithm” value=”wsignin1.0″/>
<add key=”wll_returnurl” value=”http://Your.Server.Host.Name/delauth/sample1/delauth-handler.aspx” />
<add key=”wll_policyurl” value=”http://Your.Server.Host.Name/delauth/sample1/policy.html” />
</appSettings>
key输入.
php代理方式范例:
http://msdn.microsoft.com/en-us/library/cc287663%28v=MSDN.10%29.aspx
niconico SDK 开发包.
http://help.nicovideo.jp/jksdk/
环境需求:
- CPU:
Pentium4 2.0GHz以上
- メモリ:
1.0GB以上
- OS:
Windows XP/Windows Vista/Windows 7
- ランタイム:
Visual C++ 2008 SP1 ランタイム
API详细介绍:
API概要
各APIの大まかな説明です。
Interface
IJKNiCOM
- 主インターフェイスです。 JKNiCOM を使用する際は 本インスタンス が常に存在しなければなりません。
ICommentWindow
- コメントウィンドウ制御用インターフェイスです。
IChannelCollection
- 公式チャンネル一覧取得用インターフェイスです。IEnumerableをサポートしています
IRadioChannelCollection
- ラジオチャンネル一覧取得用インターフェイスです。IEnumerableをサポートしています
IUserChannelCollection
- ユーザーチャンネル一覧取得用インターフェイスです。IEnumerableをサポートしています
IChannel
- チャンネル情報保持用インターフェイスです
Types
TPlayStatus
- 再生状態を示す列挙子です
TNotify
- 通知コードを示す列挙子です
Windows Azure 云计算平台在php上面的方案
http://www.microsoft.com/windowsazure/windowsazure/
php的地址:http://phpazure.codeplex.com/
人工创建magento invoice和Shipping
// load order
$order = Mage::getModel(‘sales/order’)->load($orderId);
// set store and locale according to order store
Mage::app()->setCurrentStore($order->getStoreId());
Mage::app()->getLocale()->emulate($order->getStoreId());
// create invoice and send email
if ($order->canInvoice()) {
$invoice = $order->prepareInvoice();
$invoice->register();
$invoice->setEmailSent(true);
$invoice->save();
$invoice->sendEmail();
}
// create shipment and send email
if ($order->canShip()) {
$shipment = $order->prepareShipment();
$shipment->register();
$shipment->setEmailSent(true);
$shipment->save();
$shipment->sendEmail();
}
// save order
$order->save();
// reset locale
Mage::app()->getLocale()->revert();
外部系统运行magento (整合)
<?php
require_once ‘app/Mage.php’;
umask(0);
/* not Mage::run(); */
Mage::app(‘default’);
// get layout object
$layout = Mage::getSingleton(‘core/layout’);
//get block object
$block = $layout->createBlock(‘catalog/product_ajax’);
/* choose whatever category ID you want */
$block->setCategoryId(3);
$block->setTemplate(‘catalog/product/ajaxevents.phtml’);
echo $block->renderView();
?>
include(‘app/Mage.php’);
Mage::App(‘base’); //might be “default”
$customer = Mage::getModel(‘customer/customer’);
$customer->loadByEmail(‘some@email.address’); /* need a users email address */
$session = Mage::getSingleton(‘customer/session’);
$session->start();
<?php
$mageFilename = ‘app/Mage.php’;
require_once $mageFilename;
umask(0);
Mage::app();
/* Magento uses different sessions for ‘frontend’ and ‘adminhtml’ */
Mage::getSingleton(‘core/session’, array(‘name’=>’frontend’));
// $cart = Mage::getSingleton(‘checkout/cart’)->getItemsCount();
// $cart = Mage::helper(‘checkout/cart’)->getItemsCount();
$cart = Mage::helper(‘checkout/cart’)->getCart()->getItemsCount();
echo ‘cart items count: ‘ . $cart;
?>
require_once ‘app/Mage.php’;
umask(0);
$app = Mage::app(‘default’);
/* Init User Session */
$session = Mage::getSingleton(‘customer/session’, array(‘name’=>’frontend’));
if ($session->isLoggedIn()) {
/* do something if logged in */
} else {
/* do something else if not logged in */
}
magento 外部处理订单
This is a method that we developed to handle custom integration with an inventory management system. This pulls all orders and processes them into an xml feed for processing by the inventory management system. Once it has passed the information it can optionally set each order to closed. Hopefully this helps you.
//External script – Load magento framework
require_once(“../app/Mage.php”);
Mage::app();
/* function for adding new node to xml file */
function Add_NewDocElement($root, $parent, $name, $value){
$parent->appendChild($root->createElement($name))->appendChild($root->createTextNode($value));
}
#creating new xml-document
$dom = new DomDocument(’1.0′);
$dom->xmlStandalone = true;
$orders = $dom->appendChild($dom->createElement(‘ePosimPCOrders’));
#Magento required models
$myCustomer = Mage::getModel(‘customer/customer’);
$ordersMag = Mage::getModel(‘sales/mysql4_order_collection’);
$ordersInfo = Mage::getModel(‘sales/order_item’)->getCollection();
#Optional filters you might want to use – more available operationsin method _getConditionSql in Varien_Data_Collection_Db.
$ordersMag->addFieldToFilter(‘status’,Array(‘eq’=>”complete”)); //Status is “Completed”
#now we will get all order numbers associated
$allIds = $ordersMag->getAllIds();
#create new xml element
foreach($allIds as $thisId){
#this always needs to be inside the loop. otherwise we end up with bad data.
$myOrder = Mage::getModel(‘sales/order’);
$myOrder->load($thisId);
$getIncrement = $myOrder->getData();
$orderID = $getIncrement['increment_id'];
$myOrder->loadByIncrementId($orderID);
$order = $orders->appendChild($dom->createElement(‘Orders’));
$data = $myOrder->getData();
$address = Mage::getModel(‘sales/order_address’)->load($orderID);
#$customer = Mage::getModel(‘customer/customer’)->load($orderID->getCustomerId());
#first i’ll need to handle the multiple address scenario
$streetBA=$myOrder->getBillingAddress()->getStreet();
$streetSA=$myOrder->getShippingAddress()->getStreet();
if ($data['customer_id']){
$customer = “webCust-”.$data['customer_id'];
}else{
$customer = “web-guest”;
}
Add_NewDocElement($dom, $order, ‘idOrder’, $myOrder->getData(‘increment_id’));
Add_NewDocElement($dom, $order, ‘idCustomer’, $customer);
Add_NewDocElement($dom, $order, ‘CustomerPO’, “NO PO”); # can be left blank
Add_NewDocElement($dom, $order, ‘pcOrd_Time’, strftime(“%m-%d-%Y %H:%M%p”,strtotime($data['created_at'])));
Add_NewDocElement($dom, $order, ‘IPAddress’, $myOrder->getData(‘remote_ip’)); #remote_ip
#Add_NewDocElement($dom, $order, ‘lineBreak’, ‘#####################’); #visual debugging
#Billing Information
Add_NewDocElement($dom, $order, ‘customerCompany’, $myOrder->getBillingAddress()->getCompany());
Add_NewDocElement($dom, $order, ‘name’, $myOrder->getBillingAddress()->getFirstname());
Add_NewDocElement($dom, $order, ‘lastName’,$myOrder->getBillingAddress()->getLastname());
Add_NewDocElement($dom, $order, ‘address’, $streetBA[0]);
Add_NewDocElement($dom, $order, ‘address2′, (count($streetBA)==2)?$streetBA[1]:”);
Add_NewDocElement($dom, $order, ‘city’, $myOrder->getBillingAddress()->getCity());
Add_NewDocElement($dom, $order, ‘zip’,$myOrder->getBillingAddress()->getPostcode());
Add_NewDocElement($dom, $order, ‘stateCode’, $myOrder->getBillingAddress()->getRegion());
Add_NewDocElement($dom, $order, ‘countryCode’, $myOrder->getBillingAddress()->getData(‘country_id’));
Add_NewDocElement($dom, $order, ‘phone’, $myOrder->getBillingAddress()->getData(‘telephone’));
Add_NewDocElement($dom, $order, ‘email’, $data['customer_email']);
#Add_NewDocElement($dom, $order, ‘lineBreak’, ‘#####################’); #visual debugging
#now we pull shipping information
Add_NewDocElement($dom, $order, ‘shippingCompany’, $myOrder->getShippingAddress()->getFirstname());
Add_NewDocElement($dom, $order, ‘ShippingFirst’, $myOrder->getShippingAddress()->getFirstname());
Add_NewDocElement($dom, $order, ‘ShippingLast’, $myOrder->getShippingAddress()->getLastname());
Add_NewDocElement($dom, $order, ‘shippingAddress’, $streetBA[0]);
Add_NewDocElement($dom, $order, ‘shippingAddress2′, (count($streetSA)==2)?$streetSA[1]:”);
Add_NewDocElement($dom, $order, ‘shippingCity’, $myOrder->getShippingAddress()->getCity());
Add_NewDocElement($dom, $order, ‘shippingStateCode’, $myOrder->getShippingAddress()->getRegion());
Add_NewDocElement($dom, $order, ‘shippingZip’,$myOrder->getShippingAddress()->getPostcode());
Add_NewDocElement($dom, $order, ‘shippingCountryCode’, $myOrder->getShippingAddress()->getData(‘country_id’));
Add_NewDocElement($dom, $order, ‘pcOrd_ShippingPhone’, $myOrder->getShippingAddress()->getData(‘telephone’));
# get email
Add_NewDocElement($dom, $order, ‘pcOrd_ShippingEmail’, ” );
#start payment info
Add_NewDocElement($dom, $order, ‘Total’, number_format($myOrder->getTotal_paid(), 2, ‘.’, ”));
Add_NewDocElement($dom, $order, ‘SubTotal’, number_format($data['base_subtotal'], 2, ‘.’, ”));
#start tax info
Add_NewDocElement($dom, $order, ‘TaxRate1′, “.0675″);
Add_NewDocElement($dom, $order, ‘TaxRate2′, “0″);
Add_NewDocElement($dom, $order, ‘TaxAmt1′, number_format($data['base_tax_amount'], 2, ‘.’, ”));
Add_NewDocElement($dom, $order, ‘TaxAmt2′, ’0′);
Add_NewDocElement($dom, $order, ‘TotalTaxAmt’, number_format($data['base_tax_amount'], 2, ‘.’, ”));
Add_NewDocElement($dom, $order, ‘cardtype’, $myOrder->getData(‘cc_type’));
Add_NewDocElement($dom, $order, ‘cardnumber’,$myOrder->getData(‘cc_last4′));
Add_NewDocElement($dom, $order, ‘expiration’, $myOrder->getData(‘exp_month’).$myOrder->getData(‘exp_year’));
#Add_NewDocElement($dom, $order, ‘BatchID’, $BatchID); # not required
/* additional info not used
Add_NewDocElement($dom, $order, ‘TotalInvoiceAmount’, $myOrder->getTotal_paid());
Add_NewDocElement($dom, $order, ‘OrderStatus’, $myOrder->getStatus());
Add_NewDocElement($dom, $order, ‘PaymentMethod’,$myOrder->getPayment()->getData(‘method’));
Add_NewDocElement($dom, $order, ‘ShippingCaptured’, $myOrder->getPayment()->getData(‘shipping_captured’));
*/
#$myOrder->setStatus(Mage_Sales_Model_Order::STATE_CLOSED, true);
}
#next, for each order we retreive the specifics.
# first we’ll pull items information
$allIds = $ordersMag->getAllIds();
foreach($allIds as $thisId)
{ $myOrder->load($thisId);
foreach ($myOrder->getItemsCollection() as $item)
{
$order = $orders->appendChild($dom->createElement(‘OrdersItems’));
$data = $item->getOrigData();
Add_NewDocElement($dom, $order, ‘idOrder’, $myOrder->getData(‘increment_id’));
Add_NewDocElement($dom, $order, ‘LineOrder’, ’100′);
Add_NewDocElement($dom, $order, ‘sku’, $data['sku']);
Add_NewDocElement($dom, $order, ‘quantity’, $item->getQtyOrdered());
Add_NewDocElement($dom, $order, ‘unitPrice’, $item->getPrice());
Add_NewDocElement($dom, $order, ‘ns_TransCode’, “S” );//TODO pull all trans types.
Add_NewDocElement($dom, $order, ‘ns_Description’, $item->getName());
Add_NewDocElement($dom, $order, ‘ns_PriceCode’, “A”);
#Add_NewDocElement($dom, $order, ‘TaxCode’, $data['tax_percent']);// we may need this for later.
}
}
# next we’ll pull shipping information
$allIds = $ordersMag->getAllIds();
foreach($allIds as $thisId)
{
$myOrder->load($thisId);
$order = $orders->appendChild($dom->createElement(‘OrdersItems’));
$data = $myOrder->getOrigData();
Add_NewDocElement($dom, $order, ‘idOrder’, $myOrder->getData(‘increment_id’));
Add_NewDocElement($dom, $order, ‘LineOrder’, ’500′); #TODO ask brad about the significance of this.
Add_NewDocElement($dom, $order, ‘quantity’, ’1′);
Add_NewDocElement($dom, $order, ‘unitPrice’, $myOrder->getPayment()->getData(‘shipping_captured’));
Add_NewDocElement($dom, $order, ‘sku’, ‘AxloShipping’);
Add_NewDocElement($dom, $order, ‘ns_TransCode’, “F” );//POSIM specific freight code.
Add_NewDocElement($dom, $order, ‘ns_Description’, ‘per order shipping charge’ );
Add_NewDocElement($dom, $order, ‘ns_PriceCode’, “A”);
#Add_NewDocElement($dom, $order, ‘TaxCode’, $data['tax_percent']);// we may need this for later.
}
}
#now we’ll start the output.
#this method is for debugging. uncomment when testing.
/* $dom->formatOutput = true; ?> <pre> <? echo $dom->saveXML(); ?> </pre> <? */
# this method is for live version. comment out when teting for easier debugging.
$dom->formatOutput = true;
return $dom->saveXML();




