在线咨询
电话 联系电话
400-9999-359
QQ QQ客服
微信 官方微信

SDK

1 SDK说明

1.1 功能描述

      此文档专为Asiabill支付平台的合作商户提供手机 App 接入Asiabill支付服务。本文主要描述 SDK 支付接口的使用方法,目的是帮助商户的技术人员快速开发相关的接入程序。

      Asiabill SDK 支持信用卡支付、银联卡支付。

 

1.2 阅读对象

      此文档面向具有一定 Android/iOS 客户端开发能力,了解 Android/iOS 客户端的开发和管理人员。

 

1.3 业务术语

名称

说明

商户号

签约后,为商家分配的唯一标识,相当于在我司用于交易的账号。

网关接入号

商户号下的子网关号,一个商户号可分配多个网关号,每个网关号可进行独立设置各种信息,例如扣率,风控和支付页面样式等。

Signkey

1 个网关接入号对应 1 个用于加密的 Signkey,默认由 8 位随机字母数字组成。

返回地址

Asiabill根据得到的数据处理完成后,当前页面从Asiabill的页面自动跳转回商户的网站,同时携带处理完成的结果信息反馈给商户网站。

推送

是服务器到服务器之间的数据返回。

 

2 数据交互

shopify独立站收款跨境收款服务商

 

3 商户业务处理注意事项

Q:同步返回是什么?

A:Asiabill服务器处理完支付请求后将结果信息返回给 SDK,商户客户端从 SDK 中获取结果数据后进行验证签名,之后商户根据结果数据进行下一步处理。

Q:异步通知是什么?

A:Asiabill服务器直接发起请求到商户服务器,支付状态需以异步通知结果为准。

Q:商户未收到异步通知怎么办?

A:对于不能确定支付状态的订单,可以调用订单查询接口获取最新状态。

Q:有无可能有重复的异步通知?

A:异步通知有可能重复通知,商户需要做去重处理,避免多次发货。建议在数据进行状态检查和处理之前,采用数据锁进行并发控制。

Q:如何保证通知是来自Asiabill的合法报文?

A:为保证报文数据的真实性,商户接收到返回报文后,应通过Asiabill颁发的 Signkey 验证报文的真实性和合法性,以确认数据返回是从Asiabill服务器发出的。具体验证的方法请见加密机制

 

4 加密机制

4.1 含义

      应用场景:处理支付接口参数 signInfo、交易查询。

      商户与Asiabill服务器进行数据传输时,应对关键数据进行摘要加密,Asiabill服务器会对此签名进行验证。同理,当商户收到Asiabill返回的返回结果后,也应对签名字段进行验证,以确保数据是从Asiabill服务器返回。

 

4.2 明文加密结构

      明文加密结构:merNo + gatewayNo + orderNo + orderCurrency+ orderAmount + returnUrl+ signkey

 

4.3 SHA-256加密

      在SHA-256 签名时,需要加盐。其盐值 signkey 以及商户号,网关接入号都是由Asiabill提供。

 

4.4 样例

      如下是数据拼接示例:

            "20161" + "20202016" + "1601011431330" + “USD” + “0.01” + "http://192.168.1.1:8080/ PayResult.jsp" + "12345678"

      如下是代码示例:

            注:若 returnUrl 中带有& “ „<>请将 html 转码之后再进行加密。

            Java 加密方式:

signInfo=sha256(merNo+gatewayNo+orderNo+orderCurrency+orderAmount+returnUr l+signkey);

            PHP 加密方式:

$signInfo=hash("sha256",$merNo.$gatewayNo.$orderNo.$orderCurrency.$orderAmou nt.$returnUrl.$signkey);

            C#加密方式:

public string GetSHA256(string strData)

//使用 SHA256 加密算法:

System.Security.Cryptography.SHA256 sha256 = new Sys-tem.Security.Cryptography.SHA256Managed();

byte[] sha256Bytes = System.Text.Encoding.Default.GetBytes(strData); byte[] cryString = sha256.ComputeHash(sha256Bytes); string sha256Str = string.Empty;
for (int i=0;i