android接入支持海外的支付,visa,mastercard

本文档介绍了如何在Android应用中接入Visa和Mastercard信用卡支付,通过支付宝海外支付SDK实现。详细步骤包括初始化、创建订单、风险控制等,并提供了Java代码示例。注意,测试环境和正式环境的初始化参数不同,且需设置订单号和风控策略。支付完成后,服务端需要验证并处理回调通知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了支持海外的支付,我真的是找遍了各种方法,研究过google支付,最后因为手续费太高放弃。最后还是找到了支付宝海外支付。

sdk文档地址:http://www.alipay-seller.mpymnt.com/node/82(对,只有英文文档,没有中文)


该渠道支持的visa、mastercard、jcb等信用卡,既然是信用卡支付,是有一定的失败概率的,没有开通国际汇款的信用卡不能支付(这个目前我们应用测试结果是这样子的)。

国内的信用卡不能支付,不管是双币还是其他(这个很忧伤)。我在测试环境测试好后,只能麻烦海外用户帮忙测试。。。

下面我把基本步骤给贴出来,还有一些注意事项。

开发前的准备工作

申请注册webhook  http://www.alipay-seller.mpymnt.com/node/35《--这里有说明

按照文档说,发送申请邮件到指定邮箱,在发之前,最好跟支付宝技术人员先联系上,说明想接入他们这个sdk。否则人家看到你发的邮件都不知道是多久以后了。

webhook的作用:主要是通知我们的服务端,支付结果。


1、选择下载哪个demo

官方网站有三个demo(mCommerce Sample App、CheckoutScreens Sample App、Tokenization Sample),我接入的是第一个,

第二个放入我们工程会报错,第三个支付宝技术人员说不要用(我就想既然建议不要用,为何要有)。





下面我说的,就是按照demo里面的代码该注意的地方重点说明。

下面的这个两个参数,测试环境下就按照官方给的值,不用改。在正式环境中,建议吧这两个值放在服务端。


在测试环境中.初始化initializaProvider(PWProviderMode.TEST,

APPLICATIONIDENTIFIER, PROFILETOKEN);  正式环境中记得改成PWProviderMode.LIVE.


创建订单,


这里我选择的是美元收款,文档里面可以有多种收款币种选择的。最后支付宝会结算成人民币给我们。信用卡类型,我总共就用两个visa和mastercard。两种充值类型逻辑都是一样的,唯一的区别就是这个PWCreditCardType.VISA还是PWCreditCardType.MASTERCARD.根据自己的需求。

创建订单后要选择对订单中哪些数据进行风控。这个风控系统是支付宝自己的系统,主要判断订单的风险性,他们自己有套过滤标准。

这个demo里面绝对没有,除非后面更新了。

这里的美元单位是要美分的


设置订单号:

paymentParams.setCustomIdentifier(orderNum+"");

发起注册预授权(pa)

_binder.createAndRegisterPreauthorizationTransaction(paymentParams);

在回调函数

creationAndRegistrationSucceeded中

发起pa:

_binder.preauthorizeTransaction(transaction);

pa成功后,注册cp:

_binder.createAndRegisterCaptureTransaction(paymentParams, transaction.getMobileIdentifier());


注册cp成功,发起cp:

_binder.captureTransaction(transaction);


完整的java 代码如下:

public class ProcessTransactionActivity extends Activity implements

PWTransactionListener{ //,PWTransactionStatusListener 


private PWProviderBinder _binder;

private  String APPLICATIONIDENTIFIER = null;//"payworks.sandbox";

private  String PROFILETOKEN = null;//"20d5a0d5ce1d4501a4826a8b7e159d19";


private ServiceConnection  _serviceConnection = null;

private PWPaymentParams paymentParams = null;

private PWTransaction transaction = null;

private RelativeLayout ry_btn_back,ry_btn_next;

private TextView tv_title,tv_tips;

private EditText edt_name,edt_cardNumber,edt_cvvNumber,edt_mm,edt_yyyy,edt_emailAddress;

private TextView btn_submit;

private Dialog waitDlg;

private RechargeCoinType coinType;

private int fromWhere = 0;

private String orderNum = "0"; //订单号

private String clientIPAddress = ""; //客户端的ip地址

private boolean isOperating = false;

private int clickPayWay = 0;

private final static int aplipayClientPay = 1;

private final static int aplipayWebPay = 2;

private final static int visaPay = 3;

private final static int masterCardPay = 4;

private TextView textTips;


private void setStatusText(final String string) {

runOnUiThread(new Runnable() {

public void run() {

if (textTips == null) {

textTips = ((TextView) findViewById(R.id.textView1));

}

textTips.setText(string);

}

});

}


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_processtransaction);

Bundle bundle = this.getIntent().getExtras();

if (bundle != null) {

fromWhere = bundle.getInt("fromWhere");

PROFILETOKEN = bundle.getString("profiletoken");//可以根据自己的设计获取

APPLICATIONIDENTIFIER = bundle.getString("applicationidentifier");//可以根据自己的设计获取

orderNum = bundle.getString("ordernum");

clientIPAdd

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值