当前位置: 首页 > news >正文

哪些网站可做矿机期货自建网站免费教程

哪些网站可做矿机期货,自建网站免费教程,学编程的软件有哪些,淘宝网站建设费用在做Android支付的时候肯定会用到支付宝支付#xff0c; 根据官方给出的demo做起来非常费劲#xff0c;所以我们需要一次简单的封装。 封装的代码也很简单#xff0c;就是将官网给的demo提取出一个类来方便使用。 /*** 支付宝支付* * author lenovo*/ public class Alipay {…在做Android支付的时候肯定会用到支付宝支付 根据官方给出的demo做起来非常费劲所以我们需要一次简单的封装。 封装的代码也很简单就是将官网给的demo提取出一个类来方便使用。 /*** 支付宝支付* * author lenovo*/ public class Alipay {// 商户PIDpublic static final String PARTNER 123456789;// 商户收款账号public static final String SELLER qibin0506gmail.com;// 商户私钥pkcs8格式public static final String RSA_PRIVATE rsa_private;// 支付宝公钥public static final String RSA_PUBLIC rsa_public;private static final int SDK_PAY_FLAG 1;private WeakReferenceActivity mActivity;private OnAlipayListener mListener;public Alipay(Activity activity) {mActivity new WeakReferenceActivity(activity);}SuppressLint(HandlerLeak) private Handler mHandler new Handler() {public void handleMessage(Message msg) {if (msg.what SDK_PAY_FLAG) {PayResult payResult new PayResult((String) msg.obj);// 支付宝返回此次支付结果及加签建议对支付宝签名信息拿签约时支付宝提供的公钥做验签String resultInfo payResult.getResult();String resultStatus payResult.getResultStatus();// 判断resultStatus 为“9000”则代表支付成功具体状态码代表含义可参考接口文档if (TextUtils.equals(resultStatus, 9000)) {if (mListener ! null) mListener.onSuccess();} else {// 判断resultStatus 为非“9000”则代表可能支付失败// “8000”代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认// 最终交易是否成功以服务端异步通知为准小概率状态if (TextUtils.equals(resultStatus, 8000)) {if (mListener ! null) mListener.onWait();} else {// 其他值就可以判断为支付失败包括用户主动取消支付或者系统返回的错误if (mListener ! null) mListener.onCancel();}}}}};/*** 支付* * param title 标题 不能为空或者“”* param desc 描述 不能为空或者“”* param price 价格 不能为空或者“”* param sn 商品唯一货号 不能为空或者“”* param url 服务器回调url 不能为空或者“”*/public void pay(String title, String desc, String price, String sn, String url) {// 订单String orderInfo getOrderInfo(title, desc, price, sn, url);// 对订单做RSA 签名String sign sign(orderInfo);try {// 仅需对sign 做URL编码sign URLEncoder.encode(sign, UTF-8);} catch (UnsupportedEncodingException e) {e.printStackTrace();}// 完整的符合支付宝参数规范的订单信息final String payInfo orderInfo sign\ sign \ getSignType();Runnable payRunnable new Runnable() {Overridepublic void run() {Activity activity mActivity.get();if(activity null) return;// 构造PayTask 对象PayTask alipay new PayTask(activity);// 调用支付接口获取支付结果String result alipay.pay(payInfo);Message msg new Message();msg.what SDK_PAY_FLAG;msg.obj result;mHandler.sendMessage(msg);}};// 必须异步调用Thread payThread new Thread(payRunnable);payThread.start();}/*** create the order info. 创建订单信息* */public String getOrderInfo(String subject, String body, String price,String sn, String url) {// 签约合作者身份IDString orderInfo partner \ PARTNER \;// 签约卖家支付宝账号orderInfo seller_id \ SELLER \;// 商户网站唯一订单号orderInfo out_trade_no \ sn \;// 商品名称orderInfo subject \ subject \;// 商品详情orderInfo body \ body \;// 商品金额orderInfo total_fee \ price \;// 服务器异步通知页面路径orderInfo ¬ify_url \ url \;// 服务接口名称 固定值orderInfo service\mobile.securitypay.pay\;// 支付类型 固定值orderInfo payment_type\1\;// 参数编码 固定值orderInfo _input_charset\utf-8\;// 设置未付款交易的超时时间// 默认30分钟一旦超时该笔交易就会自动被关闭。// 取值范围1m15d。// m-分钟h-小时d-天1c-当天无论交易何时创建都在0点关闭。// 该参数数值不接受小数点如1.5h可转换为90m。orderInfo it_b_pay\30m\;// extern_token为经过快登授权获取到的alipay_open_id,带上此参数用户将使用授权的账户进行支付// orderInfo extern_token \ extern_token \;// 支付宝处理完请求后当前页面跳转到商户指定页面的路径可空orderInfo return_url\m.alipay.com\;// 调用银行卡支付需配置此参数参与签名 固定值 需要签约《无线银行卡快捷支付》才能使用// orderInfo paymethod\expressGateway\;return orderInfo;}/*** sign the order info. 对订单信息进行签名* * param content* 待签名订单信息*/public String sign(String content) {return SignUtils.sign(content, RSA_PRIVATE);}/*** get the sign type we use. 获取签名方式* */public String getSignType() {return sign_type\RSA\;}public void setListener(OnAlipayListener l) {mListener l;}/*** 支付回调接口* * author lenovo* */public static class OnAlipayListener {/*** 支付成功*/public void onSuccess() {}/*** 支付取消*/public void onCancel() {}/*** 等待确认*/public void onWait() {}} }final class Base64 {private static final int BASELENGTH 128;private static final int LOOKUPLENGTH 64;private static final int TWENTYFOURBITGROUP 24;private static final int EIGHTBIT 8;private static final int SIXTEENBIT 16;private static final int FOURBYTE 4;private static final int SIGN -128;private static char PAD ;private static byte[] base64Alphabet new byte[BASELENGTH];private static char[] lookUpBase64Alphabet new char[LOOKUPLENGTH];static {for (int i 0; i BASELENGTH; i) {base64Alphabet[i] -1;}for (int i Z; i A; i--) {base64Alphabet[i] (byte) (i - A);}for (int i z; i a; i--) {base64Alphabet[i] (byte) (i - a 26);}for (int i 9; i 0; i--) {base64Alphabet[i] (byte) (i - 0 52);}base64Alphabet[] 62;base64Alphabet[/] 63;for (int i 0; i 25; i) {lookUpBase64Alphabet[i] (char) (A i);}for (int i 26, j 0; i 51; i, j) {lookUpBase64Alphabet[i] (char) (a j);}for (int i 52, j 0; i 61; i, j) {lookUpBase64Alphabet[i] (char) (0 j);}lookUpBase64Alphabet[62] (char) ;lookUpBase64Alphabet[63] (char) /;}private static boolean isWhiteSpace(char octect) {return (octect 0x20 || octect 0xd || octect 0xa || octect 0x9);}private static boolean isPad(char octect) {return (octect PAD);}private static boolean isData(char octect) {return (octect BASELENGTH base64Alphabet[octect] ! -1);}/*** Encodes hex octects into Base64* * param binaryData* Array containing binaryData* return Encoded Base64 array*/public static String encode(byte[] binaryData) {if (binaryData null) {return null;}int lengthDataBits binaryData.length * EIGHTBIT;if (lengthDataBits 0) {return ;}int fewerThan24bits lengthDataBits % TWENTYFOURBITGROUP;int numberTriplets lengthDataBits / TWENTYFOURBITGROUP;int numberQuartet fewerThan24bits ! 0 ? numberTriplets 1: numberTriplets;char encodedData[] null;encodedData new char[numberQuartet * 4];byte k 0, l 0, b1 0, b2 0, b3 0;int encodedIndex 0;int dataIndex 0;for (int i 0; i numberTriplets; i) {b1 binaryData[dataIndex];b2 binaryData[dataIndex];b3 binaryData[dataIndex];l (byte) (b2 0x0f);k (byte) (b1 0x03);byte val1 ((b1 SIGN) 0) ? (byte) (b1 2): (byte) ((b1) 2 ^ 0xc0);byte val2 ((b2 SIGN) 0) ? (byte) (b2 4): (byte) ((b2) 4 ^ 0xf0);byte val3 ((b3 SIGN) 0) ? (byte) (b3 6): (byte) ((b3) 6 ^ 0xfc);encodedData[encodedIndex] lookUpBase64Alphabet[val1];encodedData[encodedIndex] lookUpBase64Alphabet[val2 | (k 4)];encodedData[encodedIndex] lookUpBase64Alphabet[(l 2) | val3];encodedData[encodedIndex] lookUpBase64Alphabet[b3 0x3f];}// form integral number of 6-bit groupsif (fewerThan24bits EIGHTBIT) {b1 binaryData[dataIndex];k (byte) (b1 0x03);byte val1 ((b1 SIGN) 0) ? (byte) (b1 2): (byte) ((b1) 2 ^ 0xc0);encodedData[encodedIndex] lookUpBase64Alphabet[val1];encodedData[encodedIndex] lookUpBase64Alphabet[k 4];encodedData[encodedIndex] PAD;encodedData[encodedIndex] PAD;} else if (fewerThan24bits SIXTEENBIT) {b1 binaryData[dataIndex];b2 binaryData[dataIndex 1];l (byte) (b2 0x0f);k (byte) (b1 0x03);byte val1 ((b1 SIGN) 0) ? (byte) (b1 2): (byte) ((b1) 2 ^ 0xc0);byte val2 ((b2 SIGN) 0) ? (byte) (b2 4): (byte) ((b2) 4 ^ 0xf0);encodedData[encodedIndex] lookUpBase64Alphabet[val1];encodedData[encodedIndex] lookUpBase64Alphabet[val2 | (k 4)];encodedData[encodedIndex] lookUpBase64Alphabet[l 2];encodedData[encodedIndex] PAD;}return new String(encodedData);}/*** Decodes Base64 data into octects* * param encoded* string containing Base64 data* return Array containind decoded data.*/public static byte[] decode(String encoded) {if (encoded null) {return null;}char[] base64Data encoded.toCharArray();// remove white spacesint len removeWhiteSpace(base64Data);if (len % FOURBYTE ! 0) {return null;// should be divisible by four}int numberQuadruple (len / FOURBYTE);if (numberQuadruple 0) {return new byte[0];}byte decodedData[] null;byte b1 0, b2 0, b3 0, b4 0;char d1 0, d2 0, d3 0, d4 0;int i 0;int encodedIndex 0;int dataIndex 0;decodedData new byte[(numberQuadruple) * 3];for (; i numberQuadruple - 1; i) {if (!isData((d1 base64Data[dataIndex]))|| !isData((d2 base64Data[dataIndex]))|| !isData((d3 base64Data[dataIndex]))|| !isData((d4 base64Data[dataIndex]))) {return null;}// if found no data just return nullb1 base64Alphabet[d1];b2 base64Alphabet[d2];b3 base64Alphabet[d3];b4 base64Alphabet[d4];decodedData[encodedIndex] (byte) (b1 2 | b2 4);decodedData[encodedIndex] (byte) (((b2 0xf) 4) | ((b3 2) 0xf));decodedData[encodedIndex] (byte) (b3 6 | b4);}if (!isData((d1 base64Data[dataIndex]))|| !isData((d2 base64Data[dataIndex]))) {return null;// if found no data just return null}b1 base64Alphabet[d1];b2 base64Alphabet[d2];d3 base64Data[dataIndex];d4 base64Data[dataIndex];if (!isData((d3)) || !isData((d4))) {// Check if they are PAD charactersif (isPad(d3) isPad(d4)) {if ((b2 0xf) ! 0)// last 4 bits should be zero{return null;}byte[] tmp new byte[i * 3 1];System.arraycopy(decodedData, 0, tmp, 0, i * 3);tmp[encodedIndex] (byte) (b1 2 | b2 4);return tmp;} else if (!isPad(d3) isPad(d4)) {b3 base64Alphabet[d3];if ((b3 0x3) ! 0)// last 2 bits should be zero{return null;}byte[] tmp new byte[i * 3 2];System.arraycopy(decodedData, 0, tmp, 0, i * 3);tmp[encodedIndex] (byte) (b1 2 | b2 4);tmp[encodedIndex] (byte) (((b2 0xf) 4) | ((b3 2) 0xf));return tmp;} else {return null;}} else { // No PAD e.g 3cQlb3 base64Alphabet[d3];b4 base64Alphabet[d4];decodedData[encodedIndex] (byte) (b1 2 | b2 4);decodedData[encodedIndex] (byte) (((b2 0xf) 4) | ((b3 2) 0xf));decodedData[encodedIndex] (byte) (b3 6 | b4);}return decodedData;}/*** remove WhiteSpace from MIME containing encoded Base64 data.* * param data* the byte array of base64 data (with WS)* return the new length*/private static int removeWhiteSpace(char[] data) {if (data null) {return 0;}// count characters thats not whitespaceint newSize 0;int len data.length;for (int i 0; i len; i) {if (!isWhiteSpace(data[i])) {data[newSize] data[i];}}return newSize;} }class PayResult {private String resultStatus;private String result;private String memo;public PayResult(String rawResult) {if (TextUtils.isEmpty(rawResult))return;String[] resultParams rawResult.split(;);for (String resultParam : resultParams) {if (resultParam.startsWith(resultStatus)) {resultStatus gatValue(resultParam, resultStatus);}if (resultParam.startsWith(result)) {result gatValue(resultParam, result);}if (resultParam.startsWith(memo)) {memo gatValue(resultParam, memo);}}}Overridepublic String toString() {return resultStatus{ resultStatus };memo{ memo };result{ result };}private String gatValue(String content, String key) {String prefix key {;return content.substring(content.indexOf(prefix) prefix.length(),content.lastIndexOf(}));}/*** return the resultStatus*/public String getResultStatus() {return resultStatus;}/*** return the memo*/public String getMemo() {return memo;}/*** return the result*/public String getResult() {return result;} }class SignUtils {private static final String ALGORITHM RSA;private static final String SIGN_ALGORITHMS SHA1WithRSA;private static final String DEFAULT_CHARSET UTF-8;public static String sign(String content, String privateKey) {try {PKCS8EncodedKeySpec priPKCS8 new PKCS8EncodedKeySpec(Base64.decode(privateKey));KeyFactory keyf KeyFactory.getInstance(ALGORITHM);PrivateKey priKey keyf.generatePrivate(priPKCS8);java.security.Signature signature java.security.Signature.getInstance(SIGN_ALGORITHMS);signature.initSign(priKey);signature.update(content.getBytes(DEFAULT_CHARSET));byte[] signed signature.sign();return Base64.encode(signed);} catch (Exception e) {e.printStackTrace();}return null;} }span stylefont-family: Arial, Helvetica, sans-serif;前面的几个常量是需要去支付宝官网获取的获取后直接替换就ok /span 其他的代码基本都是从demo中copy出来的 现在我们就将支付功能封装到了一个类中那么如何使用呢Alipay alipay new Alipay(OrderConfirmActivity.this); alipay.setListener(mAlipayListener); alipay.pay(desc, mOrder.getShopName(), String.valueOf(orderAmount), orderSn, url); /*** 支付宝支付回调*/ private Alipay.OnAlipayListener mAlipayListener new Alipay.OnAlipayListener() {Overridepublic void onSuccess() {onOrderSubmitSuccess();}Overridepublic void onCancel() {onUserOrderCanceled();Toast.makeText(OrderConfirmActivity.this, R.string.pay_failed, Toast.LENGTH_SHORT).show();}Overridepublic void onWait() {} }; new出对象来只需要调用pay方法就ok啦 不过支付的回调我们还是必须的当然这个也不麻烦。这里说一下pay方法的几个参数 title 支付的标题 desc 支付的描述 price 支付的金额 sn 商品的唯一货号 url 服务器的回调url 这几个参数在做支付的时候服务器都会给到但是要注意一下这几个参数都不能为空或者空字符串否则会支付失败。
http://www.pierceye.com/news/665993/

