好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

支付宝移动支付实现.docx

8页
  • 卖家[上传人]:第***
  • 文档编号:32757907
  • 上传时间:2018-02-12
  • 文档格式:DOCX
  • 文档大小:85.41KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 支付宝接口实现移动支付一、加密解密1、网银支付普遍使用的是非对称加密算法,RSA二、支付宝开发者平台1、注册账号(一般是企业账号)- 创建应用-添加功能-申请上线-等待审核2、配置应用环境:设置密钥(使用密钥生成器生成)三、Demo 演示1、下载 Android 版的支付宝 SDK:文档中心移动支付的 SDK2、运行 alipaydemo.3、添加相关信息:四、构建自己的 Demo1、主要是 PayDemoActivity 类的模拟;2、导入支付宝内部的 jar 包;3、最重要的还是相关信息;4、源码页面package com.example.paydemoopen;import java.io.UnsupportedEncodingException;import .URLEncoder;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;import java.util.Random;import com.alipay.sdk.app.PayTask;import android.annotation.SuppressLint;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.text.TextUtils;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {private EditText name_et,des_et,price_et;// 商户 PID:支付宝应用中的商 户 idpublic static final String PARTNER = "2088221844842500";// 商户收款账号:支付宝账号public static final String SELLER = "itcast1205@";// 商户私钥,pkcs8 格式public static final String RSA_PRIVATE = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAOdq0lS/uzkzwXnqJNhHq5vgSiQ3Bsfa9fzJtQotYl1mEpyfOq1yfXfn9OXagqgiWpVmwxnzs6pwnjzoMx1nPDFOqechpHFy+1DeafLGRPLxYiy/r6rl8oBd0EuFeeOeHpcsWuquydkaymgkKwgyTjnCi7TYx9FsiN5WmECxyNO9AgMBAAECgYBvHOgujvyrI4GTMuxL+GWaa1/N8anMzgJsRMErSM1BASCQmReIbj92EiaRMpCngA80SuoEjPHINViU7/yS8p2AOXanzriYvap01waxjLa/KEDGjYsffUcQe/SS+xxRoMNvrmPxuQJ4MPowUvdU2OKOtpD/GY6KIGdVvRQoKiCAdQJBAPiQ8ROiI4lY0qBrTY6pS1LrSIhrvjOT5nSeMpVtR0PYa+KiWhezmKRsixRdzSnhE7fvPhRprUCMdgtIdOUwWxcCDuVpXdlUr9ZwS571A6+1qRT1Jqt4emhyJeHE+gi/ETO/zqwAYuYaI/Xha/1Rt3I6GcVCAvOwXcAIXWx5Cm2XxLAkEA7VX32jdGly4obuQF+eHL+jCN4TR/N+BQe6lRwzvEgBN1b8B1JYxmgxjg82FdNE+k9EuLixIcSzXSwJM+ilfRoQJBAM4E1mLFjB7jD/jRXp69axo0YN+SaZWPNiv3ePUkQm0H66XX+v/YsXDpGe0UfztK94W0SmXJNVVotkhkFSvEz2UCDJYpIfoR/EUAiGas/n1LtiD3UJE0EEGgqDyrLPpcujE4GpOLgPhP07sOTigmXJZFCLyf9TRASkVJBPf5iIvnVx";// 支付宝公钥:指的是应用平台中支付宝提供的公 钥public static final String RSA_PUBLIC = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDI6d306Q8fIfCOaTXyiUeJHkrIvYISRcc73s3vF1ZT7XN8RNPwJxo8pWaJMmvyTn9N4HQ632qJBVHf8sxHi/fEsraprwCtzvzQETrNRwVxLO5jVmRGi60j8Ue1efIlzPXV9je9mkjzOmdssymZkh2QhUrCmZYI/FCEa3/cNMW0QIDAQAB";private static final int SDK_PAY_FLAG = 1;@SuppressLint("HandlerLeak")private Handler mHandler = new Handler() {@SuppressWarnings("unused")public void handleMessage(Message msg) {switch (msg.what) {case SDK_PAY_FLAG: {PayResult payResult = new PayResult((String) msg.obj);/*** 同步返回的结果必须放置到服务端 进行验证(验证的规则请看 detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&* docType=1) 建议商户依赖异步通知*/String resultInfo = payResult.getResult();// 同步返回需要验证的信息String resultStatus = payResult.getResultStatus();// 判断 resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档if (TextUtils.equals(resultStatus, "9000")) {Toast.makeText(MainActivity.this, "支付成功", Toast.LENGTH_SHORT).show();} else {// 判断 resultStatus 为非"9000" 则代表可能支付失败// "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)if (TextUtils.equals(resultStatus, "8000")) {Toast.makeText(MainActivity.this, "支付结果确认中", Toast.LENGTH_SHORT).show();} else {// 其他值就可以判断为支付失 败,包括用户主动取消支付,或者系统返回的错误Toast.makeText(MainActivity.this, "支付失败", Toast.LENGTH_SHORT).show();}}break;}default:break;}};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);name_et = (EditText) findViewById(R.id.editText1);des_et = (EditText) findViewById(R.id.editText2);price_et = (EditText) findViewById(R.id.editText3);}public void pay(View v){String startPay = name_et.getText().toString();String des = des_et.getText().toString();String price = price_et.getText().toString();startPay(startPay,des,price);}private void startPay(String name,String des,String price){//生成订单信息String orderInfo = getOrderInfo(name, des, price);System.out.println(orderInfo);/*** 特别注意,这里的签名逻辑需要放在服务端,切勿将私 钥泄露在代码中!*///对订单信息用私钥进行编码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();System.out.println(payInfo);//通过支付串码,调用支付宝客户端进行操作Runnable payRunnable = new Runnable() {@Overridepublic void run() {// 构造 PayTask 对象PayTask alipay = new PayTask(MainActivity.this);// 调用支付接口,获取支付结果String result = alipay.pay(payInfo, true);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. 创建订单信息* */private String getOrderInfo(String subject, String body, String price) {// 签约合作者身份 IDString orderInfo = "partner=" + "\"" + PARTNER + "\""; // 签约卖家支付宝账号orderInfo += "// 商户网站唯一订单号:服务器自己给定的orderInfo += "// 商品名称orderInfo += "// 商品详情orderInfo += "// 商品金额orderInfo += "// 服务器异步通知页面路径//自己的服务器如果想知道致富到底有没有成功,当支付宝服 务完成后,会调用此链接进行通知,此链接有自己的服务器开发人员设。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.