package com.pingplusplus.demoapp; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.annotation.SuppressLint; import android.content.Intent; import android.database.DataSetObserver; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.ListView; import android.widget.TextView; import com.pingplusplus.android.PingppLog; import com.pingplusplus.libone.PaymentHandler; import com.pingplusplus.libone.PingppOne; @SuppressLint("NewApi") public class OneSDKActivity extends FragmentActivity implements OnClickListener, PaymentHandler { private static String URL = "http://218.244.151.190/demo/charge"; private ListView mListView; private GoodsAdapter myAdapter; private List mList; private TextView amountView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_yi_shou_kuan); mListView = (ListView) findViewById(R.id.listView); amountView = (TextView) findViewById(R.id.textview_amount); mList = new ArrayList(); mList.add(new Good("橡胶花盆", R.drawable.icon, 1, 0.02f)); mList.add(new Good("搪瓷水壶", R.drawable.icon2, 1, 0.03f)); mList.add(new Good("扫把和簸箕", R.drawable.icon3, 1, 0.05f)); calculate(); myAdapter = new GoodsAdapter(this, mList); mListView.setAdapter(myAdapter); findViewById(R.id.button).setOnClickListener(this); myAdapter.registerDataSetObserver(new DataSetObserver() { @Override public void onChanged() { calculate(); super.onChanged(); } }); //设置需要使用的支付方式 PingppOne.enableChannels(new String[]{"wx", "alipay", "upacp", "bfb", "jdpay_wap"}); // 提交数据的格式,默认格式为json // PingppOne.CONTENT_TYPE = "application/x-www-form-urlencoded"; PingppOne.CONTENT_TYPE = "application/json"; PingppLog.DEBUG = true; } private void calculate() { float amount = 0; for (Good good : mList) { amount += good.getPrice() * good.getCount(); } amountView.setText(String.format("%.2f", amount)); } @Override public void onClick(View v) { // 产生个订单号 String orderNo = new SimpleDateFormat("yyyyMMddhhmmss") .format(new Date()); // 计算总金额(以分为单位) int amount = 0; JSONArray billList = new JSONArray(); for (Good good : mList) { amount += good.getPrice() * good.getCount() * 100; billList.put(good.getName() + " x " + good.getCount()); } // 构建账单json对象 JSONObject bill = new JSONObject(); // 自定义的额外信息 选填 JSONObject extras = new JSONObject(); try { extras.put("extra1", "extra1"); extras.put("extra2", "extra2"); } catch (JSONException e) { e.printStackTrace(); } try { bill.put("order_no", orderNo); bill.put("amount", amount); bill.put("extras", extras); } catch (JSONException e) { e.printStackTrace(); } //壹收款: 创建支付通道的对话框 PingppOne.showPaymentChannels(getSupportFragmentManager(), bill.toString(), URL, this); } @Override public void handlePaymentResult(Intent data) { if (data != null) { /** * code:支付结果码 -2:服务端错误、 -1:失败、 0:取消、1:成功 * error_msg:支付结果信息 */ int code = data.getExtras().getInt("code"); String errorMsg = data.getExtras().getString("error_msg"); } } }