6.9 Android 支付宝 开发者平台申请和接口调用

移动支付文档中心:https://doc.open.alipay.com/doc2/detail?treeId=59&articleId=103563&docType=1


SDK下载地址: https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1

软件发布一年了,SDK更新了,那么你的软件也要跟着更新。

注意如果开发平台有集成流程,就按照开发平台的集成流程做就行了。按照集成流程详解去做,集成流程详解去做

-------------------------------------------------------------------------------------------------------------------------------------------------------------

本例讲三个例子:

1:运行支付宝的alipay_demo,

2:拷贝文件的方式调用支付宝

3:将支付宝变成model调用。



接入之前准备工作包括商户签约和密钥配置,

第一个例子:运行支付宝的alipay_demo


将alipay_demo导入Android Studio,选择Import project fromEclipse

这个时候有一个东西需要更新的,如下图所示


把上面的括号里面删除了,可以直接删除也可以通过f4,把Dependencies 里面的删除掉。
里面是
libs/alipaySdk-20160120.jar
libs/android-support-v13.jar


修改为:

---------------------------
在gradle里面添加

 compile fileTree(dir: 'libs', include: ['*.jar'])


这个时候运行以后,点击“支付”按钮会显示

警告:PARTNER|RSA_PARIVATE|SELLER,原因是:


公钥,上传给服务器,服务器就认可这台电脑私钥加密的东西。
在PayDemoActivity:里面有。 下面的几个是公司给的或者是你帮公司申请的。
// 商户PID
public static final String PARTNER = "";
// 商户收款账号
public static final String SELLER = "";
// 商户私钥,pkcs8格式
public static final String RSA_PRIVATE = "";
// 支付宝公钥


暂时可以用的一个测试信息:2088其实就是阿里巴巴。
// 商户合作ID 必须以 2088 开头
public static final String PARTNER = "2088601082136243";??// 收款人,支付宝账号  账号是固定的,一个商户一个账号?
public static final String SELLER = "xiexiewangkeji@163.com";??// 客户端使用的私钥,对于请求进行数字签名,传给服务器,服务器使用公钥进行验证?
public static final String RSA_PRIVATE = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAM62H9NVaAFL54uyqjNv11J7eeOsh/xRQ2c31zUXGmFvuq5iUVxahQBNKa5O3w4qoOdzCt6yw+Fcl9hN/9NV9pWiCUBzNBluUMyqTb2Qs+bULisevBk810Uevo/Cct+gu+6e2tTal2dXszAXK7tYjJqd5Rzmc/qJRzFPNn4j3W2NAgMBAAECgYEAwEDBHtPrNHF9O/+Cru5RLGSs++SmYTTPZLuZy8XeAkthK/lDRIrn8lzR7E1sxYc+OaVUscU/y2VL0KDS06K6/8gVCcJe4UiCjIBXyhmwNBKBHf4jlKKAlaWZkPwJSxpfE1O16epBvTHZdyEY0ALfMnvQlUZ8RAAXo5DHGutHscECQQD++08BYfWDhYVpDzlEcPM+9fyecen8vGiX/T0+LB88kREIldjiQmqJyBvKECRBUJYg+2mqHGQjQMfBHfaaUsC9AkEAz4l27Qps5e93EmNlDn3RsMH+JVzMu0442nA8SbpRJOtmuqYDZAH7W2uj3J3J1gIbZg5zCxQc9rLDYcq2wo21EQJBAK1x/ZgPLpa8qLeCZ44q1wwpACI3ktccwnlBBfvYv5bPhyqz48hlLVt0B5M3z7GuQ7FD0+inT2a7liXDYBAx4nECQD8SSsc9LN0wSmKXPGYMDMcIHcGjE0E1Q4f3JgtOCU0MEVtWCp/BDm+5JcJtXaKhX0xDxeivAyJiL4ivv50ezdECQHptoOYG0tMCHL0oOXrZXsdpAFL/c8vX25Oq/uaYaR+Zgv02ipt+81YQ+8nYTwD55TZytt0TcifqUQhDf0y7XyQ="; //注意了上面的这个RSA_PRIVATE 一定不能换行


