Citcon简介
Citcon 创办于 2015 年,是一家移动支付及跨境商务解决方案提供商,主要为北美的商户提供线上及线下的移动支付服务。Citcon现有的合作伙伴位于纽约、拉斯维加斯、旧金山、洛杉矶、芝加哥、迈阿密、波士顿、温哥华等多个北美城市及区域。
在商户端,Citcon为多个的商家提供包括app、POS机以及系统集成等不同的支付及营销产品,覆盖奢侈品、机场零售、旅游、电商、餐饮等各行业头部企业客户,如 DFS 集团、DFA、凯撒娱乐、美高梅集团、西蒙购物,以及餐饮连锁小肥羊、海底捞等品牌,预计 2019 年服务的全球商家客户数量预计达 5 万家。
Citcon 表示,目前微信支付和支付宝在北美的支付业务有一半以上都由 Citcon 负责。同时,Citcon 也与银联展开合作,帮助银联云闪付在北美落地。Citcon 为第三方支付公司和境外商家之间提供支付平台,不仅提供技术方案,也提供清算服务。此外, Citcon也为中国领事馆提供驻外领馆支付方案,现已与纽约、旧金山、洛杉矶、芝加哥、休斯顿、华盛顿等领馆建立合作。
插件概述
CPay 插件封装了 Citcon 支付的移动端 SDK。通过此插件可集成微信、支付宝支付到 App 内。
CPay 使用步骤:
此插件必须在真机环境下使用
你还需要访问 微信开放平台、支付宝开放平台 申请微信、支付宝开发者账号,并创建 App 获取其 AppID 等相关信息。
使用此插件前需先配置 config.xml文件,方法如下:
名称:CPay
参数:urlScheme
配置示例:
<feature name="CPay">
<param name="urlScheme" value="YourWechatPayAppID" />
<param name="urlScheme" value="YourAlipayScheme" />
<param name="token" value="YourCitconToken" />
<param name="mode" value="YourCitconMode" />
</feature>
字段描述:
urlScheme:(必须配置)用于实现应用间跳转及数据交换,本应用可以启动支付宝、微信客户端,也可以从支付宝、微信客户端跳回本应用(此时需要应用打包或自定义loader才能测试本功能)。urlScheme 的 value 值分别在微信、支付宝开放平台获取。
token:联系 CITCON 与之签约获得 token。或者访问 文档中心 申请测试 token。亦可通过 key.xml
文件配置,详情参考下文。
mode:运行模式:DEV、UAT、PROD。亦可通过 key.xml
文件配置,详情参考下文。
在 iOS 端使用本插件之前还需做如下配置:
1,添加白名单,如下:
<preference name="querySchemes" value="weixin,wechat,alipay,safepay" />
关于白名单解释详情参考 YonBuilder移动开发 官方文档之-----配置可被检测的URL Scheme
2,配置ATS(App Transport Security):某些网络访问需要配置 plist 文件,使 APP 能够访问 http 协议。配置方法参考 iOS 修改 Info.plist 之配置 ATS(例3.1) 。配置示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
</dict>
</plist>
token 加密配置
为提高安全性 token 和 mode 可通过 key.xml
文件设置,若 config.xml
文件内已经配置,则以config.xml
为准。配置key.xml
文件配置完成放在 widget 下的 res 文件下即可,服务器应用打包时会将此文件加密。注意测试此功能需应用打包,否则报错。 CPay 插件原生代码会自动读取该文件中的 token 等参数,提高安全性。key.xml
文件格式如下:
```js
<?xml version="1.0" encoding="UTF-8" ?>
<security>
<item name="CPay_token" value="*********"/>
<item name="CPay_mode" value="***"/>
<item name="其它服务需加密的参数配置 " value="***"/>
.
.
.
</security>
```
配置运行环境
setEnvironment({params})
token:
key.xml
或 config.xml
文件读取,优先读取 key.xml
。mode:
key.xml
或 config.xml
文件读取,优先读取 key.xml
。var CPay = api.require('CPay');
CPay.setEnvironment({
mode: 'DEV',
token: '123*******'
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
支付
requestOrder({params}, callback(ret))
referenceId:
currency:
vendor:
amount:
subject:
body:
ipnUrl:
callbackUrl:
transactionId:
allowDuplicate:
ret:
{
eventType:'', //字符串类型;事件类型:cancel、success
result: { //JSON对象;仅当 eventType为 success是有值
message:'', //字符串类型;消息
result:'', //字符串类型;结果
order:{ //JSON对象;订单信息
referenceId:'', //字符串类型;
amount:'', //字符串类型;
currency:'', //字符串类型;
vendor:'', //字符串类型;
subject:'', //字符串类型;
body:'', //字符串类型;
ipnUrl:'', //字符串类型;
scheme:'', //字符串类型;
callbackUrl:'', //字符串类型;
transactionId:'' //字符串类型;
}
}
}
var CPay = api.require('CPay');
CPay.requestOrder({
referenceId: '12345678901234',
currency: 'USD',
vendor:'wechatpay',
subject:'A字体恤',
body:'shake your body side to side',
ipnUrl:'https://www.apicloud.com',
callbackUrl:'https://www.apicloud.com',
transactionId:'212',
allowDuplicate:false
}, function(ret) {
api.alert({
title: '支付结果',
msg: JSON.stringify(ret),
buttons: ['确定']
});
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
checkOrder({params}, callback(ret)) Android 暂不支持该方法
referenceId:
currency:
vendor:
subject:
body:
ipnUrl:
callbackUrl:
transactionId:
allowDuplicate:
ret:
{
transactionId:'', //字符串类型;
referenceId:'', //字符串类型;
type:'', //字符串类型;
amount:'', //字符串类型;
currency:'', //字符串类型;
time:'', //字符串类型;
status:'', //字符串类型;
refund_status:'', //字符串类型;
refunded_amount:'', //字符串类型;
note:'' //字符串类型;
}
var CPay = api.require('CPay');
CPay.checkOrder({
currency: 'USD'
}, function(ret) {
api.alert({
title: '订单详情',
msg: JSON.stringify(ret),
buttons: ['确定']
});
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
支付完成事件监听
paymentFinishedLisetner(callback(ret))
ret:
{
transactionId:'', //字符串类型;(android中没有该参数)
referenceId:'', //字符串类型;
type:'', //字符串类型;
amount:'', //字符串类型;
currency:'', //字符串类型;
time:'', //字符串类型;
status:'', //字符串类型;
refund_status:'', //字符串类型;
refunded_amount:'', //字符串类型;
note:'' //字符串类型;
}
var CPay = api.require('CPay');
CPay.paymentFinishedLisetner(function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本