Giới thiệu
Hôm nay chúng ta sẽ tạo một ứng dụng đơn giản. có tích hợp thanh toán thông qua API Viettel.
Ứng dụng gồm 1 textview để hiển thị tên và giá sản phẩm
Một button Mua. Click vào để mua ứng dụng.
Khi click vào button Mua. Ứng dụng sẽ xuất hiện một Dialog và tin nhắn từ Viettel yêu cầu xác nhận thanh toán.
Ứng dụng đơn giản vậy thôi.
Đăng ký
Các bạn vào trang API Viettel để đăng ký tài khoản.
Sau đó tiếp vào https://api.vietteltelecom.vn/index.php/tao-ung-dung để tạo một ứng dụng như sau.

Nhớ lưu lại 2 ID sau:
Sau đó Tải SDK về để bắt đầu công việc.
1. Giải nén file vừa tải được, Import thư mục Viettel-services-lib
2. Import Vì đây là thư viện được build trên Eclipse nên chúng ta cứ Import vào Android Studio để cho nó build lại.
3. Tạo mới app để dùng thư viện này. Tên com.androidtmc.exampleviettel
3. Tạo mới app để dùng thư viện này. Tên com.androidtmc.exampleviettel
4. Mở Project exampleviettel, Vào File/New/Import Module... chọn Viettel-services-lib
5. Click chuột phải vào project chọn Open module setting...(F4), chọn Module dependency
chọn đường dẫn đến Viettel-services-lib (đã ddc build bằng Android Studio).
Giao diện Màng hình chính
---
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Sản phẩm: Áo thun. Giá : 200k" android:id="@+id/tv" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Mua" android:id="@+id/btnBuy" android:layout_below="@+id/tv" android:layout_centerHorizontal="true" android:layout_marginTop="43dp" /> </RelativeLayout>
Cấu hình AndroidManifest.xml
xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.androidtmc.exampleviettel" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
tools:replace="android:icon,android:theme"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity android:name="com.viettel.android.gsm.ViettelActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.viettel.android.gsm.ViettelIncommingSMS"
android:permission="android.permission.BROADCAST_SMS" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
<meta-data android:name="port" android:value="9111" />
</receiver>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
</manifest>
package com.androidtmc.exampleviettel; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.telephony.TelephonyManager; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.viettel.android.gsm.ViettelClient; import com.viettel.android.gsm.ViettelError; import com.viettel.android.gsm.VtResponseCode; import com.viettel.android.gsm.charging.ChargingGateWayApi; import com.viettel.android.gsm.charging.PaymentInfo; import com.viettel.android.gsm.listener.ViettelOnResponse; import com.viettel.android.gsm.mdm.MdmInfoApi; import com.viettel.android.gsm.mdm.SmartDeviceInfo; public class MainActivity extends AppCompatActivity implements ViettelClient.OnConnectionCallbacks { private ViettelClient viettelClient; private Button btnBuy; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Thông tin kết nối với service viettel viettelClient = new ViettelClient(this, this); // 2 thông số này ta lấy khi tạo ứng dụng String publisherId = "112707"; String appId = "10792"; viettelClient.setViettelId(publisherId, appId); viettelClient.connect(); //thiết đặt button Mua btnBuy = (Button) findViewById(R.id.btnBuy); btnBuy.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String phoneNumber = "01664620655";// String purchaseNameId = "aothun_200k"; ChargingGateWayApi.processCharging(viettelClient, phoneNumber,purchaseNameId, new ViettelOnResponse<PaymentInfo>() { @Override public void onResult(final PaymentInfo paymentInfo, final int vtCode) { if (vtCode == VtResponseCode.VT_RESULT_OK && paymentInfo != null) { Toast.makeText(MainActivity.this,paymentInfo != null ? paymentInfo.toString() : "" + String.valueOf(vtCode), Toast.LENGTH_LONG).show(); } else Toast.makeText(MainActivity.this,paymentInfo.toString(), Toast.LENGTH_LONG).show(); } }); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Override public void onConnected() { Toast.makeText(this, "connected", Toast.LENGTH_SHORT).show(); } @Override public void onConnectFail(ViettelError viettelError) { Toast.makeText(this, viettelError.getMessage(), Toast.LENGTH_SHORT).show(); } @Override protected void onDestroy() { super.onDestroy(); if (viettelClient != null) { viettelClient.onDestroy(); } } }Source code




Hay...dùng cái này được đấy, thanh toán bằng tài khoản của mobile ah Ad
Trả lờiXóacái này sẽ thanh toán thông qua tiền sim Viettel bạn
Xóahướng dẫn chi tiết đấy. thanks man!
Trả lờiXóacảm ơn bạn....
XóaCó ai thử tích hợp chưa. Có dễ tích hợp không. Chia sẻ cho anh em phát :D
Trả lờiXóarất đơn giản. có chỗ nào thắc mắc cứ comment tại đây. Mình sẽ hỗ trợ
Xóabạn nào test thì thay số đt giùm mình nhé.... quên mất.... nên tn gửi về hoài :D
Trả lờiXóabạn tích hợp thẻ cào Top-up-card đổi về tiền ứng dụng được không
Trả lờiXóasao vào api.vietteltelecom.vn không được nữa vậy
Trả lờiXóamình không rõ nữa.. chắc tại bên viettel bị sao rồi
XóaSao mình vào link https://api.vietteltelecom.vn không được nhỉ?
Trả lờiXóa