相关文章:

  • 网站中添加百度地图购物网站产品做促销能赚钱吗
  • 金融公司 网站开发怎么样建网站卖东西
  • 网站导航栏垂直如何提高你的网站的粘性
  • 直播网站开发接入视频中国建筑招聘官网2022
  • 大连专业企业建站找哪家wordpress 保护wp-login.php
  • 微网站建设哪家便宜想要找个网站做环评公示
  • 建设银行网银网站激活个人简历模板电子版可填写
  • 肃州区建设局网站宁夏百度seo
  • 关于做电影的网站设计西安网站建设制作 熊掌号
  • idc网站建设怎么自己做一个网页链接
  • 网站开发安全模块方案个人网站搭建软件
  • 重庆建设招标造价信息网站个人网站建设与维护
  • 网站备案用户名忘了怎么办嘉兴做外贸网站的公司
  • 1688网站的特点网站制作器手机版下载
  • 兖州网站开发做一个中英文网站多少钱
  • wordpress怎么做网盘站好看的页面图片
  • 建设网站深圳罗湖安徽合肥做网站
  • 一级a做爰片免费网站下载网站快慢由什么决定
  • 网页设计与网站建设 郑州大学网络购物网站备案
  • 美观网站建设哪家好优化大师最新版下载
  • 外贸品牌网站制作wordpress 微信主题
  • 旅游网站开发需求分析网站的根目录的路径
  • easyUI网站开发docker wordpress mysql
  • dede手机网站模板下载黄冈做网站
  • 诸城网站建设葛小燕现在搜索引擎哪个比百度好用
  • 嘉兴做微网站多少钱注册网页需要多少钱
  • 论坛类网站设计大型网站系统解决方案
  • 网站建设中页面设计广告策划书籍
  • 云南省建设工程投标中心网站网页的制作步骤是什么
  • 保定网站设计概述更换动易网站模板的方法