لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 05/07/16 في كل الموقع
-
هذه السلسلة عبارة عن ترجمة لكتاب Dive Into HTML5 لمؤلفه Mark Pilgrim والتي سنتعلم من خلالها أساسيات HTML5 وكيفية الإنتقال إليها من نسخ HTML أقدم مع مراعاة دعم المتصفحات المختلفة. قبل البدء باستخدام HTML5 سنتطرق في هذا الدرس الأول إلى خمسة أشياء عليك معرفتها حول HTML5. 1. HTML5 ليست شيئا واحدا كبيرا ربما تتساءل: "كيف يمكنني البدء باستعمال HTML5 إن لم تكن تدعمها المتصفحات القديمة؟" لكن السؤال نفسه سيُضلِّلُكَ، HTML5 ليست شيئًا واحدًا كبيرًا، وإنما مجموعة من الميزات المنفصلة عن بعضها، أي أنَّك لن تحاول اكتشاف "دعم HTML5" في المتصفح، لأن ذلك غير منطقي؛ وإنما يمكنك اكتشاف الدعم للمزايا المختلفة مثل التخزين المحلي، أو عرض الفيديو، أو الحصول على الموقع الجغرافي. ربما تظن أنَّ HTML هي مجموعة من الوسوم وتلك الأقواس التي تشبه الزاوية… إن هذا جزءٌ مهمٌ منها، لكنه لا يمثلها كلها. إذ تُعرِّف مواصفات HTML5 كيف تتفاعل تلك الوسوم مع لغة JavaScript وذلك عبر ما يُعرَف بالمصطلح "DOM" (اختصار للعبارة Document Object Model). فلا تُعرِّف HTML وسمًا باسم <video> فقط، وإنما هنالك واجهة برمجية للتعامل مع كائنات الفيديو عبر DOM. يمكنك استعمال تلك الواجهة البرمجية (أي API) لكي تكتشف الدعم لمختلف صيغ الفيديو، ولكي تبدأ المقطع أو توقفه مؤقتًا، أو أن تكتم صوته، أو أن تعرف ما هو المقدار الذي نُزِّل (downloaded) من الفيديو، وكل شيءٍ آخر يلزمك لبناء تجربة مستخدم رائعة عند استعمال وسم <video> لعرض المقاطع. 2. ليس عليك التخلي عن كل شيء شئت أم أبيت، لا تستطيع أن تنكر أنَّ HTML 4 هي أنجح لغة توصيف (markup) على الإطلاق. بُنيَت HTML5 على هذا النجاح، وليس عليك أن تتخلى عن الشيفرات التي كتبتها، وليس عليك إعادة تعلم أشياء تعرفها من قبل، فإن كان تطبيقك يعمل البارحة باستخدام HTML 4، فسيبقى يعمل اليوم في عصر HTML5. لكن إن أتيت لتحسين تطبيق الويب الخاص بك، فقد أتيت إلى المكان الصحيح. هذا مثالٌ واقعي: تدعم HTML5 كل عناصر النماذج (forms) في HTML 4، لكنها تتضمن عناصر جديدة أخرى. كنا ننتظر إضافة بعض تلك العناصر بفارغ الصبر، مثل المزلاج (slider) ومنتقي التاريخ (date picker)؛ بعضها الآخر ذو ميزاتٍ خفية. فحقل email مثَلَهُ كمَثَلِ حقل الإدخال النصي العادي، إلا أنَّ متصفحات الهواتف الذكية ستخصص لوحة المفاتيح الظاهرة على الشاشة لتسهيل كتابة عناوين البريد الإلكتروني. بعض المتصفحات القديمة لا تدعم حقل email وستعامله على أنَّه حقل نصي عادي، وسيبقى النموذج يعمل دون تعديلات في الشيفرة أو استخدام أساليب ملتوية عبر JavaScript. هذا يعني أنك تستطيع تحسين النماذج في صفحاتك اليوم، حتى لو كان زوارك يستعملون IE 6. 3. من السهل البدء باستعمالها يمكن أن يكون "التحديث" إلى HTML5 بسيطًا لدرجة أنَّ كل ما عليك فعله هو تعديل doctype، الذي يجب أن يكون أول سطر من كل صفحة HTML. تُعرِّف الإصدارات السابقة من HTML الكثير من أنواع doctype، وكان من الصعب اختيار النوع المناسب؛ لكن هنالك نوع doctype وحيد في HTML5: <!DOCTYPE html> لن يضر التحديث إلى نمط doctype في HTML5 شيفراتك المكتوبة، لأنَّ جميع الوسوم (tags) المُعرَّفة في HTML 4 ما تزال مدعومةً في HTML5، لكنها ستسمح لك باستعمال –والتحقق من صحة صياغة– العناصر التنظيمية الجديدة مثل <article> و <section> و <header> و <footer>، سنتحدّث عن هذه العناصر الجديدة في مقال قادم. 4. إنها تعمل بالفعل سواءً كنت تريد الرسم عبر canvas، أو تشغيل مقطع فيديو، أو تصميم نماذج أفضل، أو بناء تطبيقات ويب تعمل دون اتصال؛ فستجد أنَّ HTML5 مدعومةً دعمًا جيدًا، حيث يوجد دعمٌ لخاصية canvas في Firefox و Safari و Chrome و Opera ومتصفحات الهواتف الذكية وتشغيل الفيديو وتحديد المواقع والتخزين المحلي والمزيد. تدعم غوغل (في متصفحها) البيانات الوصفية الخاصة (microdata)، وحتى مايكروسوفت –المشهورة بتأخرها عن اللحاق بركب دعم المعايير القياسية– تدعم أغلبية ميزات HTML5 في متصفح "Internet Explorer 9". يتضمن كل درس من هذه السلسلة جداول لتوافقية المتصفحات الشهيرة للميزة المشروحة، ولكن الأهم من ذلك أنَّ كل درس يتضمن نقاشًا عن خياراتك إن كنت تحتاج إلى دعم المتصفحات القديمة. تم توفير ميزات في HTML5 مثل تحديد الموقع الجغرافي وتشغيل الفيديو في السابق عبر إضافات للمتصفح مثل Gears أو Flash. الميزات الأخرى، مثل canvas، تستطيع محاكاتها بشكلٍ تام باستعمال JavaScript. ستتعلم من خلال هذه السّلسلة (التي تقرأ الآن درسها الأول) كيف تستهدف المتصفحات ذات الدعم المدمج لتلك الميزات، دون أن تترك خلفك المتصفحات القديمة. 5. HTML5 ستبقى وستتطور اخترع "Tim Berners-Lee" الشبكة العنكبوتية في بدايات التسعينات من القرن الماضي، ثم أنشَأ جمعية W3C لكي تكون المرجع في معايير الويب، وهذا ما فعلته تلك الجمعية لأكثر من 20 عامًا. هذا ما قالته W3C عن مستقبل معايير الويب في تموز/يوليو عام 2009: ستبقى HTML5 في المستقبل، لنبدأ بتعلمها. ترجمة -وبتصرّف- لفصل Introduction من كتاب Dive Into HTML5 لمؤلفه Mark Pilgrim. اقرأ أيضًا المقال التالي: نظرة على تاريخ HTML - الجزء الأول النسخة الكاملة من كتاب نحو فهم أعمق لتقنيات HTML51 نقطة
-
كما تعلم تعتمد html على عدة وسوم ، تختلف كل منها حسب حاجة المبرمج، لذا وجب علينا احترام البنية المبنية بها الصفحة ليتم التفاعل مع مختلف مكوناتها عبر css أو jquery، حيث أن هذه الأخيرةjquery- هي من ستساعدنا على إنشاء SlideShow أو شرائح منزلقة، وذلك بكتابة كودHtmlالتالي: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Sliding-enabled slideshow using jQuery | Script Tutorials</title> <meta name="description" content="Sliding-enabled slideshow using jQuery demo - Script Tutorials"> <!-- include to stylesheet --> <link rel="stylesheet" href="css/style.css" type="text/css" /> <!-- include jQuery library and other javascripts --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script src="js/jquery.scrollTo.js"></script> <script src="js/jquery.localscroll.js"></script> <script src="js/custom-scripts.js"></script> </head> <body> <div id="slideshow"> <!-- List of slider images --> <ul> <li id="slide1"><img src="images/slide1.jpg" alt="Slide 1" /></li> <li id="slide2"><img src="images/slide2.jpg" alt="Slide 2" /></li> <li id="slide3"><img src="images/slide3.jpg" alt="Slide 3" /></li> <li id="slide4"><img src="images/slide4.jpg" alt="Slide 4" /></li> <li id="slide5"><img src="images/slide5.jpg" alt="Slide 5" /></li> </ul> </div> <div id="slideshow-nav"> <!-- Navigation list of slider images --> <ul> <li><a href="#slide1">Slide 1</a></li> <li><a href="#slide2">Slide 2</a></li> <li><a href="#slide3">Slide 3</a></li> <li><a href="#slide4">Slide 4</a></li> <li><a href="#slide5">Slide 5</a></li> </ul> </div> </body> </html> ثم ملف css المُنظم لشكل ظهور مختلف العناصر الموجودة في الصفحة: css/style.css #slideshow {/*slider container css*/ width: 800px; height: 400px; overflow: hidden; margin: 50px auto 50px auto; box-shadow: 0px 0px 50px #333; -moz-box-shadow: 0px 0px 50px #333; -webkit-box-shadow: 0px 0px 50px #333; } #slideshow ul {/*manage slider scroll elements css*/ width: 4000px; list-style: none; } #slideshow ul li { float: left; } إضافة بعض التأثيرات -ملف css-: #slideshow-nav {/* Slider navigation container css */ width: 150px; margin: 0 auto 100px auto; } #slideshow-nav ul { list-style: none; } #slideshow-nav ul li { float: left; } #slideshow-nav ul li a {/* navigation styling css */ display: block; width: 20px; height: 20px; float: left; margin: 0 5px; background: #fff; text-indent: -9999px; border-radius: 50%; -webkit-border-radius: 50%; box-shadow: 0px 0px 30px #000; -webkit-box-shadow: 0px 0px 30px #000; } #slideshow-nav ul li a:hover, #slideshow-nav ul li a.active { /* hover and active navigation css */ background: #333; } بعد ربط ملف Html بسكريبت javascript، في ملف : js/custom-scripts.js نقوم بكتابة الكود : $(document).ready(function() { var slider = $("#slideshow"); var slider_nav = $("#slideshow-nav"); slider_nav.find("a[href=#slide1]").addClass("active"); slider_nav.localScroll({ target:'#slideshow', axis: 'x' }); slider_nav.find("a").click(function(){ slider_nav.find("a").removeClass("active"); $(this).addClass("active"); }); }); رابط المثال. المصدر: كيفيَّة إنشاء عرض شرائح قابل للتَّحريك باستخدام jQuery1 نقطة
-
تمكنك برمجة تطبيقات اندرويد من مشاركة وإرسال محتوى معين مع تطبيق آخر، سواء أكان المحتوى نص، صور أو أي محتور آخر, ويُستعمل الكود التالي لارسال قطعة نص لتطبيق آخر: Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); sendIntent.setType("text/plain"); startActivity(sendIntent); لإرسال محتور Binary (صورة، فيديو...): Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage); shareIntent.setType("image/jpeg"); startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to))); في حال كنت تريد إرسال عدة مكونات دفعة واحدة: ArrayList<Uri> imageUris = new ArrayList<Uri>(); imageUris.add(imageUri1); // Add your image URIs here imageUris.add(imageUri2); Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE); shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris); shareIntent.setType("image/*"); startActivity(Intent.createChooser(shareIntent, "Share images to..")); بالنسبة لاستقبال محتوى مبعوث من تطبيقات أخرى، ماعليك سوى : تغيير كود Manifest: <activity android:name=".ui.MyActivity" > <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND_MULTIPLE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter> </activity> استقبال المحتوى المُرسَل: void onCreate (Bundle savedInstanceState) { ... // Get intent, action and MIME type Intent intent = getIntent(); String action = intent.getAction(); String type = intent.getType(); if (Intent.ACTION_SEND.equals(action) && type != null) { if ("text/plain".equals(type)) { handleSendText(intent); // Handle text being sent } else if (type.startsWith("image/")) { handleSendImage(intent); // Handle single image being sent } } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) { if (type.startsWith("image/")) { handleSendMultipleImages(intent); // Handle multiple images being sent } } else { // Handle other intents, such as being started from the home screen } ... } void handleSendText(Intent intent) { String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT); if (sharedText != null) { // Update UI to reflect text being shared } } void handleSendImage(Intent intent) { Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM); if (imageUri != null) { // Update UI to reflect image being shared } } void handleSendMultipleImages(Intent intent) { ArrayList<Uri> imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); if (imageUris != null) { // Update UI to reflect multiple images being shared } } أيضا يمكن مشاركة المحتوى من خلال : Sharing Data و Sharing Files with NFC.1 نقطة
-
إن قرار التفويض ينتج عادة عن وجود الكثير من الأعمال والمهام التي تفوق استطاعة والوقت المتاح لصاحب العمل ولكن لايمكننا ببساطة تفويض أي عمل لمجرد أن وقتنا لا يتسع له. بالاضافة للاعمال الروتينية يمكن تفويض المهام المستعجلة التي يستطيع الاخرين القيام بها بسهولة وأيضاً المهام التي تثير اهتمام الاخرين وتوفر للمُفَوض فرصة لتطوير مهاراته وتعلم الجديد وأي مهمة أخرى شرط أن يكون التنفيذ تحت اشرافك ومتابعتك وألاتكون من صلب مسؤولياتك مثل التخطيط أو اتخاذ القرارات فهذه أعمال يجب أن تحتفظ فيها لنفسك كريادي أعمال. عموماً التفويض أداة فعالة في إدارة العمل بشرط معرفة ماذا ومتى ولمن نُفوض.1 نقطة
-
مرحبا، المشكلة تحدث لأنّ pip لا يمتلك صلاحيات للوصول إلى ملفّات النّظام، لذلك عليك فتح برنامج cmd كمُدير النّظام. ادخل إلى قائمة "ابدأ" واكتب cmd، انقر على الزرّ الأيمن للفأرة واختر " Open as administrator". بعدها سيعمل pip بشكل جيّد.1 نقطة
-
كلامك صحيح أخي محمد. ولكن هذا الأمر يتطلّب أيضًا تراكم خبرة عدة سنوات كي تستطبع تقديم مثل هذه التصاميم الاحترافية وجني هذا المقدار من المال.1 نقطة
-
كنت قد استفدت من هذا الكود، والذي يتوفر على 2 كلاسات. الأولة من أجل جلب Id الخاص بـ Paypal وبالتالي استعماله في التطبيق: public class ResultDelegate implements PayPalResultDelegate, Serializable { private static final long serialVersionUID = 10001L; public void onPaymentSucceeded(String payKey, String paymentStatus) { main.resultTitle = "SUCCESS"; main.resultInfo = "You have successfully completed your transaction."; main.resultExtra = "Key: " + payKey; } public void onPaymentFailed(String paymentStatus, String correlationID, String payKey, String errorID, String errorMessage) { main.resultTitle = "FAILURE"; main.resultInfo = errorMessage; main.resultExtra = "Error ID: " + errorID + "\nCorrelation ID: " + correlationID + "\nPay Key: " + payKey; } public void onPaymentCanceled(String paymentStatus) { main.resultTitle = "CANCELED"; main.resultInfo = "The transaction has been cancelled."; main.resultExtra = ""; } ملف Main class: public class main extends Activity implements OnClickListener { // The PayPal server to be used - can also be ENV_NONE and ENV_LIVE private static final int server = PayPal.ENV_LIVE; // The ID of your application that you received from PayPal private static final String appID = "APP-0N8000046V443613X"; // This is passed in for the startActivityForResult() android function, the value used is up to you private static final int request = 1; public static final String build = "10.12.09.8053"; protected static final int INITIALIZE_SUCCESS = 0; protected static final int INITIALIZE_FAILURE = 1; TextView labelSimplePayment; LinearLayout layoutSimplePayment; CheckoutButton launchSimplePayment; Button exitApp; TextView title; TextView info; TextView extra; TextView labelKey; TextView appVersion; EditText enterPreapprovalKey; public static String resultTitle; public static String resultInfo; public static String resultExtra; private String isuename; private String isueprice; Handler hRefresh = new Handler(){ @Override public void handleMessage(Message msg) { switch(msg.what){ case INITIALIZE_SUCCESS: setupButtons(); break; case INITIALIZE_FAILURE: showFailure(); break; } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); Thread libraryInitializationThread = new Thread() { @Override public void run() { initLibrary(); // The library is initialized so let's create our CheckoutButton and update the UI. if (PayPal.getInstance().isLibraryInitialized()) { hRefresh.sendEmptyMessage(INITIALIZE_SUCCESS); } else { hRefresh.sendEmptyMessage(INITIALIZE_FAILURE); } } }; libraryInitializationThread.start(); isuename=getIntent().getStringExtra("name").trim(); isueprice=getIntent().getStringExtra("price").replace("$", "").trim(); Log.v("isuename ",""+isuename); Log.v("isueprice ",""+isueprice); LinearLayout content = new LinearLayout(this); content.setLayoutParams(new LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT, android.view.ViewGroup.LayoutParams.FILL_PARENT)); content.setGravity(Gravity.CENTER_HORIZONTAL); content.setOrientation(LinearLayout.VERTICAL); content.setPadding(10, 10, 10, 10); content.setBackgroundColor(Color.WHITE); layoutSimplePayment = new LinearLayout(this); layoutSimplePayment.setLayoutParams(new LayoutParams(android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT)); layoutSimplePayment.setGravity(Gravity.CENTER_HORIZONTAL); layoutSimplePayment.setOrientation(LinearLayout.VERTICAL); layoutSimplePayment.setPadding(0, 5, 0, 5); labelSimplePayment = new TextView(this); labelSimplePayment.setGravity(Gravity.CENTER_HORIZONTAL); labelSimplePayment.setText("C&EN"); labelSimplePayment.setTextColor(Color.RED); labelSimplePayment.setTextSize(45.0f); layoutSimplePayment.addView(labelSimplePayment); // labelSimplePayment.setVisibility(View.GONE); content.addView(layoutSimplePayment); LinearLayout layoutKey = new LinearLayout(this); layoutKey.setLayoutParams(new LayoutParams(android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT)); layoutKey.setGravity(Gravity.CENTER_HORIZONTAL); layoutKey.setOrientation(LinearLayout.VERTICAL); layoutKey.setPadding(0, 1, 0, 5); enterPreapprovalKey = new EditText(this); enterPreapprovalKey.setLayoutParams(new LayoutParams(200, 45)); enterPreapprovalKey.setGravity(Gravity.CENTER); enterPreapprovalKey.setSingleLine(true); enterPreapprovalKey.setHint("Enter PA Key"); layoutKey.addView(enterPreapprovalKey); enterPreapprovalKey.setVisibility(View.GONE); labelKey = new TextView(this); labelKey.setGravity(Gravity.CENTER_HORIZONTAL); labelKey.setPadding(0, -5, 0, 0); labelKey.setText("(Required for Preapproval)"); layoutKey.addView(labelKey); labelKey.setVisibility(View.GONE); content.addView(layoutKey); title = new TextView(this); title.setLayoutParams(new LinearLayout.LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT)); title.setPadding(0, 5, 0, 5); title.setGravity(Gravity.CENTER_HORIZONTAL); title.setTextSize(30.0f); title.setVisibility(View.GONE); content.addView(title); info = new TextView(this); info.setLayoutParams(new LinearLayout.LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT)); info.setPadding(0, 5, 0, 5); info.setGravity(Gravity.CENTER_HORIZONTAL); info.setTextSize(20.0f); info.setVisibility(View.VISIBLE); info.setText("Please Wait! Initializing Paypal..."); info.setTextColor(Color.BLACK); content.addView(info); extra = new TextView(this); extra.setLayoutParams(new LinearLayout.LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT)); extra.setPadding(0, 5, 0, 5); extra.setGravity(Gravity.CENTER_HORIZONTAL); extra.setTextSize(12.0f); extra.setVisibility(View.GONE); content.addView(extra); LinearLayout layoutExit = new LinearLayout(this); layoutExit.setLayoutParams(new LayoutParams(android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT)); layoutExit.setGravity(Gravity.CENTER_HORIZONTAL); layoutExit.setOrientation(LinearLayout.VERTICAL); layoutExit.setPadding(0, 15, 0, 5); exitApp = new Button(this); exitApp.setLayoutParams(new LayoutParams(200, android.view.ViewGroup.LayoutParams.WRAP_CONTENT)); //Semi mimic PP button sizes exitApp.setOnClickListener(this); exitApp.setText("Exit"); layoutExit.addView(exitApp); content.addView(layoutExit); appVersion = new TextView(this); appVersion.setGravity(Gravity.CENTER_HORIZONTAL); appVersion.setPadding(0, -5, 0, 0); appVersion.setText("\n\nSimple Demo Build " + build + "\nMPL Library Build " + PayPal.getBuild()); content.addView(appVersion); appVersion.setVisibility(View.GONE); setContentView(content); } public void setupButtons() { PayPal pp = PayPal.getInstance(); // Get the CheckoutButton. There are five different sizes. The text on the button can either be of type TEXT_PAY or TEXT_DONATE. launchSimplePayment = pp.getCheckoutButton(this, PayPal.BUTTON_194x37, CheckoutButton.TEXT_PAY); // You'll need to have an OnClickListener for the CheckoutButton. For this application, MPL_Example implements OnClickListener and we // have the onClick() method below. launchSimplePayment.setOnClickListener(this); // The CheckoutButton is an android LinearLayout so we can add it to our display like any other View. layoutSimplePayment.addView(launchSimplePayment); // Get the CheckoutButton. There are five different sizes. The text on the button can either be of type TEXT_PAY or TEXT_DONATE. // Show our labels and the preapproval EditText. labelSimplePayment.setVisibility(View.VISIBLE); info.setText(""); info.setVisibility(View.GONE); } public void showFailure() { title.setText("FAILURE"); info.setText("Could not initialize the PayPal library."); title.setVisibility(View.VISIBLE); info.setVisibility(View.VISIBLE); } private void initLibrary() { PayPal pp = PayPal.getInstance(); if(pp == null) { pp = PayPal.initWithAppID(this, appID, server); pp.setLanguage("en_US"); // Sets the language for the library. pp.setFeesPayer(PayPal.FEEPAYER_EACHRECEIVER); // Set to true if the transaction will require shipping. pp.setShippingEnabled(true); // Dynamic Amount Calculation allows you to set tax and shipping amounts based on the user's shipping address. Shipping must be // enabled for Dynamic Amount Calculation. This also requires you to create a class that implements PaymentAdjuster and Serializable. pp.setDynamicAmountCalculationEnabled(false); // -- } } private PayPalPayment exampleSimplePayment() { // Create a basic PayPalPayment. PayPalPayment payment = new PayPalPayment(); // Sets the currency type for this payment. payment.setCurrencyType("USD"); // Sets the recipient for the payment. This can also be a phone number. payment.setRecipient("harshd_1312435282_per@gmail.com"); // Sets the amount of the payment, not including tax and shipping amounts. payment.setSubtotal(new BigDecimal(isueprice)); // Sets the payment type. This can be PAYMENT_TYPE_GOODS, PAYMENT_TYPE_SERVICE, PAYMENT_TYPE_PERSONAL, or PAYMENT_TYPE_NONE. payment.setPaymentType(PayPal.PAYMENT_TYPE_GOODS); // PayPalInvoiceData can contain tax and shipping amounts. It also contains an ArrayList of PayPalInvoiceItem which can // be filled out. These are not required for any transaction. PayPalInvoiceData invoice = new PayPalInvoiceData(); // Sets the tax amount. invoice.setTax(new BigDecimal("0")); // Sets the shipping amount. invoice.setShipping(new BigDecimal("0")); // PayPalInvoiceItem has several parameters available to it. None of these parameters is required. PayPalInvoiceItem item1 = new PayPalInvoiceItem(); // Sets the name of the item. item1.setName(isuename); // Sets the ID. This is any ID that you would like to have associated with the item. item1.setID("87239"); // Sets the total price which should be (quantity * unit price). The total prices of all PayPalInvoiceItem should add up // to less than or equal the subtotal of the payment. /* item1.setTotalPrice(new BigDecimal("2.99")); // Sets the unit price. item1.setUnitPrice(new BigDecimal("2.00")); // Sets the quantity. item1.setQuantity(3);*/ // Add the PayPalInvoiceItem to the PayPalInvoiceData. Alternatively, you can create an ArrayList<PayPalInvoiceItem> // and pass it to the PayPalInvoiceData function setInvoiceItems(). invoice.getInvoiceItems().add(item1); // Create and add another PayPalInvoiceItem to add to the PayPalInvoiceData. /*PayPalInvoiceItem item2 = new PayPalInvoiceItem(); item2.setName("Well Wishes"); item2.setID("56691"); item2.setTotalPrice(new BigDecimal("2.25")); item2.setUnitPrice(new BigDecimal("0.25")); item2.setQuantity(9); invoice.getInvoiceItems().add(item2);*/ // Sets the PayPalPayment invoice data. payment.setInvoiceData(invoice); // Sets the merchant name. This is the name of your Application or Company. payment.setMerchantName("C&EN"); // Sets the description of the payment. payment.setDescription("simple payment"); // Sets the Custom ID. This is any ID that you would like to have associated with the payment. payment.setCustomID("8873482296"); // Sets the Instant Payment Notification url. This url will be hit by the PayPal server upon completion of the payment. //payment.setIpnUrl("http://www.exampleapp.com/ipn"); // Sets the memo. This memo will be part of the notification sent by PayPal to the necessary parties. payment.setMemo("Hi! I'm making a memo for a payment."); return payment; } @Override public void onClick(View v) { if(v == launchSimplePayment) { // Use our helper function to create the simple payment. PayPalPayment payment = exampleSimplePayment(); // Use checkout to create our Intent. Intent checkoutIntent = PayPal.getInstance().checkout(payment, this, new ResultDelegate()); // Use the android's startActivityForResult() and pass in our Intent. This will start the library. startActivityForResult(checkoutIntent, request); } else if(v == exitApp) { Intent in = new Intent(); in.putExtra("payment", "unpaid"); /*in.putExtra("condition", "false");*/ setResult(1,in);//Here I am Setting the Requestcode 1, you can put according to your requirement finish(); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode != request) return; if(main.resultTitle=="SUCCESS"){ Intent in = new Intent(); in.putExtra("payment", "paid"); setResult(22,in); }else if(main.resultTitle=="FAILURE"){ Intent in = new Intent(); in.putExtra("payment", "unpaid"); setResult(22,in); // finish(); }else if(main.resultTitle=="CANCELED"){ Intent in = new Intent(); in.putExtra("payment", "unpaid"); setResult(22,in); // finish(); } launchSimplePayment.updateButton(); title.setText(resultTitle); title.setVisibility(View.VISIBLE); info.setText(resultInfo); info.setVisibility(View.VISIBLE); extra.setText(resultExtra); extra.setVisibility(View.VISIBLE); finish(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { Intent in = new Intent(); in.putExtra("payment", "unpaid"); setResult(1,in); finish(); return true; } return super.onKeyDown(keyCode, event); } يمكنك أيضا الاستعانة بهذاالمشروع والذي هو عبارة عن مشروعSDKتضيفه إلى مشروعك، فقط اتبع المعلومات المُرفقة في المشروع.1 نقطة
-
أتفق مع كلام الأخت تأسيس مشروع ربحي خاص بك هو الطريق الوحيد للثراء العمل الحر هو مصدر رزق ومصدر لكسب خبرات كثيرة فقط1 نقطة
-
مرحباً بك إذا كنت تودين العمل كمستقلة لصنع ثروة بسرعة فلا أعتقد أن العمل الحر مناسب لتحقيق ذلك. العمل الحر يعتمد على مشاركة خبراتك ومهاراتك مع الاخرين والحصول على مقابل مادي مقابل ذلك، قد يؤمن لكِ أستقرار مالي و يغنيكِ عن عمل آخر و لكنه ليس الاستثمار الأفضل اذا كنتِ تفكري بالمال فقط كعائد من العمل، هذا في البداية أعتقد مع السنوات و الخبرات المتراكمة من العمل الحر يزداد العائد المالي الذي يأتيكِ و عائد أهم من الخبرات و التجارب قد يفيدكِ في انشاء مشروعكِ الخاص الذي ربما يدُّر عليكِ الثروة التي تحلمين بها.1 نقطة