支付宝一定要了解的内容
1:支付宝支付时候的签名机制:和oAuth 有很大的关系,有可能面试的时候可能会遇到
2:支付宝客户端错误码
3:Android 中PayTask 内部的参数orderInfo 必须要看
4:提交请求时的notify_url:让支付宝完成支付或者为完成支付的时候给商家服务器的



支付宝支付需要三个子系统:客户端,支付宝的服务器,商家(客户端自身的)服务器
9件以上85折, 注意这些都是服务器端计算的,而不是可以客户端计算.我之前写的订餐软件是在客户端计算的。
客户端下订单,服务器算好价格,客户端支付.

如果订单是100元,而我支付的是1块钱,怎么办呢? 这个是不是bug的部分呢?


首先客户端下一个订单
服务器告诉我需要1000元钱,
客户端交1000元,给支付宝服务器
支付宝服务器返回已经扣款或者失败.
支付宝服务器告诉商家后台某一个订单已经支付成功了


2:将支付宝的demo内容拷贝到现有的项目工程中,最好的方法还是第三种方法,因为第三种方法不用我们自己去申请权限了。

新建一个项目

在布局文件中:添加一个button “下订单”
下订单(从服务器获取订单信息,订单号,金额,打折信息,描述信息,然后将这里面的一些信息传送给支付宝,特别是订单号)

ali的libs 里面有jar包
把com 拷贝过来.
把res 里面的拷贝过来.跳过string
清单文件的操作:
权限
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

拷贝清单文件中activity内容到

<activity
            android:name="com.alipay.sdk.pay.demo.PayDemoActivity"
            android:icon="@drawable/msp_icon"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.alipay.sdk.pay.demo.H5PayDemoActivity"
            android:configChanges="orientation|keyboardHidden|navigation"
            android:exported="false"
            android:screenOrientation="behind" >
        </activity>
        <!-- alipay sdk begin -->
        <activity
            android:name="com.alipay.sdk.app.H5PayActivity"
            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
            android:exported="false"
            android:screenOrientation="behind"
            android:windowSoftInputMode="adjustResize|stateHidden" >
        </activity>


在button 上面添加事件
<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="btnAliPay"
    android:text="支付宝支付"/>


public class OrderPayActivity extends AppCompatActivity {
    private long mOrderNumber;
    private float mTotalFee;
    private String mOrderDes;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_order_pay);
        Intent intent = getIntent();
        mOrderNumber=intent.getLongExtra("orderNumber",0);
        mTotalFee=intent.getFloatExtra("totalFee", 0);
        mOrderDes=intent.getStringExtra("orderDes");
    }


    public void btnAliPay(View view) {
        //开始 支付宝 支付
        Intent intent = new Intent(this, PayDemoActivity.class);


        startActivity(intent);
    }
}


public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    /**
     * 下订单,从服务器获取订单信息,订单号,金额,打折信息,描述信息
     * @param view
     */
    public void btnOrder(View view) {
        //TODO, 下订单 ,跳转到支付 界面
        //模拟 订单号 ,从护短服务器返回来的
        long orderNumber = 1000000000;
        //总 金额
        float totalFee = 100f;
        String orderDes ="您的订单 我们已经收到了 ";
        Intent intent = new Intent(this,OrderPayActivity.class);
        intent.putExtra("orderNumber",orderNumber);
        intent.putExtra("totalFee",totalFee);
        intent.putExtra("orderDes",orderDes);
        startActivity(intent);
    }
}


在PayDemoActivity 里面,注意里面的TODO的项目,就是修改的地方

package com.alipay.sdk.pay.demo;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Random;

import com.alipay.sdk.app.PayTask;
import com.example.kodulf.myshoppay.R;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Toast;

public class PayDemoActivity extends FragmentActivity {

   // 商户PID
   public static final String PARTNER = "";
   // 商户收款账号
   public static final String SELLER = "";
   // 商户私钥,pkcs8格式
   public static final String RSA_PRIVA
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值